
Acabo de cambiarme a una Macbook Air. Instalé zsh usando homebrew, pero cuando uso parte del código que tenía (originalmente) en mi .zshrc
, aparece un error que dice eso .dircolors was not found
.
A continuación se muestra el código en cuestión:
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
No se envía con Mac OS X? ¿Cómo debo instalarlo?
Actualizar:
Si ejecuto dircolors directamente en el shell obtengo:
bash: dircolors; command not found
Respuesta1
El comando dircolors
es específico de GNU coreutils, por lo que lo encontrará en Linux no integrado y en Cygwin, pero no en otros sistemas Unix como OSX. La configuración generada en su .zshrc
no es portátil a OSX.
Como estás usando los colores predeterminados, puedes pasar una cadena vacía al
list-colors
para obtener colores en las terminaciones de archivos.
Para colores con ells
comando real, configure la CLICOLOR
variable de entorno en OSX y también configure LSCOLORS
(consulte el manual para conocer el formato) si desea cambiar los colores.
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
Si desea establecer colores no predeterminados ( dircolors
con un argumento de archivo), mi recomendación sería codificar la salida de dircolors -b ~/.dircolors
su .zshrc
y usar estas configuraciones tanto para zsh como para 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
Respuesta2
Como FreeBSD no tiene comando dircolor
y OS X tiene la base de FreeBSD, no puedes usarlo.
Lo más sencillo es utilizar
export CLICOLOR=YES
en tu .zshrc
y .bashrc
y eliminar eval "$(dircolors -b)"
. Para cambiar los colores puedes usar la variable de entorno LSCOLORS
. Por ejemplo:
export LSCOLORS="Gxfxcxdxbxegedabagacad"
Puede obtener más información al respecto en la página de manual con
man ls
Una alternativa export CLICOLOR=YES
es utilizar un alias parals
alias ls=ls -G
Algunos sugirieron instalar GNU-Coreutils desde los puertos Mac, pero en mi opinión esto es excesivo. Puedes encontrar el puerto.aquí
Respuesta3
Ya no hago todo esto de Mac, así que no tengo nada con qué probar, pero en la búsqueda para que esto funcione en FreeBSD, logré descubrir cómo hacer que esto funcione desde los puertos. Recuerdo que OSX tiene cosas como brew
y macports
: intenta instalar GNU coreutils desde aquí si realmente quieres dircolors
trabajar. También tuve que establecer un alias para dircolors
ya gdircolors
que este es el comando con el que los puertos FreeBSD instalaron la diversión. ¡Buena suerte a cualquiera que termine probando esto!
Aquí hay un enlace para que alguien obtenga los coreutils mediante brew:
http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/
Respuesta4
Puede instalar dircolors
desde el paquete Homebrew coreutils:
brew install coreutils
Sin embargo, GNU coreutils no están incluidos de forma PATH
predeterminada. Edite su ~/.zshrc
y ~/.bashrc
agregue:
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
Ahora, después de iniciar una nueva sesión de Shell dircolors
debería funcionar.