保留颜色的 bash watch 命令

Paw*_*cki 75 linux bash watch

来自man watch

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

那么,cat -v如果我想查看来自以下位置的彩色输出,我该如何使用:

watch ls -al --color
Run Code Online (Sandbox Code Playgroud)

小智 87

正确的命令是

watch --color "ls -a1 --color"
Run Code Online (Sandbox Code Playgroud)

它没有记录在手册页或 --help 屏幕中。我必须使用字符串才能找到它。

  • 我还有 0.3.0 版本,对于简单的“ls --color”,watch 命令可以工作,但由于某些原因,更复杂的场景不能:`watch --color "sudo iwlist wlan0 scan | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"`会吃掉颜色:( (2认同)

dav*_*avr 29

我认为使用 'watch' 命令可能无法实现。这是一个更长的方法:

while true; do clear; date;echo;ls -al --color; sleep 2; done
Run Code Online (Sandbox Code Playgroud)

你可以把它放在一个脚本中,例如:

echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
Run Code Online (Sandbox Code Playgroud)

澄清一下,这就是为什么我认为使用 'watch' 命令是不可能的。看看如果你使用 cat -v 会发生什么:

watch "ls -al --color|cat -v"
Run Code Online (Sandbox Code Playgroud)

它向您显示颜色控制字符...我认为这不是您想要的。

  • 您可以通过 a) 收集要显示的数据到变量中,b) 清除屏幕,c) 打印变量来稍微减少眨眼的持续时间。 (2认同)

fat*_*oku 6

如果您像我一样使用 Mac,watchHomebrew 不支持颜色。

你想要的是fswatch但它还不是 Homebrew 。要安装它,您需要做一些稍微复杂的事情

https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3??/Library/Formula/fswatch.rb

请参阅此 SO 答案以了解用法。

  • 这仅适用于文件系统,而 `watch` 适用于命令 (2认同)