Cores do terminal do OS X [fechado]

492

Eu sou novo no OS X, tendo acabado de adquirir um Mac depois de trabalhar com o Ubuntu Linux por algum tempo. Entre as muitas coisas que estou tentando descobrir, está a ausência de cores na minha janela do terminal - como as que são mostradas (no Linux) durante a execução ls -laou git status...

Eu simplesmente não consigo descobrir como ativar as cores no meu shell.

sa125
fonte
32
Fechado como "fora de tópico", mas veja as tags: osx, shell, terminal, cores ... parece-me que é totalmente sobre tópico. Abrange o OSX, trata-se do shell, usa o terminal e deseja adicionar cores. Tem que editar o perfil do bash, então sim, eu diria que é no tópico.
Danijel-James W
12
Claramente no tópico, trata-se de scripts bash.
superluminary
5
Fechado, você deve estar brincando! Claramente, isso tem utilidade e valor para muitos (principalmente novos) codificadores Mac. Se o fechamento é sério sobre o assunto estar fora de tópico, por que não migrá-lo para dizer SE Pense diferente. Entendo que SO suporta essa função usada em outros grupos SE.
Cam_Aust
Dê uma olhada nesta resposta: stackoverflow.com/a/48216286/3782119
Shayan Amani

Respostas:

745

Aqui está uma solução que encontrei para ativar as cores globais dos terminais .

Edite seu .bash_profile(desde o OS X 10.8) - ou (para 10.7 e versões anteriores): .profileou .bashrcou /etc/profile(dependendo da disponibilidade) - em seu diretório pessoal e adicione o seguinte código:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 simplesmente permite colorir o seu terminal.

LSCOLORS=... especifica como colorir itens específicos.

Após a edição .bash_profile, inicie um Terminal e force as alterações a serem executadas executando:

source ~/.bash_profile

Em seguida, vá para Terminal > Preferences, clique na Profilesguia, depois na Textsubguia e verifique Display ANSI Colors.

Verificado na Sierra (maio de 2017).

LuckyMalaka
fonte
21
apenas fiz isso adicionando-o ao .bash_profile e ele funciona. não funcionou quando eu o adicionei ao .profile. Obrigado!
Morten
10
Acabei de editar o meu /etc/profilee funciona como um encanto.
precisa saber é o seguinte
2
Para o @Morten e quaisquer outros que estejam lutando com seus perfis do bash, consulte estas respostas para obter uma explicação e uma solução: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson.
4
dotfiles / .aliases tem uma grande export LS_COLORSdeclaração
bobobobo
16
Se você quiser as mesmas cores que o Linux usa (pelo menos Debian e Ubuntu), useLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Você pode usar a sintaxe baseada em Linux em um de seus scripts de inicialização. Acabei de testar isso em uma caixa do OS X Mountain Lion.

por exemplo. na tua~/.bash_profile

export TERM="xterm-color" 
export PS1='\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Isso fornece um bom prompt colorido. Para adicionar a lssaída colorida , você pode adicionar alias ls="ls -G".

Para testar, basta executar a source ~/.bash_profilepara atualizar seu terminal atual.

