Команда Echo в оболочке Bash: Откройте для себя многочисленные возможности

Как администратор, вы можете регулярно запускать команду echo в Bash при управлении системой Linux. Но может ли команда echo предложить что-то большее, чем просто печать текста?

В этом руководстве вы ближе познакомитесь с командой echo и узнаете некоторые из ее наиболее полезных практических примеров.

Готовы? Следите за обновлениями и пересмотрите свое представление о команде echo!

Предварительное условие

Это руководство включает практические демонстрации. Чтобы следовать за ними, вам потребуется только машина с Ubuntu. В этом руководстве используется Ubuntu 20.04, но также будут работать и другие дистрибутивы Linux.

Печать строк с помощью команды echo в оболочке Bash

Когда вы думаете о команде echo, первое, что приходит в голову, – это печать строковых значений в консоль. Да, команда echo возвращает строки непосредственно из команды или скрипта.

Но позже в этом руководстве вы увидите команду echo с другой стороны. А пока посмотрите, как эта команда выводит строки в консоль.

Синтаксис команды echo следующий, где:

  • string – текст для печати.
  • options – дополнительные аргументы, которые вы можете указать для изменения вывода.
echo string options

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

echo "Echo command bash"
Printing a string to the console

Подавление завершающих символов новой строки в строках

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

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

Выполните следующую команду, чтобы напечатать Прогресс: и 50%.

echo -n "Progress: " && echo "50%"

Ниже вы можете увидеть, как символы новой строки разделяют две строки.

echo command bash : newlines separate the two strings

Теперь выполните следующую команду, добавив опцию -n, чтобы напечатать строки Прогресс: и 50%.

echo -n "Progress: " && echo "50%"

Как видите ниже, обе строки теперь находятся в одной строке, так как вы использовали опцию -n для подавления символов новой строки.

Suppressing trailing newlines

Печать значений переменных

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

Выполните следующие команды, чтобы установить значение переменной number равным 10 и распечатать (echo) значение в консоли.

# Сохраняет значение 10 в переменной number
number=10
# Печатает текущее значение, сохраненное в переменной number
echo The number is $number
Printing the Value of a Variable

Интерпретация последовательностей экранирования

Последовательность экранирования – это серия символов, представляющих специальный символ, и вы можете использовать опцию -e для интерпретации последовательностей экранирования.

Например, escape-последовательность \t представляет символ табуляции. Если вы используете опцию -e и выводите \t в консоль, \t будет интерпретироваться как символ табуляции, а не выводиться буквально.

Некоторые из наиболее распространенных escape-последовательностей следующие:

Escape Sequence Function
\b backspace
\t tab
\n new line
\\ backslash
\$ dollar sign

Выполните следующую команду, чтобы вывести Hello\tWorld в консоль.

echo "Hello\tWorld"

Вы можете видеть, что команда echo вывела строку Hello\tWorld как есть.

Printing a string without an escape sequence

Теперь выполните следующую команду, чтобы вывести Hello\tWorld, добавив опцию -e для интерпретации \t как символа табуляции между ними.

echo -e "Hello\tWorld"

Обратите внимание на огромный разрыв между словами Hello и World.

Interpreting an escape sequence

Вставка строк в новую строку

Вывод длинной строки сразу делает ее сложной для чтения. К счастью, опция \n позволяет добавить символ новой строки посередине строки. Эта опция часто используется при выводе нескольких строк текста в консоль, что придает ясность самому тексту.

Выполните следующую команду, чтобы вывести строку Echo command bash\nAnother line, где опция \n разбивает строку на две строки.

echo -e "Echo command bash\nAnother line"

Ниже вы можете видеть, что опция \n переносит строку Another line на новую строку.

Inserting a string into a new line

Вставка вертикальных вкладок между строками

Вы видели, как escape-последовательность \t размещает горизонтальный символ табуляции между строками. А как насчет вертикальной табуляции? Опция \v позволяет разделять строки вертикальными вкладками, что идеально подходит для создания текстовых баннеров.

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

Запустите следующую команду, чтобы вывести текст “Echo command bash demo”, но с вертикальными вкладками (\v) между каждым словом.

echo -e "Echo \vcommand \vbash \vdemo
Inserting vertical tabs in between strings

Печать имен файлов на основе расширения

Если вы ищете способ найти файлы определенного типа, эта функция команды echo работает таким же образом. Команда echo поддерживает перечисление файлов в каталоге с определенным расширением с использованием символа подстановки (*).

1. Запустите следующую команду, чтобы вывести все файлы с расширением .txt в текущем каталоге.

echo *.txt
Printing all .txt files in the current directory

2. Затем запустите следующую команду, чтобы вывести все файлы с расширением .deb в текущем каталоге.

echo *.deb
Printing all .deb files in the current directory

3. Наконец, выполните следующую команду, чтобы вывести файлы с расширением .txt в каталоге ~/Downloads. Вы можете заменить ~/Downloads/ на фактический путь к вашему файлу.

echo ~/Downloads/*.txt

Как видно ниже, команда echo поддерживает указание пути к каталогу, где расположены ваши файлы.

Finding .txt files in the specific directory

Запись вывода в файл

Когда ваша команда возвращает огромный вывод, его трудно прочитать на консоли. Запись вывода в файл – отличная идея. Но как это сделать? Помимо вывода текстов на консоль, команда echo также поддерживает напрямую запись вывода в файл.

Выполните следующую команду, которая не предоставляет вывод, поскольку вывод записывается (>) в файл с именем echo-bash.txt вместо этого.

Обратите внимание, что если файл echo-bash.txt уже существует, он будет перезаписан новым содержимым.

echo "echo command bash" > echo-bash.txt

Теперь выполните следующую команду cat, чтобы просмотреть содержимое файла echo-bash.txt.

cat echo-bash.txt

Как видно ниже, вывод команды echo записывается в файл echo-bash.txt.

Verifying the output written to file

Добавление вывода к существующим файлам

Как уже упоминалось, оператор > перезаписывает существующий файл новым содержимым. Но что, если вы хотите добавить вывод к существующему файлу, а не перезаписывать его?

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

Выполните следующую команду, чтобы добавить (>>) новые тексты (добавление текста) к существующему файлу echo-bash.txt.

echo "Appending text" >> echo-bash.txt

Теперь выполните следующую команду cat, чтобы просмотреть содержимое файла echo-bash.txt.

cat echo-bash.txt

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

Appending output to an existing file

Заключение

Команда echo в оболочке bash – это простой, но мощный инструмент, который можно использовать множеством способов. И в этом руководстве вы узнали, как максимально использовать потенциал команды echo с помощью некоторых из ее самых популярных опций.

Вывод текста на консоль больше не ограничивается простым “выводом текста”. Вы узнали, как записывать вывод в файл, добавлять выводы и изменять внешний вид каждого выведенного текста.

Почему бы вам не выбрать несколько способов использования команды echo и не написать их в ваши скрипты? Посмотрите, какие креативные идеи вы можете придумать!

Source:
https://adamtheautomator.com/echo-command-in-bash/