Как использовать команду Echo в Linux

Команда echoидеально подходит для записи форматированного текста в окно терминала. И это не обязательно должен быть статический текст. Он может включать переменные оболочки, имена файлов и каталоги. Вы также можете перенаправить эхо для создания текстовых файлов и файлов журнала. Следуйте этому простому руководству, чтобы узнать, как это сделать.

Эхо повторяет то, что вы говорите, повторять

Зевс любил покидать гору Олимп, чтобы общаться с красивыми нимфами. Во время одной поездки он сказал горной нимфе по имени Эхо подстеречь его жену Геру, если она последует за ним. Гера действительно пришла искать Зевса, и Эхо делала все, что могла, чтобы Гера продолжала разговаривать. В конце концов, Гера вышла из себя и прокляла бедную Эхо, чтобы она повторяла только последние слова, сказанные кем-то другим. Что Гера сделала с Зевсом, когда догнала его, остается только гадать.

А этого echoв жизни довольно много . Он повторяет то, что было сказано повторить. Это простая, но жизненно важная функция. Без echoэтого мы, например, не смогли бы получить видимый вывод из сценариев оболочки.

Хотя он не перегружен множеством наворотов, есть хороший шанс, что у echoнего есть некоторые возможности, о которых вы не знали или о которых забыли.

эхо? эхо!

Большинство систем Linux предоставляют две версии echo. В оболочку Bash echoвстроена собственная оболочка , а также есть двоичная исполняемая версия echo.

Мы можем увидеть две разные версии, используя следующие команды:

введите эхо
где эхо

Команда typeсообщает нам, является ли команда, которую мы передаем ей в качестве аргумента, встроенной оболочкой, исполняемым двоичным файлом, псевдонимом или функцией. Он сообщает нам, что echoэто встроенная оболочка.

Как только он нашел ответ, typeперестает искать дальнейшие совпадения. Таким образом, он не сообщает нам, есть ли в системе другие команды с таким же именем. Но он говорит нам, какой из них находит первым. И он будет использоваться по умолчанию, когда мы введем эту команду.

Команда whereisищет двоичный исполняемый файл, исходный код и страницу руководства для команды, которую мы передаем ей в качестве параметра командной строки. Он не ищет встроенных команд оболочки, потому что у них нет отдельного двоичного исполняемого файла. Они являются неотъемлемой частью исполняемого файла Bash.

Команда whereisсообщает, что echoэто двоичный исполняемый файл, расположенный в /binкаталоге.

Чтобы использовать эту версию, echoвам нужно будет явно вызвать ее, указав путь к исполняемому файлу в командной строке:

/ bin / echo --version

Встроенная оболочка не знает --versionаргумент командной строки, она просто повторяет его в окне терминала:

echo --version

Все показанные здесь примеры используют версию по умолчанию echoв оболочке Bash.

Запись текста в терминал

Чтобы записать простую строку текста в окно терминала, введите echoи строку, которую вы хотите отобразить:

эхо Меня зовут Дэйв.

Текст повторяется за нас. Но по мере того, как вы экспериментируете, вы скоро обнаружите, что все может стать немного сложнее. Взгляните на этот пример:

эхо Меня зовут Дэйв, и я компьютерщик.

Окно терминала отображает   > знак и сидит там, ожидая. Ctrl + C вернет вас в командную строку. Что там произошло?

Одиночная кавычка или апостроф в слове «я» сбивает с толку echo. Он интерпретировал эту одинарную кавычку как начало цитируемого раздела текста. Поскольку он не обнаружил закрывающую одинарную кавычку,  echoожидал дополнительных данных. Он ожидал, что дальнейшие данные будут включать недостающую одиночную кавычку, которую он ждал.

Чтобы включить одинарную кавычку в строку, самое простое решение - заключить всю строку в двойные кавычки:

echo "Меня зовут Дэйв, я компьютерщик".

Общий хороший совет - заключить текст в двойные кавычки. В сценариях он четко определяет параметры, которые вы передаете echo. Это значительно упрощает чтение и отладку скриптов.

Что, если вы хотите включить в текстовую строку символ двойной кавычки? Это просто, просто поставьте обратную косую черту \перед двойными кавычками (без пробелов между ними).

echo "Меня зовут Дэйв и я \" компьютерщик \ "."

Это означает, что слово «компьютерщик» заключено в двойные кавычки. Мы будем видеть больше этих обратной косой маскирование символов в ближайшее время .

Использование переменных с эхом

До сих пор мы писали предопределенный текст в окно терминала. Мы можем использовать переменные с, echoчтобы получить более динамичный вывод, в который для нас оболочка вставляет значения. Мы можем определить простую переменную с помощью этой команды:

my_name = "Дэйв"

Была создана переменная с именем my_name. Ему присвоено значение текста «Дэйв». Мы можем использовать имя переменной в строках, которые мы передаем echo , и значение переменной будет записано в окно терминала. Вы должны поставить знак доллара $перед именем переменной, чтобы понять, echoчто это переменная.

Есть нюанс. Если вы заключили строку в одинарные кавычки echo , все будет восприниматься буквально. Чтобы отображалось значение переменной , а не имя переменной, используйте двойные кавычки.

echo 'Меня зовут $ my_name'
echo "Меня зовут $ my_name"

Уместно повторить:

  • Использование одинарных кавычек приводит к тому, что текст выводится в окно терминала буквально .
  • Использование  двойных кавычек приводит к интерпретации переменной - также называемой раскрытием переменной - и значение записывается в окно терминала.

СВЯЗАННЫЕ: Как работать с переменными в Bash

