Colori terminali OS X [chiuso]


492

Sono nuovo di OS X, avendo appena ottenuto un Mac dopo aver lavorato con Ubuntu Linux per qualche tempo. Tra le molte cose che sto cercando di capire è l'assenza di colori nella finestra del mio terminale - come quelli che vengono mostrati (su Linux) durante l'esecuzione ls -lao git status...

Non riesco proprio a capire come attivare i colori nella mia shell.



32
Chiuso come "off topic" ma guarda i tag: osx, shell, terminal, colors ... mi sembra che sia totalmente in tema. Copre OSX, riguarda la shell, usa il terminale e vuole aggiungere colori. Devo modificare il profilo bash, quindi sì, direi che è in argomento.
Danijel-James W,

12
Chiaramente sull'argomento, si tratta di script bash.
superluminario,

5
Chiuso, stai scherzando! Chiaramente questo ha utilità e valore per molti (per lo più nuovi) programmatori Mac. Se quelli di chiusura sono seri sul fatto che è fuori tema, allora perché non migrarlo per dire SE pensa diversamente. Lo prendo così supporta quella funzione utilizzata in altri gruppi SE.
Cam_agosto

dai un'occhiata a questa risposta: stackoverflow.com/a/48216286/3782119
Shayan Amani

Risposte:


745

Ecco una soluzione che ho trovato per abilitare i colori dei terminali globali .

Modifica il tuo .bash_profile(da OS X 10.8) - o (per 10.7 e precedenti): .profileo .bashrco /etc/profile(a seconda della disponibilità) - nella tua home directory e aggiungi il seguente codice:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 consente semplicemente la colorazione del terminale.

LSCOLORS=... specifica come colorare elementi specifici.

Dopo la modifica .bash_profile, avvia un Terminale e imponi che le modifiche vengano eseguite eseguendo:

source ~/.bash_profile

Quindi vai a Terminal > Preferences, fai clic sulla Profilesscheda, quindi sulla Textsottoscheda e seleziona Display ANSI Colors.

Verificato su Sierra (maggio 2017).


21
ho appena fatto questo aggiungendolo a .bash_profile e funziona. non ha funzionato quando l'ho aggiunto a .profile però. Grazie!
Morten,

10
Ho appena modificato il mio /etc/profilee funziona come un fascino.
ciclico

2
Per @Morten e tutti gli altri alle prese con i loro profili bash, vedere queste risposte per una spiegazione e una soluzione: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson

4
dotfiles / .aliases ha una grande export LS_COLORSaffermazione
bobobobo il

16
Se vuoi gli stessi colori che usa Linux (almeno Debian e Ubuntu), usaLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram

125

È possibile utilizzare la sintassi basata su Linux in uno degli script di avvio. Ho appena provato questo su una scatola OS X Mountain Lion.

per esempio. nella 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\]\$ '

Questo ti dà un bel prompt colorato. Per aggiungere l' lsoutput colorato , è possibile aggiungere alias ls="ls -G".

Per testare, basta eseguire a source ~/.bash_profileper aggiornare il terminale corrente.

