如何使watch命令解释vt100序列?

fra*_*nkc 17 unix linux shell terminal watch

考虑这个简单的例子(以红色显示):

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

它在终端上以红色正确显示.现在考虑:

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

它不显示颜色.

注意:我知道通过清除和重新运行来编写一个模仿基本行为的循环很容易.但是,清除操作会导致屏幕闪烁,这在手表下不会发生

编辑:最初这个问题指定了转义序列而不是vt100序列,但这不是我所追求的,并且用单引号解决了.

l0b*_*0b0 12

从Ubuntu 11.10上man watchwatch0.3.0开始:

默认情况下,watch通常不会传递转义字符,但是如果使用--c或--color选项,则watch将解释前景的ANSI颜色序列.

它似乎不适用于我的终端上的文字字符串,但这些工作:

watch --color 'tput setaf 1; echo foo'
watch --color ls -l --color
Run Code Online (Sandbox Code Playgroud)


Pau*_*ce. 5

编辑:

watch支持颜色的更新版本。在问题示例的特定情况下,您将需要使用额外的引用级别来保留引号和转义:

watch 'echo -e "\033[31mHello World\033[0m"'
Run Code Online (Sandbox Code Playgroud)

来自man watch

  -c, --color
          Interpret ANSI color sequences.
Run Code Online (Sandbox Code Playgroud)

之前:

来自man watch

从程序输出中去除非打印字符。如果您想查看它们,请使用“cat -v”作为命令管道的一部分。

但是他们没有得到解释,所以我认为没有任何办法。