Mac OS X:找不到目录颜色?

Ame*_*ina 24 osx shell coreutils

我刚刚切换到 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'
Run Code Online (Sandbox Code Playgroud)

dircolors不是与Mac OS X运?我应该如何安装它?

更新:

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

bash: dircolors; command not found

Gil*_*il' 15

该命令dircolors特定于 GNU coreutils,因此您可以在非嵌入式 Linux 和 Cygwin 上找到它,但不会在其他 Unix 系统(如 OSX)上找到它。生成的设置.zshrc不能移植到 OSX。

由于您使用的是默认颜色,因此您可以将空字符串传递给 list-colors以获取文件完成中的颜色。

对于带有实际ls命令的颜色,请CLICOLOR在 OSX 上设置环境变量,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
Run Code Online (Sandbox Code Playgroud)

如果你想设置非默认颜色(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
Run Code Online (Sandbox Code Playgroud)

  • GNU `dircolors` 由 `brew` 的 `coreutils` 包作为 `gdircolors` 提供。 (6认同)

Rap*_*ens 14

因为 FreeBSD 没有命令dircolor并且 OS X 有 FreeBSD 的基础,所以你不能使用它。

最简单的就是使用

export CLICOLOR=YES
Run Code Online (Sandbox Code Playgroud)

在您的.zshrcand.bashrc和 remove 中eval "$(dircolors -b)"。要更改颜色,您可以使用环境变量LSCOLORS。例如:

export LSCOLORS="Gxfxcxdxbxegedabagacad"
Run Code Online (Sandbox Code Playgroud)

您可以在手册页中找到有关它的更多信息

man ls
Run Code Online (Sandbox Code Playgroud)

另一种方法export CLICOLOR=YES是使用别名ls

alias ls=ls -G
Run Code Online (Sandbox Code Playgroud)

有些人建议从 Mac Ports 安装 GNU-Coreutils,但在我看来,这是一种矫枉过正。你可以在这里找到端口


小智 7

我不再做整个 mac 的事情,所以我没有任何东西可以测试,但是为了让这个在 FreeBSD 上工作,我设法弄清楚如何从端口让它工作。我记得OSX有这样的东西brewmacports-尝试从此安装GNU的coreutils如果你真的想dircolors工作。我还必须为设置别名dircolorsgdircolors,因为这是命令FreeBSD的港口安装了乐趣。祝任何最终尝试这个的人好运!

这是某人通过 brew 获取 coreutils 的链接:

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


Mik*_*maa 7

您可以dircolors从 Homebrew coreutils 包安装:

 brew install coreutils
Run Code Online (Sandbox Code Playgroud)

但是,默认情况下,GNU coreutils 不包含在内PATH。编辑您的~/.zshrc~/.bashrc并添加:

  export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
Run Code Online (Sandbox Code Playgroud)

现在启动新的 shell 会话后dircolors应该可以工作了。