Синтаксис и опции команды echo в Bash

В предыдущей статье была приведена документация по команде 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

Вот так всё странно. =)

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню