Bash shell de cores no Mac?

8

Como você pode fazer um shell bash listar arquivos executáveis ​​em uma cor diferente dos arquivos não executáveis?

Tentei editar ~/.bashrcpara conter a seguinte linha (caso contrário, está vazia):

 LS_OPTIONS='--color=auto'

Mas não está funcionando. O que estou fazendo errado? Estou trabalhando no Mac OS X.

AP257
fonte

Respostas:

7

Para ativar a saída em cores do lscomando sem precisar criar um alias lsou fazer download de qualquer software adicional, adicione o seguinte ao seu ~/.bash_profile:

# Terminal colours
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

Se você não gosta dessas cores, pode usar este gerador de cores sl para personalizar essa lista de cores ao seu gosto.

Você precisará fazer:

source ~/.bash_profile

Após fazer as alterações para que entrem em vigor no shell existente.

Ian C.
fonte
Não, isso não ajuda em todos os
holms
6

O problema é que o OS X não possui GNU ls; embora lsele suporte a coloração do nome do arquivo, ele só pode ser feito pelo tipo de arquivo (arquivo, diretório, link simbólico, arquivo especial do dispositivo, fifo, soquete ...). Instale coreutilsno Fink / MacPorts / HomeBrew e use alias ls='gls --color=auto'.

geekosaur
fonte
Obrigado. Eu instalei coreutilsdo MacPorts. A aliaslinha deve estar dentro ~/.bashrc? É onde eu coloquei, mas não estou vendo nenhuma diferença.
AP257 22/03/11
~/.bash_aliasespode funcionar melhor. Também descobri que precisava correr eval $(gdircolors -s)para configurá-lo.
Geekosaur
@ AP257: No meu Mac, eu coloquei aliases no .bash_profile
Hai Vu
@Hai Vu: Isso só funciona se você nunca usar sub-conchas.
geekosaur 29/03
@geekosaur gdircolors: invalid option -- 's'você quer dizer --sh?
Anentropic
6

BSD ls funciona um pouco diferente

alias ls='ls -G'

Deveria trabalhar.

E isso não é uma coloração festiva, está lsfazendo a colorização. Quando o bash faz uma lista de arquivos (tente echo *em um diretório), não há como colorir. A digitação ls -Gfuncionaria em qualquer shell, embora um shell (como o bash) que possua aliases o facilite.

Rich Homolka
fonte
6

No Mac, você precisa usar

export CLICOLOR=1

Coloquei isso no .bash_profile. No entanto, prefiro a solução de Rich Homolka ao pseudônimo ls com a flag -G. Se você deseja personalizar as cores:

man ls

e pesquise LSCOLORS

Hai Vu
fonte
1

Considere instalar brewe usar a versão GNU de ls e outras ferramentas.

Instale o XCode na AppStore.

Instale o Homebrew ...

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Instale coreutils ...

brew install coreutils

Adicione ao fundo do seu .profile...

export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

Eu alias lsno meu .profilepara fazer cores para tudo e um atalho para a lista completa.

alias ls='ls --color'
alias l='ls -lah'
# -l     use a long listing format
# -a     do not ignore entries starting with .
# -h     with -l and/or -s, print human readable sizes (e.g., 1K 234M 2G)

Existem váriasLS_COLORS opções no github .

Paul J
fonte
-1

bashé apenas um shell, ele não lista arquivos. Ele executa comandos, como ls.

A --coloropção (e opções longas em geral) é específica da versão lsdo GNU coreutils , que vem com a maioria das distribuições Linux. Por outro lado, o Mac OS X tem raízes BSD e usa a versão BSD da lsqual não suporta cores.

user1686
fonte
1
-1: Ele faz apoio coloração, apenas com uma bandeira de linha de comando diferente: -G.
Wuffers 29/03