Como faço para que ls --color = auto trabalhe no Mac OS X?

71

Estou tentando mover minha configuração do bash do Ubuntu para o Mac OS X e parece que o ls é um pouco diferente. Por exemplo, ele não aceita a --coloropção.

Como faço para que isso funcione?

cfischer
fonte

Respostas:

79

lsé realmente separado do Bash. O Mac OS X possui uma versão BSD de ls, que requer -Gna linha de comando ou CLICOLOR(e talvez LSCOLORS) no ambiente.

Veja man lspara mais informações.

DoeNietZoMoeilijk
fonte
5
Idem. Eu coloquei alias ls='ls -G'no meu .bashrc no Snow Leopard.
Ayaz
Por algum motivo, CLICOLOR=Yparei de trabalhar no meu Mac. alias ls='ls -G'forçaria lsa colorir. Eu defino isso apenas para terminais interativos.
DKroot 15/10
31

Abra a janela do terminal e digite:

alias ls='ls -G'

Então bateu Entere pronto!

Safran Ali
fonte
10

Use Homebrew .

brew install coreutils

Observe que isso lançará um prefixo gna frente de todos os comandos (por exemplo, glspara ls). Ele oferece a opção de obter um arquivo que os alias automaticamente para você.

Eu não tinha certeza se havia uma opção para instalá-los diretamente, sem ter que fazer todo o alias, então instalei o MacPorts e fiz isso .

ifightcrime
fonte
11
A saída diz: Se você realmente precisa usar esses comandos com seus nomes normais, pode ... Por que isso realmente enfatiza ? Quais são as desvantagens?
Z0r 8/11
E você nunca arquivou sua página no archive.org e agora seu link no último parágrafo se foi
barlop 04/04
5

compatibilidade para GNU e * BSD / darwin ls

~ / .profile

#for *BSD/darwin
export CLICOLOR=1

ls --color=auto &> /dev/null && alias ls='ls --color=auto' ||

~ / .bashrc (não me lembro se o bash no Linux sempre lê ~ / .profile, mas não o meu zsh no ARCH)

[[ -f $HOME/.profile ]] && source $HOME/.profile
Victor Gavro
fonte
6
Você pode explicar esse código?
bwDraco
11
configurando a variável de ambiente CLICOLOR para os sistemas * BSD e Darwin - se estiver definido ls e possivelmente outros utilitários funcionarem em cores, mas o GNU ls (para Linux) a ignora. Se "ls --color = auto" não falhar (status de saída = 0) - temos a versão GNU de ls e criamos um alias para desenhar códigos de cores no modo interativo, se falhar - então não precisamos do alias por causa do CLICOLOR variável. "&> / dev / null" simplesmente não mostra stderr e stdout se algo falhar ou se estiver ok. Funciona para o meu linux e osx. (ps bash no osx e freebsd não lê .bashrc, coloque-o no .profile. já o corrigiu).
Victor Gavro
2

Você precisará instalar uma versão alternativa do ls. O normalmente usado no linux é do projeto GNU coreutils .

Você pode criar e instalar ou instalar a partir de macports , fink ou homebrew .

Doug Harris
fonte
4
Isso é um exagero, na minha opinião. Você não precisa instalar uma versão separada de lsquando o mesmo recurso é suportado de maneira um pouco diferente na versão existente do ls.
Ayaz
Bom ponto. Então, novamente, sl colorido nunca foi do meu gosto. alias ls='ls -F'
Doug Harris
alias ls='ls -FG'- é o melhor dos dois mundos!
Mipadi
11
Eu faço isso usando homebrew. Não é um exagero se você usa computadores Mac e * nix e deseja que seus terminais tenham a mesma aparência - isso permite que você use os mesmos arquivos de configuração em todos os computadores. Ele é instalado como glse não substitui o original, então não há realmente nenhuma desvantagem.
senderle
1

Eu uso esse script Perl que escrevi no AIX . É útil se você estiver em um sistema que não suporta --color, e também onde você não tem o sudo para instalar pacotes.

Também deve funcionar no Macintosh.

Erik Aronesty
fonte