Mac OS X:找不到dircolors吗?


19

我刚刚切换到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'

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

更新:

如果直接在外壳上运行dircolors,则会得到:

bash: dircolors; command not found


您确定确实是导致错误的此代码吗?只有dircolors -b看起来可疑,但是在我的计算机上,即使没有~/.dircolors文件,它也能正常工作。
Martin von Wittich

尝试dircolors在外壳中手动运行以查看二进制文件是否存在并且位于.NET中$PATH
Martin von Wittich

错误是真的.dircolors was not found而不是错误dircolors吗?dircolors除非您自己安装,否则OSX上没有命令,该命令特定于Linux(或更准确地说,特定于GNU coreutils)。
吉尔(Gilles)'所以

谢谢@吉尔斯。当我在shell中键入时,dircolors得到:bash: dircolors: command not found。我在OP中发布的代码是Zsh在Linux机器上自动生成的。我以为可以.zshrc直接将其克隆到Mac OSX。您是否知道我的OP中的代码是做什么的,或者对如何对其进行修改以使Mac OS X具有同等功能方面有任何建议?
阿梅利奥·瓦兹奎兹·雷纳

Answers:


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

如果要设置非默认颜色(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

3
GNU dircolorsgdircolorsbrewcoreutils软件包提供的。
m8mble

13

由于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,但是我认为这是一个过大的选择。你可以在这里找到港口


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/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.