是否可以關閉特定命令(如 )的顏色ls
,但不使用命令本身的 api?是否有一種 env 變數之類的東西可以關閉像 do 這樣的命令的著色COLOR=off ls
?任何解決方案都將受到高度讚賞。
編輯:我想要一個適用於所有命令的通用解決方案。喜歡COLOR=off command_name
答案1
如果您願意允許對格式進行一些更改,您也可以直接透過管道傳遞cat
ls | cat
沒有顏色,但每個條目都有換行符。
編輯:
透過 shell 設定關閉顏色
檢查 shell 的 rc 文件並查看顏色設定的位置,然後.<shell>rc_mono
在刪除這些設定的位置建立新文件,取得它並完成。例如對於 bash:
$cat ~/.bashrc_mono
export TERM=xterm-mono
. ~/.bashrc
alias ls='ls --color=none'
alias grep='grep --color=none'
請注意,必須位於和. ~/.bashrc
的新別名之前,因為它們的顏色通常在 中設定。所以你需要做的就是ls
grep
~/.bashrc
. ~/bashrc_mono ; ls
因此,“重做顏色”-rc 可能會很好:
$cat ~/.bashrc_recolorize
export TERM=xterm-256color
. ~/.bashrc
使用eg htop
,你會看到差異。
答案2
一種選擇是將TERM
變數設定為不支援顏色的終端類型。
例子:
TERM=dumb ls
TERM=dumb command_name
echo foo | TERM=dumb grep --color o
告訴程式使用啞終端也可能產生其他(不需要的)效果,這取決於您執行的命令,例如vi
可能不再識別遊標鍵。
正如建議的費利克斯JN你也可以嘗試TERM=xterm-mono
,但在我的測試系統(Windows 上的 Git bash)上,與TERM=dumb
.