Shell

Mac OS X:找不到目錄顏色?

  • April 4, 2022

我剛換了Macbook Air。我使用自製軟體安裝了 zsh,但是當我使用我(最初擁有的)在我.zshrc.dircolors was not found.

以下是有問題的程式碼:

zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true

zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'

dircolors不是隨 Mac OS X 一起提供的?我應該如何安裝它?

更新:

如果我直接在外殼上執行 dircolors 我得到:

bash: dircolors; command not found

該命令dircolors特定於 GNU coreutils,因此您可以在非嵌入式 Linux 和 Cygwin 上找到它,但在 OSX 等其他 unix 系統上找不到。您生成的設置.zshrc不能移植到 OSX。

由於您使用的是預設顏色,因此您可以將一個空字元串傳遞給 list-colors以獲取文件完成中的顏色。

對於使用實際ls命令的顏色,請在 OSX 上設置環境變數,如果要更改顏色CLICOLOR,還要設置(格式參見手冊)。LSCOLORS

if whence dircolors >/dev/null; then
 eval "$(dircolors -b)"
 zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
 alias ls='ls --color'
else
 export CLICOLOR=1
 zstyle ':completion:*:default' list-colors ''
fi

如果您想設置非預設顏色(dircolors使用文件參數),我的建議是對dircolors -b ~/.dircolors您的輸出進行硬編碼,.zshrc並將這些設置用於 zsh 和 GNU ls。

LS_COLORS=…
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
if whence dircolors >/dev/null; then
 export LS_COLORS
 alias ls='ls --color'
else
 export CLICOLOR=1
 LSCOLORS=…
fi

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