Como posso configurar o Mac Terminal para ter saída ls colorida?

336

Como posso configurar o Mac Terminal para ter saída ls colorida? Estou usando o MacOS 10.5

bmike
fonte
5
Essa é uma ótima pergunta ... Eu sempre esperei que o ls --color (à la gnu ls) funcionasse em todos os lugares. O MacOS não aceita --color, então eu assumi que não tinha saída colorida como uma opção.
Armentage

Respostas:

370

Editar:

~/.bash_profile

ou

~/.profile

e adicione a seguinte linha para simplesmente ativar a saída colorida via ls:

export CLICOLOR=1

Para personalizar a coloração mostrada, lsvocê pode opcionalmente adicionar esta variável LSCOLORS,.

Exemplos

  • Padrão

    export LSCOLORS=ExFxCxDxBxegedabagacad
  • Você pode usar isso se estiver usando um fundo preto

    export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
  • Se você deseja imitar as cores de um terminal Linux típico:

    export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd

Depois de adicionar o item acima a, ~/.bash_profileou ~/.profilevocê pode sair / fazer login ou obter o arquivo no seu shell, por exemplo:

$ . ~/.bash_profile

NOTA: Se precisar de ajuda para selecionar as cores a serem usadas, você pode usar esta ferramenta on-line chamada LSCOLORS Generator .

slm
fonte
Existe uma maneira de fazer com que o texto colorido não fique em negrito?
MemphiZ
1
@JamieCook Acho as cores do Mikulas mais consistentes em linux. Especificamente, um link simbólico quebrado deve ser vermelho escuro. Com suas cores azuis, isso não é um problema pequeno.
Raio Foss
1
Não funciona no mac sierra e depois #
Stevie G
1
@RayFoss, de fato, isso não é um problema pequeno, mas o OS X não pode fazer a diferença entre links simbólicos válidos e quebrados por padrão. A única alternativa viável é usar gnu ls
Ciprian Tomoiagă 08/08
2
@StevieG Trabalha para mim em High Sierra. Certifique-se de configurá-lo corretamente: echo $CLICOLORdeve dar 1?
Franklin Yu
192

Você pode adicionar

alias ls='ls -G'

ao seu ~/.bash_profilepara obter uma lssaída colorida .

Barry Wark
fonte
41
O meu é alias ls = "ls -Gp" - o -p adiciona uma barra após cada diretório. Para mim, fornece muito mais diferenciação visual, o que é útil.
Quinn Taylor
39
Eu vejo o seu -pe o levo a um -Fque, além disso, coloca um *executável |após , depois de pipes, @depois de links simbólicos, etc.
25
Apenas por diversão, jogar em um -h, que irá formatar tamanhos em unidades "humanos legível", 10k ou seja, 100b, 23m, 4.2g
Armentage
3
Se você ainda não possui um .bash_profile em ~ / .bash_profile, certifique-se de fonte, para que ele funcione. Faça isso com "source ~ / .bash_profile"
y3sh
2
Não sei se isso mudou desde 2011, mas você pode substituir o alias por export CLICOLOR=1para realizar a mesma coisa.
David Lord
25

Acho que tudo o que preciso realmente é adicionar isso ao meu ~/.bash_profile

export CLICOLOR=1
Filype
fonte
Or ~/.bashrc.
Chris Page
parece não funcionar em capitan):
drevicko
1
Trabalhou como um chefe em El Captian para mim, obrigado por postar @Filype
fusion27
Você deve: 1. fechar o terminal e reabrir, 2. colocar recursos no arquivo de configuração: . ~/.bash_profileou 3. logout / login
slm
13

Se você deseja um esquema de cores legível para o Mac OS X Terminal, consulte:

Estou usando isso há mais de um ano e talvez não consiga funcionar sem ele!

Aqui está um link atualizado:

Jeff
fonte
6
A partir do Mac OS X Lion 10.7, o Terminal permite personalizar as cores ANSI; portanto, o uso do SIMBL ou de outras extensões não é mais necessário. Ele também suporta 256 cores.
Chris Página
12

Além disso, você pode personalizar a cor do prompt (e seu formato) adicionando:

PS1='\[\e[0;33m\]\h:\W \u\$\[\e[m\] '

