Couleurs des terminaux OS X [fermé]

492

Je suis nouveau sur OS X, je viens d'obtenir un Mac après avoir travaillé avec Ubuntu Linux pendant un certain temps. Parmi les nombreuses choses que j'essaie de comprendre, il y a l'absence de couleurs dans ma fenêtre de terminal - comme celles qui sont affichées (sous Linux) lors de l'exécution ls -laou git status...

Je n'arrive pas à comprendre comment activer les couleurs dans ma coque.

sa125
la source
32
Fermé comme "hors sujet" mais regardez les balises: osx, shell, terminal, couleurs ... il me semble que c'est totalement sur le sujet. Couvre OSX, il s'agit du shell, de l'utilisation du terminal et veut ajouter des couleurs. Je dois modifier le profil bash, alors oui, je dirais que c'est sur le sujet.
Danijel-James W
12
Clairement, il s'agit de script bash.
superluminaire
5
Fermé, vous plaisantez! De toute évidence, cela a une utilité et une valeur pour de nombreux codeurs Mac (pour la plupart nouveaux). Si ceux qui clôturent sont sérieux à l'idée qu'il soit hors sujet, alors pourquoi ne pas le migrer pour dire SE Think Different. Je suppose que SO prend en charge cette fonction utilisée dans d'autres groupes SE.
Cam_Aust
jetez un oeil à cette réponse: stackoverflow.com/a/48216286/3782119
Shayan Amani

Réponses:

745

Voici une solution que j'ai trouvée pour activer les couleurs globales des terminaux .

Modifiez votre .bash_profile(depuis OS X 10.8) - ou (pour 10.7 et versions antérieures): .profileou .bashrcou /etc/profile(selon la disponibilité) - dans votre répertoire personnel et ajoutez le code suivant:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 permet simplement de colorer votre terminal.

LSCOLORS=... spécifie comment colorer des éléments spécifiques.

Après la modification .bash_profile, démarrez un terminal et forcez les modifications à s'exécuter en exécutant:

source ~/.bash_profile

Allez ensuite sur Terminal > Preferences, cliquez sur l' Profilesonglet puis sur le sous- onglet Textet vérifiez Display ANSI Colors.

Vérifié sur Sierra (mai 2017).

LuckyMalaka
la source
21
vient de le faire en l'ajoutant à .bash_profile et cela fonctionne. n'a pas fonctionné quand je l'ai ajouté au .profile. Merci!
Morten
10
Je viens de modifier mon /etc/profileet ça fonctionne comme un charme.
Cyclonecode
2
Pour @Morten et toutes les autres personnes aux prises avec leur profil bash, consultez ces réponses pour obtenir une explication et une solution: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson le
4
dotfiles / .aliases a une grande export LS_COLORSdéclaration
bobobobo
16
Si vous voulez les mêmes couleurs que Linux utilise (au moins Debian et Ubuntu), utilisezLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Vous pouvez utiliser la syntaxe basée sur Linux dans l'un de vos scripts de démarrage. Je viens de le tester sur une box OS X Mountain Lion.

par exemple. dans ton~/.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\]\$ '

Cela vous donne une belle invite colorée. Pour ajouter la lssortie colorée , vous pouvez ajouter alias ls="ls -G".

Pour tester, lancez simplement un source ~/.bash_profilepour mettre à jour votre terminal actuel.

