Как заставить команду watch интерпретировать последовательности vt100?
Рассмотрим этот простой пример (который отображается красным):
echo -e "\033[31mHello World\033[0m"
Он отображается на терминале правильно красным цветом. Теперь рассмотрим:
watch echo -e "\033[31mHello World\033[0m"
Он не отображает цвет.
Примечание. Я знаю, что легко написать цикл, который имитирует основное поведение путем очистки и повторного использования. Тем не менее, чистая операция заставляет экран мигать, что не происходит при просмотре
EDIT: Первоначально в этом вопросе указывались escape-последовательности, а не последовательности vt100, но на самом деле это не то, что мне нужно, и было решено с одинарными кавычками.
Ответы
Ответ 1
Edit:
Более свежие версии цвета поддержки watch
. Вам нужно будет использовать дополнительный уровень цитирования для сохранения котировок и экранов в конкретной ситуации примера в вопросе:
watch 'echo -e "\033[31mHello World\033[0m"'
От man watch
:
-c, --color
Interpret ANSI color sequences.
Ранее:
От man watch
:
Непечатаемые символы удаляются из вывода программы. Используйте "cat -v" как часть конвейера команд, если вы хотите их увидеть.
Но они не интерпретируются, поэтому я не думаю об этом.
Ответ 2
От man watch
от watch
0.3.0 от Ubuntu 11.10:
По умолчанию часы обычно не передают escape-символы, однако, если вы используете опцию -c или -color, тогда просмотр будет интерпретировать последовательности цветов ANSI для переднего плана.
Кажется, что это не работает с вашей литеральной строкой на моем терминале, но они работают:
watch --color 'tput setaf 1; echo foo'
watch --color ls -l --color
Ответ 3
Вы можете попробовать одинарную цитату из вашей команды:
watch 'echo -e "\tHello World"'
На моей машине это оставляет меня с -e
в качестве первого символа, а правильно вложенное hello world.
Кажется, что -e
является значением по умолчанию для моей версии эха. Тем не менее, это прогресс в правильной вкладке hello world
Что происходит, это двойное сомнение:
какие часы видят
echo -e "\033[31mHello World\033[0m"
то, что называется оболочкой по часам:
echo -e \033[31mHello World\033[0m
И тогда обратная косая черта вступает в игру, даже когда она цитируется, и она становится кошмаром котировки.