我正在尝试运行watch
,以便在我运行文件并更改内容时显示 grep 命令的输出。
通常的方法可以正常工作,但缺乏颜色:
watch grep 'something' **/*
...因为我确实想要颜色,所以我这样做了:
watch grep 'something' **/* --color=always
它仍然很丑陋,因为手表无法解析使颜色起作用的转义码。然后我发现了这个:
watch --color grep 'something' **/* --color=always
好吧……这不起作用。输出以某种奇怪的方式碎片/混合。由于某种原因,它只显示了一行,而没有watch --color
grep 输出大约 20 条。
我怎样才能watch
使用彩色输出grep
?
孤立的案例:
使用以下内容:
mkdir grep_test; cd grep_test
echo "asdsad\nasdasd\nsaasdasd" > file1
echo "test\n123\ntest" > file2
我创建两个文件,并运行以下命令:
grep test * --color=always
其按预期工作,并输出(带有颜色和其他内容):
file2:test
file2:test
但是当我使用手表时:
watch --color 'grep test * --color=always'
它什么也不输出。如果没有该--color
选项,它会显示正确的输出,尽管没有解释 ANSI 转义。我在 Fedora 25 上运行它,在 tmux 会话中,里面有 zsh。
另外,watch -v
输出是:
watch from procps-ng 3.3.10
答案1
事实证明手表确实适用于颜色输出。但专门针对grep你应该采取一些解决方法(根据grep --color 添加 ANSI 代码 ESC[K - 这可以更改显示的文本)
watch --color "GREP_COLORS=ne grep --color=always .* *"