Mac OS X: Farben nicht gefunden?

19

Ich bin gerade auf ein Macbook Air umgestiegen. Ich habe zsh mit Homebrew installiert, aber wenn ich einen Teil des Codes verwende, den ich (ursprünglich) in meinem Code hatte .zshrc, erhalte ich die Fehlermeldung .dircolors was not found.

Unten ist der fragliche Code:

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'

Wird dircolorsnicht mit Mac OS X geliefert? Wie soll ich es installieren?

Aktualisieren:

Wenn ich dircolors direkt auf der Shell laufen lasse, erhalte ich:

bash: dircolors; command not found

Amelio Vazquez-Reina
quelle
Sind Sie sicher, dass es wirklich dieser Code ist, der den Fehler verursacht? Nur das dircolors -bscheint verdächtig, aber auf meinem Computer funktioniert es ohne ~/.dircolorsDatei einwandfrei.
Martin von Wittich
Versuchen Sie, dircolorsmanuell in einer Shell auszuführen, um festzustellen, ob die Binärdatei vorhanden ist und sich in der befindet $PATH.
Martin von Wittich
Geht der Fehler wirklich .dircolors was not foundund nicht darum dircolors? Unter dircolorsOSX gibt es keinen Befehl, es sei denn, Sie haben ihn selbst installiert. Er ist Linux-spezifisch (oder genauer gesagt GNU-Coreutils).
Gilles 'SO - hör auf böse zu sein'
Vielen Dank an Gilles. Wenn ich in der Shell eingeben dircolorserhalte ich: bash: dircolors: command not found. Der Code, den ich im OP gepostet habe, wurde von Zsh auf einem Linux-Computer automatisch generiert. Ich dachte, ich könnte meine .zshrcdirekt auf meinen Mac OS X klonen . Wissen Sie, was der Code in meinem OP bewirkt, oder haben Sie Vorschläge, wie Sie ihn ändern können, um die entsprechende Funktionalität für Mac OS X bereitzustellen?
Amelio Vazquez-Reina

Antworten:

15

Der Befehl dircolorsist spezifisch für GNU-Coreutils, daher finden Sie ihn unter nicht eingebettetem Linux und Cygwin, jedoch nicht auf anderen Unix-Systemen wie OSX. Die generierten Einstellungen in Ihrem .zshrcsind nicht auf OSX übertragbar.

Da Sie die Standardfarben verwenden, können Sie eine leere Zeichenfolge an übergeben list-colors, um Farben in Dateivervollständigungen abzurufen.

Legen Sie für Farben mit dem Befehl actualls die CLICOLORUmgebungsvariable unter OSX fest und legen Sie LSCOLORS(siehe Handbuch für das Format) fest, ob Sie die Farben ändern möchten.

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

Wenn Sie nicht standardmäßige Farben festlegen dircolorsmöchten ( mit einem Datei-Argument), würde ich empfehlen, die Ausgabe von dircolors -b ~/.dircolorsin Ihrem fest zu codieren .zshrcund diese Einstellungen sowohl für zsh als auch für GNU ls zu verwenden.

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
Gilles 'SO - hör auf böse zu sein'
quelle
3
GNU dircolorsist als vorgesehen , gdircolorsdurch brew‚s - coreutilsPaket.
m8mble
13

Da FreeBSD keinen Befehl hat dircolorund OS X die Basis von FreeBSD hat, können Sie es nicht verwenden.

Das Einfachste ist zu benutzen

export CLICOLOR=YES

in deinem .zshrcund .bashrcund entferne eval "$(dircolors -b)". Um die Farben zu ändern, können Sie die Umgebungsvariable verwenden LSCOLORS. Beispielsweise:

export LSCOLORS="Gxfxcxdxbxegedabagacad"

Mehr dazu erfahren Sie in der Manpage mit

man ls

Eine Alternative zu export CLICOLOR=YESist die Verwendung eines Alias ​​fürls

alias ls=ls -G

Einige schlugen vor, die GNU-Coreutils von Mac Ports zu installieren, aber meiner Meinung nach ist dies ein Overkill. Den Hafen finden Sie hier

Raphael Ahrens
quelle
7

Ich mache nicht mehr die ganze Mac-Sache, also habe ich nichts mehr zum Testen, aber auf der Suche nach einer funktionierenden Version von FreeBSD habe ich es geschafft, herauszufinden, wie dies von den Ports aus funktioniert. Ich erinnere mich, dass OSX solche Sachen hat brewund macports- Versuchen Sie, die GNU-Coreutils von hier aus zu installieren, wenn Sie wirklich arbeiten wollen dircolors. Ich musste auch einen Alias ​​für setzen dircolors, gdircolorsda dies der Befehl ist, als den FreeBSD-Ports den Spaß installierten. Viel Glück für alle, die dies ausprobieren!

Hier ist ein Link zu jemandem, der die Coreutils per Brew runterholt:

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

Dmitri DB
quelle