
我剛剛換成 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
我還必須為dircolors
to設定一個別名gdircolors
,因為這是 FreeBSD ports 安裝樂趣的命令。祝所有最終嘗試這個的人好運!
這是某人透過brew獲取coreutils的連結:
http://www.topbug.net/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
應該可以工作了。