我使用了一些显示颜色的命令,但是当我将它们与手表一起使用时,颜色消失了:
watch -n 1 node file.js
是否可以以某种方式重新显示颜色?
我使用了一些显示颜色的命令,但是当我将它们与手表一起使用时,颜色消失了:
watch -n 1 node file.js
是否可以以某种方式重新显示颜色?
Answers:
watch
与git diff
。FWIW,要得到这工作,你必须在传递--color=always
到git diff
(例如watch --color git diff --color=always
,
不要使用watch
...当您使用监视程序时,可以检测到它们没有写入终端,然后去除颜色。您必须使用特定的程序标志来将控制代码保留在那里。
如果您不知道这些标志,或者没有,您可以通过以下方式让穷人的手表:
while sleep <time>; do clear; <command>; done
它将有一些闪烁(手表的工作是“双缓冲”),但是对于某些东西它已经足够有用了。
您可能会想使用以下方法制作双缓冲穷人手表
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
但是,然后您将再次点击“我不在写终端”功能。
while sleep <time>; do clear; <command> | tee /tmp/file; done
代替>
和cat
?
watch
do,并且不会阻止命令闪烁
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
-它仅使用shell内置程序来清除屏幕并显示输出,因此是闪烁最少的选择。
您可以watch
在几行shell脚本中复制基本的基本操作。
$ 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
来禁用该逻辑。暂时而言,这种实现方式的天真之处在于远离了那些吃色怪物。
如果您处于watch
无法--color
选择的情况,并且无论出于何种原因都无法升级软件包,也许可以扔掉它。
是
手表具有彩色输出功能。它是procps软件包的一部分(至少在debian中),此处是您的问题的bugreport http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 他们回答的地方,您应该更新procps包
例如,使用ubuntu 11.04时,此软件包适用于http://packages.debian.org/wheezy/procps
tl; dr
更新程序
尽管其他答案可以解决此问题,但最简单的方法是使用该unbuffer
工具。要使用它,只需执行以下操作:
$ watch --color 'unbuffer <your-program>'
这样,您不必寻找程序的控制序列启用标志。需要注意的是,您的手表版本应支持该--color
标志。
您可以使用在Debian或Ubuntu上安装unbuffer sudo apt-get install expect
。
'unbuffer <command>'
-没有给出特定的命令来使用它如何回答问题?
<command>
要使用颜色运行的特定程序?
从手表手册:
非打印字符从程序输出中删除。如果要查看它们,请在命令管道中使用“ cat -v”。
虽然,我不确定如何使用它。
watch -c "ls --color|cat -v"
显示^[[0m^[[01;34mAgent^[[0m
第一行。
watch --color ls --color=always .