**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site主题相关,您可以留下评论以解释在何处可以回答此问题。
1年前关闭。
社区在1年前审查了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我使用的一些命令显示颜色,但当我将它们与watch一起使用时,颜色消失了:
watch -n 1 node file.js
有没有可能以某种方式恢复颜色?
8条答案
按热度按时间nr9pn0ug1#
一些较新版本的
watch
现在支持彩色。例如
watch --color ls -ahl --color
。Related。
如果您期望彩色输出时看到的是单色输出,很可能是您在
watch
中运行的命令检测到它没有连接到终端,您需要强制彩色输出。一些示例:对于
ls
和其他程序,您可能需要进行其他配置,但即使您没有使用watch
,这些配置也会显示出来。ufj5ltwl2#
不要使用
watch
...当你使用watch程序时,它可以检测到它们没有写入终端,然后去掉颜色。你必须使用特定的程序标志来保持控制代码在那里。如果你不知道旗帜或没有,你可以让一个穷人的人看:
它会有一点 Flink (手表工作“双缓冲”),但对于一些东西,它是足够有用的。
你可能会想做一个双缓冲穷人的手表使用
但是,然后你会再次点击“我没有写终端”功能。
0dxa2lsx3#
虽然其他答案可以解决这个问题,但最简单的方法是使用
unbuffer
工具。要使用它,只需执行以下操作:这样你就不必去寻找程序的控制序列使能标志了,但需要注意的是,你的watch版本应该支持
--color
标志。您可以使用
sudo apt-get install expect
在Debian或Ubuntu上安装unbuffer。lmvvr0a84#
您可以在几行shell脚本中复制
watch
的基本、简单的操作。最后,某个非常聪明的人会在这个脚本中插入一个
tr
命令,去掉控制字符,然后强迫用户使用--color
来禁用这个逻辑。如果您遇到的情况是
watch
没有--color
选项,并且无论出于何种原因您都无法升级软件包,那么您可以添加此选项。hsgswve45#
是的
watch可以使用颜色输出.它是procps包的一部分(至少在debian中)这里是你的问题http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334的bugreport,他们回答,你应该更新procps包
例如,在ubuntu 11.04中,此软件包适用于http://packages.debian.org/wheezy/procps
博士
更新过程
tyky79it6#
如果命令没有强制颜色输出的选项,其他答案可能不起作用。或者你可能像我一样懒惰,不想浏览每个命令的手册来找到正确的设置。我尝试了几种不同的技术:
script
命令脚本命令捕获由交互式终端会话运行的输出。通过
watch
的--color
参数的组合,它保留颜色:-q
用于quiet,-c
用于command,/dev/null
是日志文件,不需要它,因为stdout也显示输出。编辑:这是目前为止最好的选择,我把之前的解决方案留给了感兴趣的人。
前期尝试:重写终端窗口
正如一些人所建议的,可以使用一个简单的带有
clear
和sleep
的while循环在终端中运行命令而不捕获其输出。这通常会导致 Flink ,因为clear
删除了所有字符,然后命令需要一些时间逐行打印新的输出。幸运的是,您可以使用
tput
使用一些巧妙的终端技巧来解决这个问题。以下是脚本:
该脚本修复了颜色问题,但仍然存在一个不同的错误:如果命令输出的行变短,则不一定会擦除该行的其余部分,因此输出可能与实际情况不匹配!
yzxexxkh7#
手表手册:
非打印字符将从程序输出中剥离。如果您想查看它们,请使用“cat -v”作为命令管道的一部分。
但是我不知道如何使用它。
xxhby3vn8#
unbuffer
is a great way以避免让进程知道它是否正在写入TTY,但值得注意的是watch
does not support 8-bit colors and above yet。如果您使用更现代的like
bat
或exa
而不是ls
,则应该附加--theme=ansi
(甚至--theme=base16
也不起作用)。git log
开箱即用,因为它总是使用3位颜色(源代码)。示例:
也可以使用
-f
代替--color=always
。另一个替代方案可以是Pygments。