来自man watch
:
从程序输出中删除非打印字符。如果要查看它们,请在命令管道中使用“ cat -v”。
所以,cat -v
如果我想查看彩色输出,该如何使用:
watch ls -al --color
来自man watch
:
从程序输出中删除非打印字符。如果要查看它们,请在命令管道中使用“ cat -v”。
所以,cat -v
如果我想查看彩色输出,该如何使用:
watch ls -al --color
Answers:
正确的命令是
watch --color "ls -a1 --color"
手册页或--help屏幕中未记录该文件。我必须使用字符串来找到它。
watch --color "sudo iwlist wlan0 scanning | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"
会吃颜色:(
watch
从V3.3.2开始,from procps(我相信大多数Linux发行版中的默认值)都有一个--color
选项。
我认为使用“ watch”命令可能无法实现。这是一个更长的方法:
while true; do clear; date;echo;ls -al --color; sleep 2; done
您可以将其放在脚本中,例如:
echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
为了澄清,这就是为什么我认为使用'watch'命令不可能的原因。看看使用cat -v会发生什么:
watch "ls -al --color|cat -v"
它向您显示颜色控制字符...我想这不是您想要的。
man watch
清楚地暗示没有争执就应该有可能watch
。
cat -v
查看man watch
正在讨论的内容。
while true; do out=$(date;echo;ls -al --color);clear;echo $out;sleep 2;done
echo "$out"
。 stackoverflow.com/q/2414150/86967
更新:列出了watch
解决此问题的最新版本。因此,如果的颜色watch --color
不正确,最好对其进行更新(在我的系统中,位于procps
包装中)。
根据watch --color
我的经验,颜色支持有限(尽管足以满足ls -l --color
)。这是我的@davr答案版本,具有一些额外的功能,最重要的是减少了闪烁。您可以将其放在.bashrc中,并用作cwatch ls -l --color
。
# `refresh cmd` executes clears the terminal and prints
# the output of `cmd` in it.
function refresh {
tput clear || exit 2; # Clear screen. Almost same as echo -en '\033[2J';
bash -ic "$@";
}
# Like watch, but with color
function cwatch {
while true; do
CMD="$@";
# Cache output to prevent flicker. Assigning to variable
# also removes trailing newline.
output=`refresh "$CMD"`;
# Exit if ^C was pressed while command was executing or there was an error.
exitcode=$?; [ $exitcode -ne 0 ] && exit $exitcode
printf '%s' "$output"; # Almost the same as echo $output
sleep 1;
done;
}
您也可以尝试类似
cwatch 'ls -l --color | head -n `tput lines`'
如果终端的行数少于输出。但是,仅当所有线都短于端子宽度时,这种方法才有效。我知道最好的解决方法是:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'