Рассмотрите этот простой пример (который отображается в красном):
echo -e "\033[31mHello World\033[0m"
Это отображается на терминале правильно красного цвета. Теперь рассмотрите:
watch echo -e "\033[31mHello World\033[0m"
Это не отображает цвет.
Примечание: Я знаю, что легко записать цикл, который подражает основному поведению путем очистки и повторного выполнения. Однако четкая операция заставляет экран высвечиваться, которого не происходит под часами
Править: Первоначально этот вопрос указал escape-последовательности, а не последовательности vt100, но это не действительно, что я после и был решен с одинарными кавычками.
Редактировать:
Более поздние версии часов
поддерживают цвет. Вам нужно будет использовать дополнительный уровень цитирования для сохранения кавычек и экранирования в конкретной ситуации примера в вопросе:
watch 'echo -e "\033[31mHello World\033[0m"'
From man watch
:
-c, --color { {1}} Интерпретация цветовых последовательностей ANSI.
Ранее:
Из man watch
:
Непечатаемые символы удаляются из вывода программы. Используйте "cat -v" как часть конвейера команд, если хотите их увидеть.
Но они не интерпретируются, так что я не думаю, что есть какой-то способ.
Вы можете попробовать заключить свою команду в одинарные кавычки:
watch 'echo -e "\tHello World"'
На моей машине это оставляет меня с -e
в качестве первого символа, и hello world с правильными вкладками.
Кажется, -e
является значением по умолчанию для моей версии echo. Тем не менее, это прогресс в направлении hello world
с правильными вкладками
Происходит двойное исключение кавычек:
то, что видят часы
echo -e "\033[31mHello World\033[0m"
, что оболочка, вызываемая часами, видит:
echo -e \033[31mHello World\033[0m
И тогда в игру вступает обратная косая черта, даже когда она цитируется, и это превращается в кошмар цитирования.