Grep

彩色 grep 輸出被 watch 命令碎片化

  • November 26, 2018

我正在嘗試執行watch,以便在我執行文件和更改內容時向我顯示 grep 命令的輸出。

這樣做的通常方法很好,但缺少顏色:

watch grep 'something' **/*

…因為我確實想要顏色,所以我這樣做了:

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

它仍然很難看,因為 watch 不會解析使顏色起作用的轉義碼。於是我發現了這個:

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 上執行這個,在裡面有 zsh 的 tmux 會話。

此外,watch -v輸出是:

watch from procps-ng 3.3.10

事實證明,手錶確實適用於顏色輸出。但特別是對於grep你應該做一些解決方法(根據[grep –color 添加 ANSI 程式碼 ESCK - 這可以改變顯示的文本

watch --color "GREP_COLORS=ne grep --color=always .* *"

引用自:https://unix.stackexchange.com/questions/346547