更新:

更新:

我剛剛換成 Macbook Air。我使用 homebrew 安裝了 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 一起提供的嗎?我應該如何安裝它?

更新:

如果我直接在 shell 上運行 dircolors 我會得到:

bash: dircolors; command not found

答案1

該命令dircolors特定於 GNU coreutils,因此您會在非嵌入式 Linux 和 Cygwin 上找到它,但在其他 UNIX 系統(例如 OSX)上找不到它。您中產生的設定.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輸出進行硬編碼,並將這些設定用於 zsh 和 GNU ls。dircolors -b ~/.dircolors.zshrc

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

答案2

由於 FreeBSD 沒有指令dircolor,而 OS X 有 FreeBSD 的基礎,所以你無法使用它。

最簡單的就是使用

export CLICOLOR=YES

在你的.zshrc.bashrc中刪除eval "$(dircolors -b)".若要變更顏色,您可以使用環境變數LSCOLORS。例如:

export LSCOLORS="Gxfxcxdxbxegedabagacad"

您可以在手冊頁中找到有關它的更多信息

man ls

另一種方法export CLICOLOR=YES是使用別名ls

alias ls=ls -G

有些人建議從 Mac Ports 安裝 GNU-Coreutils,但在我看來,這是矯枉過正的做法。就可以找到連接埠了這裡

答案3

我不再做整個 mac 的事情了,所以我沒有任何東西可以測試,但為了讓這個在 FreeBSD 上工作,我設法弄清楚如何從端口讓它工作。我記得 OSX 有類似brew和的東西 - 如果你真的想工作,macports請嘗試從這裡安裝 GNU coreutils 。dircolors我還必須為dircolorsto設定一個別名gdircolors,因為這是 FreeBSD ports 安裝樂趣的命令。祝所有最終嘗試這個的人好運!

這是某人透過brew獲取coreutils的連結:

http://www.topbug.ne​​t/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/

答案4

您可以dircolors從 Homebrew coreutils 套件安裝:

 brew install coreutils

PATH但是,預設情況下,GNU coreutils 不包含在內。編輯您的~/.zshrc~/.bashrc並添加:

  export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"

現在啟動新的 shell 會話後dircolors應該可以工作了。

相關內容