Использование команд с эхом

Мы можем использовать команду echoи включить ее вывод в строку, которая записывается в окно терминала. Мы должны использовать знак доллара, $как если бы команда была переменной, и заключить всю команду в круглые скобки.

Мы собираемся использовать команду date. Один совет - использовать команду отдельно, прежде чем вы начнете использовать ее с echo. Таким образом, если что-то не так с синтаксисом вашей команды, вы определите это и исправите, прежде чем включать в echoкоманду. Затем, если echoкоманда не выполняет то, что вы ожидаете, вы будете знать, что проблема должна быть в echoсинтаксисе, потому что вы уже доказали синтаксис команды.

Итак, попробуйте это в окне терминала:

дата +% D

И, убедившись, что получаем то, что ожидаем от команды date, интегрируем ее в echoкоманду:

echo "Сегодняшняя дата: $ (date +% D)"

Обратите внимание, что команда находится внутри круглых скобок, а знак доллара $ стоит непосредственно перед первой скобкой.

Форматирование текста с эхом

Параметр -e(включить экранирование обратной косой черты) позволяет нам использовать некоторые символы, экранированные обратной косой чертой, для изменения макета текста. Мы можем использовать следующие символы с обратной косой чертой:

  • \ a : Предупреждение (исторически известное как BEL). Это генерирует звуковой сигнал предупреждения по умолчанию.
  • \ b : Записывает символ возврата.
  • \ c : Отказ от дальнейшего вывода.
  • \ e : Записывает escape-символ.
  • \ f : Записывает символ перевода страницы.
  • \ n : записывает новую строку.
  • \ r : записывает возврат каретки.
  • \ t : записывает горизонтальную табуляцию.
  • \ v : записывает вертикальную табуляцию.
  • \\ : Записывает символ обратной косой черты.

Давайте воспользуемся некоторыми из них и посмотрим, что они делают.

echo -e "Это длинная строка текста, \ n разделенная на три строки \ nс \ ttabs \ ton \ tthe \ tthird \ tline"

Текст разбивается на новую строку, где мы использовали \nсимволы, и вкладка вставляется там, где мы использовали \tсимволы.

echo -e "Здесь \ vare \ vvertical \ vtabs"

Как и \nсимволы новой строки, вертикальная табуляция \vперемещает текст в строку ниже. Но, в отличие от  \n символов новой строки, \vвертикальная табуляция не начинает новую строку с нулевого столбца. Он использует текущий столбец.

В \bсимволах Backspace переместить курсор назад на один символ. Если в терминал нужно записать еще текст, этот текст заменит предыдущий символ.

echo -e "123 \ b4"

«3» заменяется «4».

Символ \rвозврата каретки заставляет  echoвернуться в начало текущей строки и записать любой следующий текст из нулевого столбца.

echo -e "123 \ r456"

Символы «123» заменяются символами «456».

\aХарактер оповещения будет издавать слышимый «бип» . Он использует звуковой сигнал по умолчанию для вашей текущей темы.

echo -e "Подать звуковой сигнал \ a"

Параметр -n(без новой строки) не является последовательностью с обратной косой чертой, но он влияет на внешний вид макета текста, поэтому мы обсудим его здесь. Это предотвращает echoдобавление новой строки в конец текста. Командная строка появляется сразу после текста, который выводится в окно терминала.

echo -n "без последней строки новой строки"

Использование echo с файлами и каталогами

Можно использовать echoкак версию для бедняков ls. Когда вы используете echoэто, у вас мало вариантов . Если вам нужна какая-то верность или тонкий контроль, вам лучше использовать lsи его легион вариантов.

Эта команда выводит список всех файлов и каталогов в текущем каталоге:

эхо *

Эта команда выводит список всех файлов и каталогов в текущем каталоге, имя которых начинается с «D»:

эхо D *

Эта команда выводит список всех файлов «.desktop» в текущем каталоге:

эхо * .desktop

Да уж. Это не игра в echoсильные стороны России. Используйте ls.

Запись в файлы с помощью эха

Мы можем перенаправить вывод echoи либо создать текстовые файлы, либо записать в существующие текстовые файлы.

Если мы используем >оператор перенаправления, файл создается, если он не существует. Если файл существует, вывод из echoдобавляется в начало файла, перезаписывая любое предыдущее содержимое.

Если мы используем >>оператор перенаправления, файл создается, если он не существует. Вывод из echoдобавляется в конец файла и не перезаписывает существующее содержимое файла.

echo "Создание нового файла." > sample.txt
echo «Добавление в файл». >> sample.txt
cat sample.txt

По первой команде создается новый файл, в который вставляется текст. Вторая команда добавляет строку текста в конец файла. Команда catотображает содержимое файла в окне терминала.

И, конечно же, мы можем включать переменные, чтобы добавить полезную информацию в наш файл. Если файл является файлом журнала, мы можем захотеть добавить к нему отметку времени. Мы можем сделать это с помощью следующей команды.

Обратите внимание на одинарные кавычки вокруг параметров dateкоманды. Они предотвращают интерпретацию пробела между параметрами как конец списка параметров. Они обеспечивают  date правильную передачу параметров.

echo "Файл журнала запущен: $ (date + '% D% T')"> logfile.txt
cat logfile.txt

Наш файл журнала создан для нас и catпоказывает нам, что к нему были добавлены метка даты и времени.

СВЯЗАННЫЕ: Что такое stdin, stdout и stderr в Linux?

Это репертуар эха

Простая команда, но незаменимая. Если бы его не было, пришлось бы его изобрести.

В конце концов, махинации Зевса пошли на пользу.