有沒有辦法讓傳遞到 head、tail、less 等的文字保持彩色?

有沒有辦法讓傳遞到 head、tail、less 等的文字保持彩色?

有什麼方法可以保持透過管道傳遞|headtailless等的文字的著色嗎?

答案1

我假設您正在從管道中傳輸ls並希望保留終端顏色代碼。您可以說ls --color=always(而不是預設的--color=auto),這將保留程式碼,但這並不能保證您透過管道傳輸到的物件知道如何理解它們。

如果您使用它glark代替,grep它將嘗試以顏色顯示。

如果您使用less-R,它將嘗試以顏色顯示。

答案2

這取決於在管道中產生輸出的程式。

headtail等不是刪除顏色的程序,而是產生資料的程序,通常檢查輸出是否發送到控制台(彩色)、文件或管道(未著色)

我發現另一個蘇問答展示如何欺騙管道程式進行輸出,就好像它們將輸出發送到控制台一樣(使用 類比控制台unbuffer

答案3

在 Mac OS X 上man ls提到了CLICOLOR_FORCE環境變數。

加到或,根據您使用的 shell,在管道傳輸到其他命令export CLICOLOR_FORCE=1(如、和 )時保留顏色。~/.zshrc~/.bashrclslessheadtail

答案4

考慮

bat

替代方案

cat

安裝

brew install bat

--args --flags 類似

--language--theme

例子

head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark

相關內容