
Команда 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?
Это репертуар эха
Простая команда, но незаменимая. Если бы его не было, пришлось бы его изобрести.
В конце концов, махинации Зевса пошли на пользу.