Nota lateral sobre as cores: As cores são precedidas por uma sequência de escape \ee definidas por um valor de cor, composto [style;color+m]e envolvido em uma []sequência de escape . por exemplo.

  • vermelho = \[\e[0;31m\]
  • negrito vermelho (estilo 1) = \[\e[1;31m\]
  • coloração clara = \[\e[0m\]

Eu sempre adiciono um esquema de cores ligeiramente modificado no .bash_profile da raiz para tornar o nome de usuário vermelho, para que eu sempre veja claramente se estou logado como root (útil para evitar erros se houver muitas janelas de terminal abertas).

Em /root/.bash_profile:

PS1='\[\e[0;31m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Para todas as minhas contas SSH online, certifique-se de colocar o nome do host em vermelho, para distinguir se estou em um terminal local ou remoto. Basta editar o .bash_profilearquivo em seu diretório pessoal no servidor. Se não houver nenhum .bash_profilearquivo no servidor, você poderá criá-lo e ele deverá ser originado no login.

Se isso não funcionar como o esperado, leia alguns dos comentários abaixo, pois não uso o MacOS com muita frequência.

Se você quiser fazer isso em um servidor remoto, verifique se o ~/.bash_profilearquivo existe. Caso contrário, basta criá-lo e ele deverá ser originado automaticamente no próximo login.

4 níveis
fonte
2
como você edita bash_profile para contas ssh online?
Andy
1
Eu gosto PS1melhor com $PWDem vez de \u, como tal:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox
1
Aqui estão mais algumas explicações dos códigos para o prompt: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK
1
Esses links também podem ser úteis: Sequências de escape do código de cores ANSI . Mais sobre códigos PS1 .
JohnK
1
Eu estava com problemas para exibir as cores PROMPT_COMMAND corretamente no El Capitan (OS X 10.11) usando esses códigos de cores. Acontece que, quando usado PROMPT_COMMAND, você precisa usar a \033sintaxe em vez de \e. Exemplo para adicionar um carimbo de data / hora colorido antes do prompt (inclua isso no seu ~/.bashrcou ~/.bash_profile):PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
user5359531
42

Os métodos MartinVonMartinsgrün e 4Levels confirmaram um ótimo trabalho no Mac OS X Mountain Lion.

O arquivo que eu precisava atualizar era ~ / .profile.

No entanto, não consegui sair desta pergunta sem recomendar meu aplicativo favorito, o iTerm 2 .

O iTerm 2 permite carregar esquemas de cores globais de um arquivo. Realmente fácil de experimentar e experimentar vários esquemas de cores.

Aqui está uma captura de tela da janela do iTerm 2 e as preferências de cores. Screenshot do iTerm2 Color Preferences Mac

Depois de adicionar o seguinte ao meu arquivo ~ / .profile, o iTerm 2 foi capaz de substituir as cores.

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Aqui está um ótimo repositório com algumas predefinições legais:

Esquemas de cores do iTerm2 no Github por mbadolato

Bônus: Escolha "Mostrar / ocultar o iTerm2 com uma tecla de atalho em todo o sistema" e vincule a chave ao BetterTouchTool para ocultar / mostrar instantaneamente o terminal com um gesto do mouse.

Nick Woodhams
fonte
1
O iTerm2 travava frequentemente no meu sistema, então mudei para oh-my-zsh github.com/robbyrussell/oh-my-zsh . Também há temas disponíveis
LuckyMalaka 11/11
Ei! Altere o baskervillelink para o correto. Parece copiar e colar errado.
Jevgeni Smirnov
@NickWoodhams, qual é o tema de cores que você está usando na captura de tela?
Indradhanush Gupta
1
@IndradhanushGupta Não sei ao certo qual esquema de cores foi, isso foi há um tempo atrás. Mas agora estou usando o tema Pure ZSH e adorando. github.com/sindresorhus/pure
Nick Woodhams
1
este é um esquema de cores agradável e que eu precisava para verificar os itens tipos // dirs e etc
Rio
17

Se você quiser que seus ls sejam coloridos, edite o arquivo ~ / .bash_profile e adicione a seguinte linha (se ainda não estiver gravada):

source .bashrc

Em seguida, edite ou crie o arquivo ~ / .bashrc e escreva um alias para o comando ls:

alias ls="ls -G"

Agora você precisa digitar source .bashrc um terminal, se já estiver iniciado, ou simplesmente abrir um novo terminal.

Se você quiser mais opções em seu lsjuste, leia o manual ( man ls). As opções não são exatamente as mesmas que em um sistema GNU / Linux.

Marcio
fonte
6
Uma opção um pouco melhor é substituir a definição de 'alias' por 'export CLICOLOR = ""'. Isso tem a vantagem de continuar trabalhando normalmente, mesmo se você alternar shells durante uma sessão de terminal (desde que as variáveis ​​de ambiente sejam herdadas - os aliases não).
Ned Deily
5

Se você estiver usando o tcsh, edite seu ~/.cshrcarquivo para incluir as linhas:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Onde, como Martin diz, LSCOLORS especifica o esquema de cores que você deseja usar.

Para gerar os LSCOLORS que você deseja usar, confira este site

smaccoun
fonte
4
bashtem sido o padrão no OS X desde Outubro de 2003.
nelsonjchen
1
Eu acho que você está certo. Acabei de receber um novo mac e ele tinha o bash como padrão. Eu acho que a TI continuou configurando meus macs no trabalho para ter o tcsh por padrão.
Smaccoun 7/03/2019
1
O link é simplesmente fantástico!
21716 Sankalp
4

Verifique o que o $ TERM fornece: o meu é xterm-color e ls -alG, em seguida, produz resultados coloridos.

William Rose
fonte
bem, no Capitólio xterm-256color, não tenho cores. CLICOLORe LSCOLORSnão mude isso):
drevicko 18/07
2

Quando trabalhei no Mac OS X no laboratório, consegui obter as cores do terminal usando o Terminal (em vez do X11) e editando o perfil (na barra de menus do Mac). A interface é um pouco estranha nas cores, mas você deve definir o tema modificado como padrão.

Outras configurações trabalhadas pela edição .bashrc.

ccook
fonte