如何在儲存標準輸出到檔案的同時保留顏色?


介紹

本文將介紹我們可以使用的工具,這些工具可以在將標準輸出傳送到檔案的同時保持其顏色。這在故障排除時尤其有用,因為它使彩色區域更容易掃描輸出日誌。

使用Grep

grep命令可以用於在檔案中搜索文字模式或字串。這些模式稱為正則表示式。

語法

grep命令的語法如下:

$ grep [options] pattern [files]

示例

讓我們使用cat命令建立一個example.txt檔案。之後我們將使用grep命令處理該檔案。

$ cat >> example.txt
tutorials point rocks

讓我們使用grep並用顏色突出匹配的字串,然後將輸出傳送到不同的檔案:

$ grep --color=always "tutorials point rocks" example.txt > grep_output.txt

輸出

輸出將儲存到grep_output.txt。您可以使用cat命令檢視檔案內容:

$ grep --color=always "tutorials point rocks" example.txt > grep_output.txt
$ cat grep_output.txt
tutorials point rocks

為了在將輸出傳送到檔案時保留ANSI序列,我們使用了grep的`-color=always`選項。預設情況下,grep在透過管道傳輸到檔案時會從輸出中刪除顏色。

使用tee

tee命令是一個工具,它同時接收標準輸入,寫入一個或多個檔案,並輸出到標準輸出。

我們將透過管道與其他幾個命令結合使用它。

語法

tee命令的語法如下:

$ tee [option]…[file]…

示例

我們將使用echo命令建立一些彩色輸出;我們將使用管道將其與tee命令結合以儲存輸出。

$ echo -e "\e[1;32m Tutorial point rocks \e[0m" | tee -a tee_output.txt

輸出

您將得到此輸出:

$ echo -e "\e[1;32m Tutorial point rocks \e[0m" | tee -a tee_output.txt 
Tutorial point rocks

作為一個簡單的例子,我們使用了tee來儲存來自echo命令的彩色輸出。類似地,我們可以將tee與其他生成彩色輸出或日誌的命令結合使用。

使用echo

echo命令顯示我們作為引數提供的文字字元。

可以使用以下轉義序列與echo一起指定檔案中內容的顏色:

$ echo -e "\e[1;45m tutorials point rocks \e[0m" > echo_output.txt

示例

透過這樣做,文字將被著色並儲存到echo_output.txt檔案。讓我們用cat命令檢視它:

$ cat echo_output.txt

輸出

您將得到以下輸出:

tutorials point rocks

使用script

script命令用於建立每個終端活動的逐字記錄。它會記錄每個活動,包括輸入和輸出,直到我們停止它。

預設情況下,它將資料儲存為一個typescript檔案。但是,如果我們想將輸出儲存到不同的檔案,我們可以指定一個引數。

script命令使用兩個檔案:一個用於終端輸出,另一個用於計時資訊。

語法

讓我們看看script命令的語法:

$ script [options] [file]

示例

讓我們執行以下命令:

$ script -q /dev/null -c "echo -e '\e[1;45m tutorials point rocks \e[0m'" > script_output.txt

我們不會收到任何輸出,但是我們可以使用cat檢視新生成的檔案中的內容:

$ cat script_output.txt

輸出

tutorials point rocks 

結論

本文討論了我們可以使用的工具,這些工具可以在將標準輸出或stdout儲存到檔案的同時保留顏色。我們詳細討論了grep、tee、script和echo工具。還有其他幾種方法可以在將stdout儲存到檔案時保留顏色,掌握以上工具後,您可以探索這些方法。

更新於:2022年11月21日

752 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.