Bash

dircolors:全域修改顏色設置

  • December 12, 2020

我了解ls用於dircolors顯示彩色輸出的用途。dircolors具有與文件副檔名關聯的預設顏色數據庫,可以使用命令列印

dircolors --print-database

根據man dir_colors我的閱讀,系統範圍的數據庫應該位於/etc/DIR_COLORS. 但是這個文件在我的系統(Debian)上不存在。如何修改系統範圍的顏色設置dircolors?當不存在文件時,該命令dircolors --print-database從哪裡獲取設置。

我知道使用者可以擁有~/.dircolors帶有他的設置的使用者特定文件,但這不適合我,因為我需要為每個人更改設置。

第二個問題是,是否可以將 8 位顏色用於 dircolors。我的終端是xterm-256color.

ls從環境變數中獲取顏色設置LS_COLORSdircolors只是生成此環境變數的一種便捷方式。要使此環境變數在系統範圍內生效,請將其放入 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!

引用自:https://unix.stackexchange.com/questions/94299