para ~/.bash_profileou ~/.profilearquivo. Onde 0;33está o amarelo comum que fica bem na minha janela de terminal preto / semitransparente.

Aqui está uma lista completa de cores e suas explicações: https://wiki.archlinux.org/index.php/Color_Bash_Prompt

Minha incrível janela do terminal

nacho4d
fonte
8

Outra opção é usar o GNU, lsque faz parte do programa 'coreutils'.

Você pode obtê-lo via Rudix ou Homebrew ( brew info coreutils) ou Macports ou Fink. Talvez seja preferível usar uma solução "somente Mac OS X" se você usar os mesmos arquivos de configuração de shell em sistemas diferentes ou se já estiver familiarizado com o GNU ls.

TJ Luoma
fonte
7

Pessoalmente, estou usando o Oh My Zsh para adicionar cores e outros truques ao meu Terminal. Eu acho que é a maneira mais fácil.

oh-my-zsh é uma estrutura de código aberto, orientada pela comunidade, para gerenciar sua configuração do Zsh.

Ele vem com várias funções úteis, ajudantes, plugins, temas e algumas coisas que fazem você gritar ...

insira a descrição da imagem aqui

StrawHara
fonte
4

Basta adicionar a seguinte linha ao ~/.bash_profilearquivo:

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

Pré-visualização: insira a descrição da imagem aqui

Esta é a minha cor preferida. Você pode personalizar cada parte da cor do prompt alterando os mcódigos (por exemplo 34m) que são códigos de cores ANSI.

Lista de códigos de cores ANSI:

  • Preto: 30m
  • Vermelho: 31m
  • Verde: 32m
  • Amarelo: 33m
  • Azul: 34m
  • Roxo: 35m
  • Ciano: 36m
  • Branco: 37m
Shayan Amani
fonte
4

Combinando todas as respostas aqui é o que eu uso:

COLOR_RED="\033[0;31m"
COLOR_YELLOW="\033[0;33m"
COLOR_GREEN="\033[0;32m"
COLOR_OCHRE="\033[38;5;95m"
COLOR_BLUE="\033[0;34m"
COLOR_WHITE="\033[0;37m"
COLOR_RESET="\033[0m"

#git_color
function git_color {
  local git_status="$(git status 2> /dev/null)"

  if [[ ! $git_status =~ "working directory clean" ]]; then
    echo -e $COLOR_RED
  elif [[ $git_status =~ "Your branch is ahead of" ]]; then
    echo -e $COLOR_YELLOW
  elif [[ $git_status =~ "nothing to commit" ]]; then
    echo -e $COLOR_GREEN
  else
    echo -e $COLOR_OCHRE
  fi
}

#git_branch
function git_branch {
  local git_status="$(git status 2> /dev/null)"
  local on_branch="On branch ([^${IFS}]*)"
  local on_commit="HEAD detached at ([^${IFS}]*)"

  if [[ $git_status =~ $on_branch ]]; then
    local branch=${BASH_REMATCH[1]}
    echo "($branch)"
  elif [[ $git_status =~ $on_commit ]]; then
    local commit=${BASH_REMATCH[1]}
    echo "($commit)"
  fi
}

PS1='\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]'
PS1+="\[\$(git_color)\]"        # colors git status
PS1+="\$(git_branch)"           # prints current branch
PS1+="\[$COLOR_BLUE\]\[$COLOR_RESET\]\$ "
export PS1

export LC_ALL=en_US.UTF-8
export CLICOLOR=1
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
alias ls="ls -Gp"

insira a descrição da imagem aqui

Sand1512
fonte
3

Esqueça todos esses códigos enigmáticos de décadas atrás, pelo amor de Deus, use o painel Terminal -> Preferências ... Configurações para definir a aparência padrão e edite as cores ANSI ao seu gosto. Você também pode definir a fonte. Eu prefiro Menlo 12pt. É assim que qualquer Joe comum pode fazê-lo, e evita toda a maneira louca de linha de comando e estilo unix, como as outras pessoas sugeriram.

Geoff Hoffman
fonte
12
Eu acho que alguém experiente o suficiente para saber que lspode ter saída colorida também é capaz de executar alguns comandos Unix para configurá-lo corretamente.
nohillside
7
Mas isso só faz ls mostrar em uma cor não faz links, diretórios, arquivos mostram em cores diferentes como ls pode fazer
Mark