Mac OS X: dircolors non trovato?


19

Sono appena passato a un Macbook Air. Ho installato zsh usando homebrew, ma quando uso parte del codice che avevo (originariamente) nel mio .zshrc, ricevo un errore a dirlo .dircolors was not found.

Di seguito è riportato il codice in questione:

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'

Non dircolorsviene fornito con Mac OS X? Come devo installarlo?

Aggiornare:

Se eseguo dircolors direttamente sulla shell ottengo:

bash: dircolors; command not found


Sei sicuro che sia proprio questo codice a causare l'errore? Solo l' dircolors -bsembra sospetto, ma sul mio computer funziona senza un ~/.dircolorsfile di più che bene.
Martin von Wittich,

Prova a eseguire dircolorsmanualmente in una shell per vedere se il binario esiste e si trova in $PATH.
Martin von Wittich,

L'errore è davvero .dircolors was not founde non riguarda dircolors? Non esiste alcun dircolorscomando su OSX a meno che non sia stato installato da solo, è specifico per Linux (o più precisamente per i coreutils GNU).
Gilles 'SO- smetti di essere malvagio' il

Grazie @Gilles. Quando digito nella shell dircolorsottengo: bash: dircolors: command not found. Il codice che ho pubblicato nell'OP è stato generato automaticamente da Zsh su una macchina Linux. Pensavo di poter clonare il mio direttamente .zshrcsul mio Mac OS X. Sai cosa fa il codice nel mio OP o hai qualche suggerimento su come modificarlo per portare la funzionalità equivalente a Mac OS X?
Amelio Vazquez-Reina,

Risposte:


15

Il comando dircolorsè specifico per i coreutils GNU, quindi lo troverai su Linux non incorporato e su Cygwin ma non su altri sistemi unix come OSX. Le impostazioni generate nel tuo .zshrcnon sono portabili su OSX.

Dato che stai usando i colori predefiniti, puoi passare una stringa vuota a list-colorsper ottenere i colori nei completamenti dei file.

Per i colori con il comando effettivols , impostare la CLICOLORvariabile di ambiente su OSX e impostare LSCOLORS(consultare il manuale per il formato) se si desidera modificare i colori.

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

Se si desidera impostare colori non predefiniti ( dircolorscon un argomento file), la mia raccomandazione è di codificare l'output di dircolors -b ~/.dircolorsin your .zshrce utilizzare queste impostazioni sia per zsh che per 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 dircolorsè dato gdircolorsda brew's coreutilspacchetto.
m8mble

13

Dato che FreeBSD non ha alcun comando dircolore OS X ha la base di FreeBSD non puoi usarlo.

La cosa più semplice è usare

export CLICOLOR=YES

nel tuo .zshrce .bashrce rimuovi eval "$(dircolors -b)". Per cambiare i colori puoi usare la variabile d'ambiente LSCOLORS. Per esempio:

export LSCOLORS="Gxfxcxdxbxegedabagacad"

Puoi saperne di più nella pagina man con

man ls

Un'alternativa export CLICOLOR=YESè usare un alias perls

alias ls=ls -G

Alcuni hanno suggerito di installare GNU-Coreutils da Mac Ports, ma a mio avviso questo è eccessivo. Puoi trovare il porto qui


7

Non eseguo più l'intera operazione Mac, quindi non ho nulla con cui provare, ma nella ricerca di farlo funzionare su FreeBSD, sono riuscito a capire come farlo funzionare dai porti. Ricordo che OSX ha cose del genere brewe macports- Prova a installare i coreutils GNU da questo se vuoi davvero dircolorslavorare. Ho anche dovuto impostare un alias per dircolorsagdircolors come questo è il comando che porti FreeBSD installato il divertimento come. Buona fortuna a chiunque finisca per provarlo!

Ecco un link a qualcuno che ottiene i coreutils giù tramite brew:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.