сюрпризы, которые может нам преподнести команда echo (читается как эхо);
способы «расцвечивания» результатов работы наших сценариев;
возможности управления перемещением курсора, очисткой экрана, раздвижкой и сдвижкой строк;
использование и назначение программы tput и баз данных termcap и terminfo.
Коварное эхо
Однако, в 70-е годы прошлого века не все было так одназначно. Существовал один филосовский вопрос. Суть его была такова: что должна делать команда echo, если ей не передали аргументов, в частности, следует ли ей выдавать пустую строку или вообще ничего не предпринимать? По этому поводу велись большие дебаты. Такие, что вдохновили Дуга МакИлроя /Doug McIlroy/ сочинить притчу, которая приведена ниже.
UNIX и эхо.
Жила-была в стране Нью-Джерси, прекрасная девушка UNIX, к которой приезжали издалека, чтобы полюбоваться ею. Ослепленные чистотой UNIX, все искали ее руки и сердца: одни ≈ за изящество, другие ≈ за изысканную вежливость, третьи ≈ за проворность при выполнении самых изнурительных заданий. Была она от рождения столь великодушна и услужлива, что все женихи остались довольны ею, а ее многочисленное потомство распространилось во все концы земли.
Сама природа покровительствовала UNIX и вторила ей более охотно, чем кому-либо из смертных. Простые люди поражались ее эхом, таким оно было точным и кристально чистым. Они не могли поверить, что ей отвечают те же леса и скалы, которые так искажают их собственные голоса. Когда один нетерпеливый пастушок попросил UNIX: «Пусть эхо ответит ничего», и она послушно открыла рот, эхо промолчало. «Зачем ты открываешь рот? ≈ спросил пастушок. ≈ Отныне никогда не открывай его, если эхо должно ответить ничего!». ≈ и UNIX подчинилась.
«Но я хочу совершенного исполнения, даже если эхо отвечает ничего, ≈ потребовал другой, обидчивый, юноша, ≈ а никакого совершенного эха не получится при закрытом рте». Не желая обидеть никого из них, UNIX согласилась говорить разные «ничего» для нетерпеливого и обидчивого юношей. Она называла «ничего» для обидчивого как ‘\n’. Однако теперь, когда она говорила ‘\n’, на самом деле она не произносила ничего, поэтому ей приходилось открывать рот дважды: один раз, чтобы сказать ‘\n’, и второй раз, чтобы не сказать ничего. Это не понравилось обидчивому юноше, который тотчас сказал: «Для меня ‘\n’ звучит, как настоящее «ничего», но когда ты открываешь рот второй раз, то все портишь. Возьми второе «ничего» назад». Услужливая UNIX согласилась отказаться от некоторых эхо и обозначила это как ‘\с’. С тех пор обидчивый юноша мог услышать совершенное эхо «ничего», если он задавал ‘\n’ и ‘\с’ вместе, но говорят, что он так и не услышал его, поскольку умер от излишеств в обозначениях. [1]
Хотя все настоящие реализации этой команды выдают пустую строку, это еще не значит, что проблемы закончились. Давайте их рассмотрим. Рекомендую все, о чем я буду рассказывать, проверить на практике, сидя за консолью. Так будет легче разобраться.
Уже в 7-ой редакции UNIX echo распознавала флаг -n, который подавлял вывод завершающего символа перевода строки: $ echo -n Seven Edition Seven Edition$
В System V, где команда echo умеет интерпретировать упраляющие последовательности вида \Х, для подавления вывода завершающего символа перевода строки используют обозначение \с. Поэтому вызвав echo с аргументом -n вы можете получить не совсем то, что ожидали: $ echo -n System V -n System V $
В Linux же, echo не желает обрабатывать последовательности вида \Х: $ echo Linux\\с Linux \с $ до тех пор, пока вы не зададите ей флаг -e: $ echo -e Linux\\с Linux$
Можно воспользоваться и флагом -n, echo из Linux его понимает.
Добавляет путаницы и то, что почти всегда shell имеет встроенную команду echo, поведение которой может отличаться от внешней /bin/echo. Кроме того, в системе может оказаться не одна echo, а парочка. В таком случае, второе echo обычно находится где-нибудь в районе /usr/ucb/. Из-за таких различий в реализации echo возникают определенные трудности при переносе сценариев из системы в систему. Есть ли способ их избежать? Конечно, но это уже другая история.
Да будет цвет!
Перед тем как перейти к детальному рассмотрению esc-последовательностей, давайте вначале научимся вводить символ esc с клавиатуры (если вы умеете это делать, то можете переходить к выполению примеров из следующего абзаца). Чтобы ввести с клавиатуры код любой «непечатной», т. е. управляющей клавиши (функциональной, стрелки и т. п.), необходимо нажать Ctrl+V, а затем интересующую вас «кнопку». Этот прием будет работать не только в командной строке, но и в текстовом редакторе vi.
Проверим на практике. Выполним команду echo «Ctrl+V,Esc[30;40m»;clear (на экране символ esc будет показан как ^[): $ echo «^[[30;40m»;clear
Если вы все сделали правильно, то приобретайте прибор ночного видения :)! Пожалуй я не ошибусь, предположив, что у вас возникли вопросы: ≈ А что это за числа? К чему они ведут? «А вдруг они не курят, а вдруг они не пьют?» [2] ≈ Числа 30 и 40 это аргументы команды esc[nm. При необходимости указать несколько аргументов, их перечисляют через точку с запятой: esc[n1;n2;. m. В зависимости от значения n результаты будут следующими: Теперича, имея в своем распоряжении такую табличку, можете приступать к получению «синих экранов», «красных квадратов» и прочей творческой работе. В которой желаю вам всяческих успехов (тем кто предпочитает другие слова ≈ удачи).
Что еще могут esc-последовательности?
Проведем испытания. Начнем с подготовки рабочего пространства. Выполните команду clear (или просто нажмите Ctrl+L). Затем ≈ более хитрую (напомню, что символы ^[ появляются в результате нажатия клавиш Ctrl+L,Esc):
И небольшое замечание относительно ДОСа. Помните такую ОС? Так вот, если к ней прикрутить стандартный драйвер ANSI.SYS, то все вышеперечисленные esc-последовательности будут работать и там. 1. Брайан Керниган, Роб Пайк UNIX ≈ универсальная среда программирования М.: Финансы и статистика, 1992
2. Слова из песни, которые как известно не выбросишь.
Источник
Команда Echo в Linux с примерами
Команда echo — одна из самых основных и часто используемых команд в Linux. Аргументы, переданные в echo выводятся на стандартный вывод.
echo обычно используется в сценариях оболочки для отображения сообщения или вывода результатов других команд.
эхо-команда
echo — это оболочка, встроенная в Bash и большинство других популярных оболочек, таких как Zsh и Ksh. Его поведение немного отличается от оболочки к оболочке.
Существует также отдельная утилита /usr/bin/echo , но обычно встроенная версия оболочки имеет приоритет. Мы рассмотрим встроенную в Bash версию echo .
Синтаксис команды echo следующий:
Когда используется опция -n , завершающий символ новой строки подавляется.
Если задана опция -e будут интерпретироваться следующие символы, экранированные обратной косой чертой:
\ — отображает обратную косую черту.
a — Предупреждение (BEL)
b — отображает символ возврата.
c — подавить любой дальнейший вывод
e — отображает escape-символ.
f — отображает символ перевода страницы.
n — отображает новую строку.
r — отображает возврат каретки.
t — отображает горизонтальную вкладку.
v — отображает вертикальную вкладку.
Параметр -E отключает интерпретацию escape-символов. Это значение по умолчанию.
При использовании команды echo следует учитывать несколько моментов.
Оболочка заменит все переменные, сопоставление подстановочных знаков и специальные символы перед передачей аргументов команде echo .
Хотя это и не обязательно, рекомендуется заключать аргументы, передаваемые в echo в двойные или одинарные кавычки.
При использовании одинарных кавычек » буквальное значение каждого символа, заключенного в кавычки, будет сохранено. Переменные и команды расширяться не будут.
echo Примеры
В следующих примерах показано, как использовать команду echo:
Чтобы напечатать одинарную кавычку, заключите ее в двойные кавычки или используйте кавычки ANSI-C .
Вывести сообщение, содержащее специальные символы.
Используйте параметр -e чтобы включить интерпретацию escape-символов.
Символы соответствия шаблону.
Команда echo может использоваться с символами сопоставления с образцом, такими как подстановочные знаки. Например, приведенная ниже команда вернет имена всех файлов .php в текущем каталоге.
Перенаправить в файл
Вместо отображения вывода на экране вы можете перенаправить его в файл с помощью операторов > , >> .
Если файл file.txt не существует, команда создаст его. При использовании > файл будет перезаписан, а символ >> добавит вывод в файл .
Используйте команду cat для просмотра содержимого файла:
Отображение переменных
echo также может отображать переменные. В следующем примере мы напечатаем имя текущего вошедшего в систему пользователя:
$USER — это переменная оболочки, в которой хранится ваше имя пользователя.
Отображение вывода команды
Используйте выражение $(command) чтобы включить вывод команды в аргумент echo . Следующая команда отобразит текущую дату :
Отображение в цвете
Используйте escape-последовательности ANSI, чтобы изменить цвета переднего плана и фона или установить свойства текста, такие как подчеркивание и полужирный шрифт.
Выводы
К настоящему времени вы должны хорошо понимать, как работает команда echo .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Команда Echo в Linux с примерами
Echo Command in Linux with Examples
echo обычно используется в сценариях оболочки для отображения сообщения или вывода результатов других команд.
Команда echo является одной из самых основных и часто используемых команд в Linux. Переданные аргументы echo выводятся на стандартный вывод.
echo это оболочка, встроенная в Bash и большинство других популярных оболочек, таких как Zsh и Ksh. Его поведение немного отличается от оболочки к оболочке.
Существует также отдельная /usr/bin/echo утилита, но обычно встроенная версия оболочки имеет преимущество. Мы рассмотрим встроенную версию Bash echo .
Синтаксис echo команды следующий:
При использовании этой -n опции завершающий символ новой строки подавляется.
Если -e опция указана, будут интерпретированы следующие символы с обратной косой чертой:
\\ — Отображает символ обратной косой черты.
\a — Оповещение (BEL)
\b — Отображает символ возврата на одну позицию.
\c — Подавить дальнейший вывод
\e — Отображает escape-символ.
\f — Отображает символ подачи формы.
\n — Отображает новую строку.
\r — Отображает возврат каретки.
\t — Отображает горизонтальную вкладку.
\v — Отображает вертикальную вкладку.
-E Опция отключает интерпретацию символов побега. Это по умолчанию.
Есть несколько моментов, которые следует учитывать при использовании echo команды.
Оболочка заменит все переменные, подстановочные знаки и специальные символы перед передачей аргументов в echo команду.
Хотя это и не обязательно, но хорошая практика программирования заключать аргументы, передаваемые echo в двойные или одинарные кавычки.
При использовании одинарных кавычек будет » сохранено буквальное значение каждого символа, заключенного в кавычки. Переменные и команды не будут расширены.
Примеры
В следующих примерах показано, как использовать команду echo:
Чтобы напечатать двойные кавычки, заключите их в одинарные кавычки или экранируйте их символом обратной косой черты.
Показать строку текста, содержащую одну кавычку.
Чтобы напечатать одинарную кавычку, заключите ее в двойные кавычки или используйте квотирование ANSI-C .
Покажите сообщение, содержащее специальные символы.
Используйте -e опцию, чтобы включить интерпретацию escape-символов.
Шаблон соответствия символов.
echo Команда может быть использована с соответствующей моделью символами, такие как подстановочные знаки. Например, приведенная ниже команда вернет имена всех .php файлов в текущем каталоге.
Перенаправить в файл
Вместо отображения вывода на экране, вы можете перенаправить его в файл , используя > , >> оператор.
Если file.txt не существует, команда создаст его. При использовании > файл будет перезаписан, тогда как файл >> будет добавлен в файл.
Используйте cat команду для просмотра содержимого файла:
Отображение переменных
echo также может отображать переменные. В следующем примере мы распечатаем имя зарегистрированного пользователя:
$USER является переменной оболочкой , которая содержит имя пользователя.
Отображение вывода команды
Используйте $(command) выражение, чтобы включить вывод команды в echo аргумент. Следующая команда отобразит текущую дату :
Отображение в цвете
Используйте escape-последовательности ANSI, чтобы изменить цвета переднего плана и фона или установить свойства текста, такие как подчеркивание и полужирный.
Вывод
К настоящему времени вы должны хорошо понимать, как echo работает команда.