更新:

更新:

我刚刚换成 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我还必须为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应该可以工作了。

相关内容