echo
echo
— это оболочка, встроенная в Bash и большинство других популярных оболочек, таких как Zsh и Ksh. Его поведение немного отличается от оболочки к оболочке.
Существует также отдельная утилита /usr/bin/echo
, но обычно встроенная версия оболочки имеет приоритет. Мы рассмотрим встроенную в Bash версию echo
.
Синтаксис команды echo
следующий:
echo [-neE] [ARGUMENTS]
Когда используется опция -n
, завершающий символ новой строки подавляется.
Если задана опция -e
будут интерпретироваться следующие символы, экранированные обратной косой чертой:
\
- отображает обратную косую чертуa
- Предупреждение (BELb
- отображает символ возвратаc
- подавить любой дальнейший выводe
- отображает escape-символf
- отображает символ перевода страницыn
- отображает новую строкуr
- отображает возврат кареткиt
- отображает горизонтальную вкладкуv
- отображает вертикальную вкладку
Параметр -E
отключает интерпретацию escape-символов. Это значение по умолчанию.
При использовании команды echo
следует учитывать несколько моментов.
Оболочка заменит все переменные, сопоставление подстановочных знаков и специальные символы перед передачей аргументов команде echo
.
Хотя это и не обязательно, рекомендуется заключать аргументы, передаваемые в echo
в двойные или одинарные кавычки.
При использовании одинарных кавычек ''
буквальное значение каждого символа, заключенного в кавычки, будет сохранено. Переменные и команды расширяться не будут.
Примеры
В следующих примерах показано, как использовать команду echo:
Вывести строку текста на стандартный вывод.
echo Hello, World!
Hello, World!
Отобразите строку текста, содержащую двойные кавычки
Чтобы напечатать двойную кавычку, заключите ее в одинарные кавычки или экранируйте символ обратной косой черты.
echo 'Hello "Linuxize"'
echo "Hello "Linuxize""
Hello "Linuxize"
Отобразите строку текста, содержащую одинарную кавычку
Чтобы напечатать одинарную кавычку, заключите ее в двойные кавычки или используйте кавычки ANSI-C .
echo \"I'm a Linux user\"
echo $'I'm a Linux user.'
I'm a Linux user.
Вывести сообщение, содержащее специальные символы
Используйте параметр -e
чтобы включить интерпретацию escape-символов.
echo -e "You know nothing, Jon Snow.nt- Ygritte"
You know nothing, Jon Snow. - Ygritte
Символы соответствия шаблону
Команда echo
может использоваться с символами сопоставления с образцом, такими как подстановочные знаки. Например, приведенная ниже команда вернет имена всех файлов .php
в текущем каталоге.
echo The PHP files are: \*.php
The PHP files are: index.php contact.php functions.php
Перенаправить в файл
Вместо отображения вывода на экране вы можете перенаправить его в файл с помощью операторов >, >> .
echo -e 'The only true wisdom is in knowing you know nothing. Socrates' >> /tmp/file.txt
Если файл file.txt не существует, команда создаст его. При использовании > файл будет перезаписан, а символ >> добавит вывод в файл .
Используйте команду cat
для просмотра содержимого файла:
cat /tmp/file.txt
The only true wisdom is in knowing you know nothing. Socrates
Отображение переменных
echo
также может отображать переменные. В следующем примере мы напечатаем имя текущего вошедшего в систему пользователя:
echo $USER
`$USER` — это <a href="/how-to-set-and-list-environment-variables-in-linux/">переменная оболочки, в</a> которой хранится ваше имя пользователя.
**Отображение вывода команды**
Используйте выражение `$(command)` чтобы включить вывод команды в аргумент `echo` . Следующая команда отобразит <a href="/linux-date-command/">текущую дату</a> :
echo "The date is: $(date +%D)"
```The date is: 04/17/19```
**Отображение в цвете**
Используйте <a target="_blank" rel="nofollow" href="https://routerus.com/goto/https://en.wikipedia.org/wiki/ANSI_escape_code#Colors" rel="noopener" target="_blank">escape-последовательности ANSI,</a> чтобы изменить цвета переднего плана и фона или установить свойства текста, такие как подчеркивание и полужирный шрифт.
echo -e "33[1;37mWHITE"
echo -e "33[0;30mBLACK"
echo -e "33[0;34mBLUE"
echo -e "33[0;32mGREEN"
echo -e "33[0;36mCYAN"
echo -e "33[0;31mRED"
echo -e "33[0;35mPURPLE"
echo -e "33[0;33mYELLOW"
echo -e "33[1;30mGRAY" ```