Как эти специальные символы работают в Perl? - PullRequest
2 голосов
/ 29 июля 2011
print "\e[4m", $prompt, "\e[24m", "\e[1m";

Кажется, это не работает в Bash:

[root@dev-test ~]$ echo "\e[4mhello world\e[24m\e[1m"
\e[4mhello world\e[24m\e[1m

1 Ответ

7 голосов
/ 29 июля 2011

"\ e" означает ESC, который используется для escape-последовательностей VT100 и аналогичных. Perl понимает escape-последовательность "\ e" в строках и интерпретирует ее как символ ESC (его также можно записать как "\ 33" или "\ x1b").

Чтобы использовать ESC с echo , укажите параметр -e, который позволяет обрабатывать эти экранированные символы:

echo -e "\e[4mhello world\e[24m\e[1m"

Преобразование из двух символов "\ e" в один символ ESC (со значением 0x1B) выполняется самой echo-e) - оболочка не обрабатывает экранирование, которое появляется в кавычках , Ссылка для echo выше также содержит пример такого использования.

Удачного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...