
Acabei de mudar para um Macbook Air. Instalei o zsh usando o homebrew, mas quando uso parte do código que eu (originalmente tinha) no meu .zshrc
, recebo um erro dizendo isso .dircolors was not found
.
Abaixo está o código em questão:
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'
Não é dircolors
fornecido com o Mac OS X? Como devo instalá-lo?
Atualizar:
Se eu executar dircolors diretamente no shell, recebo:
bash: dircolors; command not found
Responder1
O comando dircolors
é específico para GNU coreutils, então você o encontrará no Linux não embarcado e no Cygwin, mas não em outros sistemas Unix, como o OSX. As configurações geradas em seu .zshrc
não são portáveis para o OSX.
Como você está usando as cores padrão, você pode passar uma string vazia para o
list-colors
para obter cores nas conclusões do arquivo.
Para cores comls
comando real, defina a CLICOLOR
variável de ambiente no OSX, e também defina LSCOLORS
(veja o manual para o formato) se deseja alterar as cores.
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 você quiser definir cores não padrão ( dircolors
com um argumento de arquivo), minha recomendação seria codificar a saída dircolors -b ~/.dircolors
em seu .zshrc
e usar essas configurações para zsh e 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
Responder2
Como o FreeBSD não tem comando dircolor
e o OS X tem a base do FreeBSD, você não pode usá-lo.
O mais simples é usar
export CLICOLOR=YES
em seu .zshrc
e .bashrc
e remova eval "$(dircolors -b)"
. Para alterar as cores você pode usar a variável de ambiente LSCOLORS
. Por exemplo:
export LSCOLORS="Gxfxcxdxbxegedabagacad"
Você pode descobrir mais sobre isso na página de manual com
man ls
Uma alternativa export CLICOLOR=YES
é usar um alias parals
alias ls=ls -G
Alguns sugeriram instalar o GNU-Coreutils a partir de portas Mac, mas na minha opinião isso é um exagero. Você pode encontrar o portoaqui
Responder3
Eu não faço mais essa coisa toda de mac, então não tenho nada para testar, mas na busca para fazer isso funcionar no FreeBSD, consegui descobrir como fazer isso funcionar a partir dos ports. Lembro-me que o OSX tem coisas como brew
e macports
- Tente instalar o GNU coreutils a partir disso se você realmente quiser dircolors
trabalhar. Eu também tive que definir um alias para, dircolors
pois gdircolors
este é o comando com o qual as portas do FreeBSD instalaram a diversão. Boa sorte para quem acabar tentando isso!
Aqui está um link para alguém baixando os coreutils via brew:
http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/
Responder4
Você pode instalar dircolors
a partir do pacote homebrew coreutils:
brew install coreutils
No entanto, os coreutils GNU não estão incluídos no arquivo PATH
por padrão. Edite seu ~/.zshrc
e ~/.bashrc
adicione:
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
Agora, depois de iniciar uma nova sessão de shell, dircolors
deve funcionar.