Я нашел echo -n $'\e]0;Hello World\a'
в сценарии оболочки, который является частью базы кода, над которой я работаю. Что именно это делает? Это, конечно, не отражает ничего видимого.
Обратите внимание, я использую Ubuntu 12.04.5.
В XTerm (или во всем, что его эмулирует), он устанавливает заголовок окна в "Hello World". \e]
- управляющий код ASNI для "команды операционной системы" (OSC), который, по сути, означает, что операционная система должна определить, что она означает; в XTerm <OSC>0;text<bel>
используется для установки заголовка окна.
См. Википедию и список последовательности XTerm Эдварда Моя (найдите раздел "Элементы управления операционной системой").
-n
предотвращает повторение новой строки в конце.$'
- это команда Bash, которая заменяет символы обратной косой черты в строке в соответствии со стандартом ANSI C. Больше информации\e
= ESCape.\e]0;
команда для установки заголовка окна, в данном случае для установки "Hello World"\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.