我刚刚换成 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
使用文件参数),我的建议是对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
答案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
应该可以工作了。