Bash
dircolors:全域修改顏色設置
我了解
ls
用於dircolors
顯示彩色輸出的用途。dircolors
具有與文件副檔名關聯的預設顏色數據庫,可以使用命令列印dircolors --print-database
根據
man dir_colors
我的閱讀,系統範圍的數據庫應該位於/etc/DIR_COLORS
. 但是這個文件在我的系統(Debian)上不存在。如何修改系統範圍的顏色設置dircolors
?當不存在文件時,該命令dircolors --print-database
從哪裡獲取設置。我知道使用者可以擁有
~/.dircolors
帶有他的設置的使用者特定文件,但這不適合我,因為我需要為每個人更改設置。第二個問題是,是否可以將 8 位顏色用於 dircolors。我的終端是
xterm-256color
.
ls
從環境變數中獲取顏色設置LS_COLORS
。dircolors
只是生成此環境變數的一種便捷方式。要使此環境變數在系統範圍內生效,請將其放入 shell 的啟動文件中。對於
bash
,您將其放入/etc/profile
:# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing # $(dircolors) effectively sets the LS_COLORS environment variable. eval "$(dircolors /etc/DIR_COLORS)"
對於
zsh
,您可以將其放入/etc/zshrc
或安排在啟動zsh
時閱讀。/etc/profile
您的發行版可能已經zsh
這樣做了。我只是提出這一點來指出dircolors
真正每個人的設置取決於他們使用的外殼。至於從哪裡
dircolors
獲取其設置,當您不指定文件時,它只會使用一些內置預設值。您可以
xterm
在 dircolors 文件中使用 ’s 256 顏色轉義碼,但請注意它們僅適用於xterm
兼容的終端。例如,它們不能在 Linux 文本控制台上工作。256 色轉義碼的格式用於
38;5;colorN
前景色和48;5;colorN
背景色。例如:.mp3 38;5;160 # Set fg color to color 160 .flac 48;5;240 # Set bg color to color 240 .ogg 38;5;160;48;5;240 # Set fg color 160 *and* bg color 240. .wav 01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!