Nota a margine sui colori: i colori sono preceduti da una sequenza di escape \ee definiti da un valore di colore, composto [style;color+m]e avvolto in una []sequenza di escape . per esempio.

  • rosso = \[\e[0;31m\]
  • grassetto rosso (stile 1) = \[\e[1;31m\]
  • colorazione chiara = \[\e[0m\]

Aggiungo sempre una combinazione di colori leggermente modificata nel .bash_profile del root per rendere rosso il nome utente, quindi vedo sempre chiaramente se sono loggato come root (utile per evitare errori se ho molte finestre aperte).

In /root/.bash_profile:

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

Per tutti i miei account SSH online, mi assicuro di mettere il nome host in rosso, per distinguere se mi trovo in un terminale locale o remoto. Modifica semplicemente il .bash_profilefile nella tua home directory sul server .. Se non ci sono .bash_profilefile sul server, puoi crearlo e dovrebbe essere di provenienza all'accesso.

Se questo non funziona come previsto, ti preghiamo di leggere alcuni dei commenti qui sotto poiché non sto usando MacOS molto spesso ..

Se vuoi farlo su un server remoto, controlla se il ~/.bash_profilefile esiste. In caso contrario, basta crearlo e dovrebbe essere automaticamente acquisito al tuo prossimo accesso.


2
come si modifica bash_profile per gli account ssh online?
Andy,

1
Mi piace di PS1più $PWDinvece che \u, in quanto tale:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox,

1
Ecco qualche altra spiegazione dei codici per il prompt: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK,

1
Questi collegamenti potrebbero anche essere utili: sequenze di escape del codice colore ANSI . Altro su codici PS1 .
JohnK,

1
Ho riscontrato problemi durante la visualizzazione corretta dei colori PROMPT_COMMAND in El Capitan (OS X 10.11) utilizzando questi codici colore. Si scopre che quando utilizzato in PROMPT_COMMAND, è necessario utilizzare la \033sintassi anziché \e. Esempio per aggiungere un timestamp colorato prima del tuo prompt ( ~/.bashrc~/.bash_profilePROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
includilo

42

I metodi MartinVonMartinsgrün e 4Levels hanno confermato che funzionano alla grande su Mac OS X Mountain Lion.

Il file che dovevo aggiornare era ~ / .profile.

Tuttavia, non potevo lasciare questa domanda senza raccomandare la mia applicazione preferita, iTerm 2 .

iTerm 2 ti consente di caricare combinazioni di colori globali da un file. Davvero facile da sperimentare e provare un sacco di combinazioni di colori.

Ecco uno screenshot della finestra iTerm 2 e le preferenze di colore. Schermata Preferenze colore iTerm2 Mac

Una volta ho aggiunto quanto segue al mio file ~ / .profile iTerm 2 è stato in grado di sovrascrivere i colori.

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

Ecco un ottimo repository con alcuni preset carini:

Combinazioni di colori iTerm2 su Github di mbadolato

Bonus: Scegli "Mostra / nascondi iTerm2 con un tasto di scelta rapida a livello di sistema" e collega la chiave con BetterTouchTool per nascondere / mostrare istantaneamente il terminale con un gesto del mouse.


1
iTerm2 si è schiantato spesso sul mio sistema, quindi sono passato a oh-my-zsh github.com/robbyrussell/oh-my-zsh . Ci sono anche temi disponibili
LuckyMalaka,

Hey! Si prega di cambiare il baskervillelink in uno corretto. Sembra errato copia-incolla.
Jevgeni Smirnov,

@NickWoodhams, qual è il tema colore che stai usando nello screenshot?
Indradhanush Gupta,

1
@IndradhanushGupta Non sono sicuro di quale combinazione di colori fosse, è stato qualche tempo fa. Ma ora sto usando il tema Pure ZSH e lo adoro. github.com/sindresorhus/pure
Nick Woodhams,

1
questa è una bella combinazione di colori e ciò di cui avevo bisogno per controllare i tipi di articoli // dirs ed ecc
rio

17

Se vuoi che il tuo colore sia colorato devi modificare il tuo file ~ / .bash_profile e aggiungere la seguente riga (se non è già stata scritta):

source .bashrc

Quindi modifichi o crei il file ~ / .bashrc e scrivi un alias al comando ls:

alias ls="ls -G"

Ora devi digitare source .bashrcun terminale se già avviato, o semplicemente aprire un nuovo terminale.

Se vuoi più opzioni nel tuo lsjuste leggi il manuale ( man ls). Le opzioni non sono esattamente le stesse di un sistema GNU / Linux.


6
Un'opzione leggermente migliore è quella di sostituire la definizione 'alias' con 'export CLICOLOR = ""'. Questo ha il vantaggio di continuare a funzionare normalmente anche se si cambiano shell durante una sessione terminale (purché le variabili di ambiente siano ereditate - gli alias no).
Ned Deily,

5

Se stai usando tcsh, modifica il tuo ~/.cshrcfile per includere le righe:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Dove, come dice Martin, LSCOLORS specifica la combinazione di colori che si desidera utilizzare.

Per generare gli LSCOLORI che desideri utilizzare, consulta questo sito


4
bashè stato il default in OS X dall'ottobre 2003.
nelsonjchen,

1
Penso tu abbia ragione. Ho appena ricevuto un nuovo mac e aveva bash come impostazione predefinita. Immagino che l'IT abbia continuato a configurare i miei mac al lavoro per avere tcsh di default.
smaccoun

1
Il link è semplicemente fantastico!
Sankalp,

4

Controlla cosa dà $ TERM: il mio è xterm-color e ls -alG quindi produce un output colorato.


beh, su capitan con xterm-256color, non ho colori. CLICOLORe LSCOLORSnon cambiarlo):
drevicko, il

2

Quando ho lavorato su Mac OS X in laboratorio sono stato in grado di ottenere i colori del terminale utilizzando Terminal (anziché X11) e modificando il profilo (dalla barra dei menu del Mac). L'interfaccia è un po 'strana sui colori, ma devi impostare il tema modificato come predefinito.

Ulteriori impostazioni hanno funzionato modificando .bashrc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.