有什麼方法可以保持透過管道傳遞|
到head
、tail
、less
等的文字的著色嗎?
答案1
我假設您正在從管道中傳輸ls
並希望保留終端顏色代碼。您可以說ls --color=always
(而不是預設的--color=auto
),這將保留程式碼,但這並不能保證您透過管道傳輸到的物件知道如何理解它們。
如果您使用它glark
代替,grep
它將嘗試以顏色顯示。
如果您使用less
它-R
,它將嘗試以顏色顯示。
答案2
這取決於在管道中產生輸出的程式。
head
、tail
等不是刪除顏色的程序,而是產生資料的程序,通常檢查輸出是否發送到控制台(彩色)、文件或管道(未著色)
我發現另一個蘇問答展示如何欺騙管道程式進行輸出,就好像它們將輸出發送到控制台一樣(使用 類比控制台unbuffer
)
答案3
在 Mac OS X 上man ls
提到了CLICOLOR_FORCE
環境變數。
加到或,根據您使用的 shell,在管道傳輸到其他命令export CLICOLOR_FORCE=1
(如、和 )時保留顏色。~/.zshrc
~/.bashrc
ls
less
head
tail
答案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