В предыдущей статье была приведена документация по команде echo
в Debian 9. Этого было бы достаточно, если бы... Если бы все говорили на языке США, и если бы в документации были примеры. Но, хотя знание иностранных языков является плюсом к карме, а примеры всегда можно опробовать, имея доступ к терминалу сервера... это не всегда выполнимые условия мгновенного исполнения. Поэтому ниже рассмотрим подробно синтаксис и опции команды echo
в Bash на таком родном и иногда понятном русском языке с примерами. =)
Синтаксис команды echo
в Bash
Итак, начнём с синтаксиса то, как он описан в документации:
SYNOPSIS
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
Длинные опции команды echo
в Bash
Начну с конца. У меня под Debian 9 опции в формате echo LONG-OPTION
не проходят. Длинных опций в документации всего две:
--help display this help and exit
--version
output version information and exit
Ну и команда echo их воспринимает как обычные строки с текстом:
root@server:~# echo --help
--help
root@server:~# echo --version
--version
Не знаю, с чем это связано, но и не так это важно. Важнее короткие опции (SHORT-OPTION
, как они написаны в документации).
Короткие опции (SHORT-OPTION) команды echo
в Bash
Коротких опций всего три:
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
Рассмотрим каждую из них подробнее.
Опция -E
команды echo
в Bash
Рассмотрим снова с конца. Опция -E
команды echo
в Bash во-первых установлена по-умолчанию, то есть используется всегда, если не используется опция -e
. И это важно, так как при попытке
root@server:~# echo -E "1\n2\n3\n4\n"
1\n2\n3\n4\n
равносильно:
root@server:~# echo "1\n2\n3\n4\n"
1\n2\n3\n4\n
И как видно на примерах, ничего не происходит. То, что записано в строке, предназначенной для вывода, то и выводится.
Опция -e
команды echo
в Bash
Опция -e
команды echo
в Bash служит для включения форматирования вывода с помощью коротких опций. То есть для включения SHORT-OPTION. Например, \n
служит для перевода курсора на новую строку. Подключим к выводу опцию -e
и убедимся, что опция в строке начала обрабатываться для форматирования вывода нашей строки:
root@amorale:~# echo -e "1\n2\n3\n4"
1
2
3
4
После этого становится смыл послания из документации:
If -e is in effect, the following sequences are recognized:
Перевести на русский это заклятие можно так:
Если присутствует опция -e, то распознаются следующие последовательности:
Опция -n
команды echo
в Bash
Опция -n
команды echo
в Bash служит для отключения переноса строки в конце вывода. Фишка этой опции в том, что после вывода строки командой echo, курсор перемещается в начало новой строки:
root@server:~# echo "Вот строка!"
Вот строка!
root@server:~#
Может случиться так, что этого делать не нужно, а нужно оставить курсор в конце выведенной строки. Для этого опция -n
и служит:
root@server:~# echo -n "Курсор, останься тут! "
Курсор, останься тут! root@server:~#
Как-то так. Как это можно использовать, пока не ясно, но команда echo
— не единственная, которая может что-то выводить и, вполне может статься, что перенос на новую строку не нужен. Тогда нужно будет вспомнить про опцию -n
.
Резюме
Таким образом, разобрались со синтаксисом и опциями команды echo
в Bash. Дальше будет ещё интереснее: Форматирование вывода команды echo
с помощью специальных последовательностей символов.
Следует понимать, что включенная опция работает до конца всей строки команды echo
и её нельзя переключить:
root@server:~# echo -E "1\n2\n3\n4" -e "1\n2\n3\n4"
1\n2\n3\n4 -e 1\n2\n3\n4
root@server:~# echo -e "1\n2\n3\n4" -E "1\n2\n3\n4"
1
2
3
4 -E 1
2
3
4
Вот так всё странно. =)
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)