Подтвердить что ты не робот

Как заставить команду watch интерпретировать последовательности vt100?

Рассмотрим этот простой пример (который отображается красным):

 echo -e "\033[31mHello World\033[0m"

Он отображается на терминале правильно красным цветом. Теперь рассмотрим:

watch echo -e "\033[31mHello World\033[0m"

Он не отображает цвет.

Примечание. Я знаю, что легко написать цикл, который имитирует основное поведение путем очистки и повторного использования. Тем не менее, чистая операция заставляет экран мигать, что не происходит при просмотре

EDIT: Первоначально в этом вопросе указывались escape-последовательности, а не последовательности vt100, но на самом деле это не то, что мне нужно, и было решено с одинарными кавычками.

4b9b3361

Ответ 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

И тогда обратная косая черта вступает в игру, даже когда она цитируется, и она становится кошмаром котировки.