Note latérale sur les couleurs: Les couleurs sont précédées d'une séquence d'échappement \eet définies par une valeur de couleur, composée [style;color+m]et enveloppée dans une []séquence d' échappement . par exemple.

  • rouge = \[\e[0;31m\]
  • rouge gras (style 1) = \[\e[1;31m\]
  • coloration claire = \[\e[0m\]

J'ajoute toujours un jeu de couleurs légèrement modifié dans le fichier .bash_profile de la racine pour rendre le nom d'utilisateur rouge, donc je vois toujours clairement si je suis connecté en tant que root (pratique pour éviter les erreurs si j'ai beaucoup de fenêtres de terminal ouvertes).

Dans /root/.bash_profile:

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

Pour tous mes comptes SSH en ligne, je m'assure de mettre le nom d'hôte en rouge, pour distinguer si je suis dans un terminal local ou distant. Modifiez simplement le .bash_profilefichier dans votre répertoire personnel sur le serveur. S'il n'y a pas de .bash_profilefichier sur le serveur, vous pouvez le créer et il devrait être obtenu lors de la connexion.

Si cela ne fonctionne pas comme prévu, veuillez lire certains des commentaires ci-dessous car je n'utilise pas souvent MacOS ..

Si vous souhaitez le faire sur un serveur distant, vérifiez si le ~/.bash_profilefichier existe. Sinon, créez-le simplement et il devrait être automatiquement généré lors de votre prochaine connexion.

4 niveaux
la source
2
comment éditez-vous bash_profile pour les comptes ssh en ligne?
Andy
1
J'aime PS1mieux avec $PWDau lieu de \u, comme tel:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox
1
Voici quelques explications supplémentaires sur les codes de l'invite: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK
1
Ces liens peuvent également être utiles: séquences d'échappement de code couleur ANSI . Plus d'informations sur les codes PS1 .
JohnK
1
J'avais des problèmes pour que les couleurs PROMPT_COMMAND s'affichent correctement dans El Capitan (OS X 10.11) en utilisant ces codes de couleur. Il s'avère que lorsqu'il est utilisé dans PROMPT_COMMAND, vous devez utiliser la \033syntaxe au lieu de \e. Exemple pour ajouter un horodatage coloré avant votre invite (incluez-le dans votre ~/.bashrcou ~/.bash_profile):PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
user5359531
42

Les méthodes MartinVonMartinsgrün et 4Levels ont confirmé leur excellent fonctionnement sur Mac OS X Mountain Lion.

Le fichier que j'avais besoin de mettre à jour était ~ / .profile.

Cependant, je ne pouvais pas laisser cette question sans recommander mon application préférée, iTerm 2 .

iTerm 2 vous permet de charger des schémas de couleurs globales à partir d'un fichier. Vraiment facile à expérimenter et à essayer un tas de combinaisons de couleurs.

Voici une capture d'écran de la fenêtre iTerm 2 et des préférences de couleur. Capture d'écran des préférences de couleur iTerm2 Mac

Une fois que j'ai ajouté ce qui suit à mon fichier ~ / .profile, iTerm 2 a pu remplacer les couleurs.

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

Voici un excellent référentiel avec de jolis presets:

Schémas de couleurs iTerm2 sur Github par mbadolato

Bonus: choisissez "Afficher / masquer iTerm2 avec un raccourci clavier à l'échelle du système" et liez la clé avec BetterTouchTool pour un masquage / affichage instantané du terminal avec un geste de souris.

Nick Woodhams
la source
1
iTerm2 s'est souvent écrasé sur mon système, alors je suis passé à oh-my-zsh github.com/robbyrussell/oh-my-zsh . Il y a aussi des thèmes disponibles
LuckyMalaka
Hey! Veuillez changer le baskervillelien en un lien approprié. Semble mauvais copier-coller.
Jevgeni Smirnov
@NickWoodhams, quel est le thème de couleur que vous utilisez dans la capture d'écran?
Indradhanush Gupta
1
@IndradhanushGupta Je ne sais pas quel schéma de couleurs c'était, il y a quelque temps. Mais maintenant j'utilise le thème Pure ZSH et je l'adore. github.com/sindresorhus/pure
Nick Woodhams
1
c'est une belle palette de couleurs et ce dont j'avais besoin pour vérifier les types d'articles // dirs et etc
rio
17

Si vous souhaitez coloriser votre ls, vous devez éditer votre fichier ~ / .bash_profile et ajouter la ligne suivante (si elle n'est pas déjà écrite):

source .bashrc

Ensuite, vous modifiez ou créez le fichier ~ / .bashrc et écrivez un alias dans la commande ls:

alias ls="ls -G"

Vous devez maintenant taper source .bashrcun terminal s'il est déjà lancé, ou simplement ouvrir un nouveau terminal.

Si vous voulez plus d'options dans votre lsjuste, lisez le manuel ( man ls). Les options ne sont pas exactement les mêmes que dans un système GNU / Linux.

Marcio
la source
6
Une option un peu meilleure consiste à remplacer la définition de 'alias' par 'export CLICOLOR = ""'. Cela présente l'avantage de continuer à fonctionner même si vous changez de shell pendant une session de terminal (tant que les variables d'environnement sont héritées - les alias ne le sont pas).
Ned Deily
5

Si vous utilisez tcsh, modifiez votre ~/.cshrcfichier pour inclure les lignes:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Où, comme le dit Martin, LSCOLORS spécifie le jeu de couleurs que vous souhaitez utiliser.

Pour générer les LSCOLORS que vous souhaitez utiliser, consultez ce site

smaccoun
la source
4
bashest la valeur par défaut sous OS X depuis octobre 2003.
nelsonjchen
1
Je pense que tu as raison. Je viens de recevoir un nouveau mac et il avait bash par défaut. Je suppose que l'informatique a continué à configurer mes macs au travail pour avoir tcsh par défaut.
smaccoun
1
Le lien est tout simplement génial!
Sankalp
4

Vérifiez ce que $ TERM donne: le mien est xterm-color et ls -alG fait ensuite une sortie colorisée.

William Rose
la source
eh bien, sur capitan avec xterm-256color, je n'ai pas de couleurs. CLICOLORet LSCOLORSne changez pas cela):
drevicko
2

Lorsque j'ai travaillé sur Mac OS X dans le laboratoire, j'ai pu obtenir les couleurs du terminal en utilisant Terminal (plutôt que X11), puis en modifiant le profil (à partir de la barre de menus Mac). L'interface est un peu étrange sur les couleurs, mais vous devez définir le thème modifié par défaut.

D'autres paramètres ont fonctionné en modifiant .bashrc.

ccook
la source