彩色 grep 输出被 watch 命令分割成碎片

彩色 grep 输出被 watch 命令分割成碎片

我正在尝试运行watch,以便在我运行文件并更改内容时显示 grep 命令的输出。

通常的方法可以正常工作,但缺乏颜色:

watch grep 'something' **/*

...因为我确实想要颜色,所以我这样做了:

watch grep 'something' **/* --color=always

它仍然很丑陋,因为手表无法解析使颜色起作用的转义码。然后我发现了这个:

watch --color grep 'something' **/* --color=always

好吧……这不起作用。输出以某种奇怪的方式碎片/混合。由于某种原因,它只显示了一行,而没有watch --colorgrep 输出大约 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 .* *"

相关内容