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

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

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

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

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

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

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

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

17
задан frankc 1 April 2013 в 15:38
поделиться

2 ответа

Редактировать:

Более поздние версии часов поддерживают цвет. Вам нужно будет использовать дополнительный уровень цитирования для сохранения кавычек и экранирования в конкретной ситуации примера в вопросе:

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

From man watch :

  -c, --color { {1}} Интерпретация цветовых последовательностей ANSI. 
 

Ранее:

Из man watch :

Непечатаемые символы удаляются из вывода программы. Используйте "cat -v" как часть конвейера команд, если хотите их увидеть.

Но они не интерпретируются, так что я не думаю, что есть какой-то способ.

4
ответ дан 30 November 2019 в 14:06
поделиться

Вы можете попробовать заключить свою команду в одинарные кавычки:

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

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

1
ответ дан 30 November 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: