问题描述
我使用了一些显示颜色的命令,但是当我将它们与 watch 一起使用时,颜色消失了:
watch -n 1 node file.js
是否有可能以某种方式重新显示颜色?
最佳答案
现在,某些较新版本的watch
支持颜色。
例如watch --color ls -ahl --color
。
次佳答案
不要使用watch
…当您使用监视程序时,可以检测到它们没有写入终端,然后剥去了颜色。您必须使用特定的程序标志来将控制代码保留在那里。
如果您不知道这些标志,或者没有,您可以通过以下方式让穷人的 watch :
while sleep <time>; do clear; <command>; done
它将有一点闪烁( watch 工作”double buffered”),但是对于某些东西它已经足够有用了。
您可能会想使用以下方法制作双缓冲穷人 watch
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
但是,然后您将再次点击“我不在写终端”功能。
第三种答案
您可以在几行shell脚本中复制watch
的基本no-frills操作。
$ cat cheapwatch
#!/bin/sh
# Not quite your Rolex
while true ; do
clear
printf "[%s] Output of %s:\n" "$(date)" "$*"
# "$@" <- we don't want to do it this way, just this:
${SHELL-/bin/sh} -c "$*"
sleep 1 # genuine Quartz movement
done
$ ./cheapwatch ls --color # no problem
最终,一个非常聪明的人将在这个脚本中删除一个tr
命令,该命令将剥离控制字符,然后强制用户使用--color
禁用该逻辑。暂时而言,此实现的天真之处在于使color-eating怪物远离。
如果您处于watch
没有--color
选项的情况,并且由于某种原因而无法升级软件包,则可以将其放入。
第四种答案
是
watch 具有彩色输出功能。它是procps软件包的一部分(至少在debian中),此处是您的问题http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334的错误报告,他们应回答,您应该更新procps软件包
例如与ubuntu 11.04配合使用时,此软件包适用于http://packages.debian.org/wheezy/procps
长话短说
更新程序