Я нашел echo -n $'\e]0;Hello World\a' в сценарии оболочки, который является частью базы кода, над которой я работаю. Что именно это делает? Это, конечно, не отражает ничего видимого.

Обратите внимание, я использую Ubuntu 12.04.5.

3 ответа3

3

В XTerm (или во всем, что его эмулирует), он устанавливает заголовок окна в "Hello World". \e] - управляющий код ASNI для "команды операционной системы" (OSC), который, по сути, означает, что операционная система должна определить, что она означает; в XTerm <OSC>0;text<bel> используется для установки заголовка окна.

См. Википедию и список последовательности XTerm Эдварда Моя (найдите раздел "Элементы управления операционной системой").

2

Больше информации о * nix Echo здесь

0

\e]0; не является допустимым кодом ANSI, чтобы получить "нормальное отображение", оно должно быть \e[0m . Как указано в тексте по ссылке Ƭᴇcʜιᴇ007, вы можете объединить несколько из них в одной последовательности:

$ echo -en "\e[0;31;7m TEST \e[0m"  
 TEST $  _

Этот TEST будет обратный красный
Обратите внимание, что -e требуется для анализа escape-последовательности. -n заставляет эхо не печатать (CR+)LF в конце.

Еще лучше использовать коды terminfo с помощью команды tput - man 5 terminfo техническая, но, вероятно, довольно полная. Почему тпут? Поскольку терминалы не всегда являются ANSI, terminfo пытается "исправить" это, предоставляя единый интерфейс для максимально возможного количества терминалов.

... поэтому echo "$(tput sgr0)" - это то же самое, что echo -e "\e[0m" - если у вас есть терминал ANSI.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .