Linux

即使設置了 LS_COLORS,ls 命令仍會讀取預設配置

  • September 18, 2022

我知道有幾個與此相關的問題,但我無法解決這些問題。

預期的行為

我想要的是禁用所有著色的東西,只是使目錄洋紅色。換句話說:--color=never+洋紅色目錄。

目前行為

ls已經讀取了我的LS_COLORS環境變數**,但**我也看到了目錄的綠色背景。似乎LS_COLORS只是對預設顏色的覆蓋。

到目前為止我所做的

  1. 我編輯了我的~/.bashrc文件,LS_COLORS手動設置並export編輯它。
  2. 我注意到這個文件中有一個部分試圖執行dircolors程序,以便LS_COLORS. 但是因為我自己做,所以我把它註釋掉了:
# enable color support of ls and also add handy aliases                               
#if [ -x /usr/bin/dircolors ]; then                                                   
#    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolor> 
#    alias ls='ls --color=auto'                                                       
#    #alias dir='dir --color=auto'                                                    
#    #alias vdir='vdir --color=auto'                                                  
#                                                                                     
#    alias grep='grep --color=auto'                                                   
#    alias fgrep='fgrep --color=auto'                                                 
#    alias egrep='egrep --color=auto'                                                 
#fi
  1. 我是這樣設置的:
LS_COLORS='di=01;35'; export LS_COLORS                                                
alias ls='ls --color=auto' 

同樣,上述行有效。如果我更改35為,34我會看到差異。

但令人討厭的是我只想要這種顏色而不想要別的:

在此處輸入圖像描述

ls應該只讀取這個變數進行著色嗎?

ls具有多種文件類型的預設顏色,如果您不希望應用它們,則需要覆蓋所有這些顏色。

在你的情況下,

eval $(dircolors -p | awk '/^TERM/ { print; next } /^[A-Z]/ { $2 = "00" } /^DIR/ { $2 = "01;35" } /^\./ { next } 1' | dircolors -)

將清除所有預設值並設置目錄的顏色。

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