OS X Terminalfarben [geschlossen]

492

Ich bin neu in OS X und habe gerade einen Mac bekommen, nachdem ich einige Zeit mit Ubuntu Linux gearbeitet habe. Unter den vielen Dingen, die ich herausfinden möchte, ist das Fehlen von Farben in meinem Terminalfenster - wie die, die (unter Linux) beim Ausführen angezeigt werden ls -laoder git status...

Ich kann einfach nicht herausfinden, wie ich Farben in meiner Shell aktivieren kann.

sa125
quelle
32
Geschlossen als "Off Topic", aber schauen Sie sich die Tags an: Osx, Shell, Terminal, Farben ... scheint mir, dass es völlig themenbezogen ist. Deckt OSX ab, es geht um die Shell, die Terminal verwendet und Farben hinzufügen möchte. Ich muss das Bash-Profil bearbeiten, also würde ich sagen, es ist themenbezogen.
Danijel-James W
12
Klar zum Thema, es geht um Bash-Scripting.
Superluminary
5
Geschlossen, du machst wohl Witze! Dies hat eindeutig Nutzen und Wert für viele (meist neue) Mac-Codierer. Wenn diejenigen, die schließen, es ernst meinen, dass es nicht zum Thema gehört, warum nicht migrieren, um SE Think Different zu sagen? Ich nehme an, SO unterstützt diese Funktion, die in anderen SE-Gruppen verwendet wird.
Cam_Aust
Schauen Sie sich diese Antwort an: stackoverflow.com/a/48216286/3782119
Shayan Amani

Antworten:

745

Hier ist eine Lösung, die ich gefunden habe, um die globalen Terminalfarben zu aktivieren .

Bearbeiten Sie Ihr .bash_profile(seit OS X 10.8) - oder (für 10.7 und früher): .profileoder .bashrcoder /etc/profile(je nach Verfügbarkeit) in Ihrem Home-Verzeichnis und fügen Sie folgenden Code hinzu:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 Aktiviert einfach die Färbung Ihres Terminals.

LSCOLORS=... Gibt an, wie bestimmte Elemente eingefärbt werden sollen.

.bash_profileStarten Sie nach der Bearbeitung ein Terminal und erzwingen Sie die Änderungen, indem Sie Folgendes ausführen:

source ~/.bash_profile

Gehen Sie dann zu Terminal > Preferences, klicken Sie auf die ProfilesRegisterkarte und dann auf die TextUnterregisterkarte und überprüfen Sie Display ANSI Colors.

Verifiziert in Sierra (Mai 2017).

LuckyMalaka
quelle
21
habe dies einfach durch Hinzufügen zu .bash_profile getan und es funktioniert. hat nicht funktioniert, als ich es zu .profile hinzugefügt habe. Vielen Dank!
Morten
10
Ich habe gerade meine bearbeitet /etc/profileund es funktioniert wie ein Zauber.
Cyclonecode
2
Um @Morten und alle anderen mit ihren bash Profile zu kämpfen, sehen diese Antworten für eine Erklärung und eine Lösung: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson
4
dotfiles / .aliases hat eine großartige export LS_COLORSAussage
Bobobobo
16
Wenn Sie die gleichen Farben möchten, die Linux verwendet (mindestens Debian und Ubuntu), verwenden SieLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Sie können die Linux-basierte Syntax in einem Ihrer Startskripte verwenden. Habe dies gerade auf einer OS X Mountain Lion Box getestet.

z.B. in deinem~/.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\]\$ '

Dies gibt Ihnen eine schöne farbige Eingabeaufforderung. Um die farbige lsAusgabe hinzuzufügen, können Sie hinzufügen alias ls="ls -G".

Führen Sie zum Testen einfach a aus source ~/.bash_profile, um Ihr aktuelles Terminal zu aktualisieren.

Randnotiz zu den Farben: Den Farben geht eine Escape-Sequenz voraus \eund sie wird durch einen Farbwert definiert, der aus einer Escape-Sequenz besteht [style;color+m]und in diese eingeschlossen []ist. z.B.

  • rot = \[\e[0;31m\]
  • fett rot (Stil 1) = \[\e[1;31m\]
  • klare Färbung = \[\e[0m\]

Ich füge immer ein leicht modifiziertes Farbschema in das .bash_profile des Roots ein, um den Benutzernamen rot zu machen, sodass ich immer klar sehe, ob ich als root angemeldet bin (praktisch, um Fehler zu vermeiden, wenn viele Terminalfenster geöffnet sind).

In /root/.bash_profile:

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

Bei allen meinen Online-SSH-Konten muss der Hostname rot angezeigt werden, um zu unterscheiden, ob ich mich in einem lokalen oder Remote-Terminal befinde. Bearbeiten Sie einfach die .bash_profileDatei in Ihrem Home-Verzeichnis auf dem Server. Wenn sich keine .bash_profileDatei auf dem Server befindet, können Sie sie erstellen und sie sollte beim Anmelden bezogen werden.

Wenn dies für Sie nicht wie erwartet funktioniert, lesen Sie bitte einige der folgenden Kommentare, da ich MacOS nicht sehr oft verwende.

Wenn Sie dies auf einem Remote-Server tun möchten, überprüfen Sie, ob die ~/.bash_profileDatei vorhanden ist. Wenn nicht, erstellen Sie es einfach und es sollte bei Ihrem nächsten Login automatisch bezogen werden.

4 Ebenen
quelle
2
Wie bearbeitest du bash_profile für SSH-Konten online?
Andy
1
Ich mag PS1besser mit $PWDstatt \u, wie zum Beispiel:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox
1
Hier finden Sie weitere Erläuterungen zu den Codes für die Eingabeaufforderung: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK
1
Diese Links können auch hilfreich sein: ANSI-Farbcode-Escape-Sequenzen . Mehr zu PS1-Codes .
JohnK
1
Ich hatte Probleme damit, dass PROMPT_COMMAND-Farben in El Capitan (OS X 10.11) mit diesen Farbcodes korrekt angezeigt wurden. Es stellt sich heraus, dass Sie bei Verwendung in stattdessen PROMPT_COMMANDdie \033Syntax verwenden müssen \e. Beispiel zum Hinzufügen eines farbigen Zeitstempels vor Ihrer Eingabeaufforderung (fügen Sie diesen in Ihr ~/.bashrcoder ein ~/.bash_profile):PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
user5359531
42

Die Methoden MartinVonMartinsgrün und 4Levels haben bestätigt, dass sie unter Mac OS X Mountain Lion hervorragend funktionieren.

Die Datei, die ich aktualisieren musste, war ~ / .profile.

Ich konnte diese Frage jedoch nicht verlassen, ohne meine Lieblingsanwendung iTerm 2 zu empfehlen .

Mit iTerm 2 können Sie globale Farbschemata aus einer Datei laden. Wirklich einfach zu experimentieren und eine Reihe von Farbschemata auszuprobieren.

Hier ist ein Screenshot des iTerm 2-Fensters und der Farbeinstellungen. iTerm2-Farbeinstellungen Screenshot Mac

Nachdem ich meiner ~ / .profile-Datei Folgendes hinzugefügt hatte, konnte iTerm 2 die Farben überschreiben.

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

Hier ist ein großartiges Repository mit einigen netten Presets:

iTerm2 Farbschemata auf Github von mbadolato

Bonus: Wählen Sie "iTerm2 mit einem systemweiten Hotkey ein- / ausblenden" und binden Sie den Schlüssel mit BetterTouchTool , um das Terminal sofort mit einer Mausbewegung auszublenden / anzuzeigen .

Nick Woodhams
quelle
1
iTerm2 stürzte auf meinem System häufig ab, daher wechselte ich zu oh-my-zsh github.com/robbyrussell/oh-my-zsh . Es gibt auch Themen zur Verfügung
LuckyMalaka
Hallo! Bitte ändern Sie den baskervilleLink auf den richtigen. Scheint falsch zu kopieren und einzufügen.
Jevgeni Smirnov
@NickWoodhams, welches Farbthema verwenden Sie im Screenshot?
Indradhanush Gupta
1
@IndradhanushGupta Ich bin mir nicht sicher, welches Farbschema das war, es ist eine Weile her. Aber jetzt benutze ich das Pure ZSH-Thema und liebe es. github.com/sindresorhus/pure
Nick Woodhams
1
Dies ist ein schönes Farbschema und was ich brauchte, um die Artikeltypen // dirs und etc
rio
17

Wenn Sie Ihr ls kolorieren lassen möchten, müssen Sie Ihre ~ / .bash_profile-Datei bearbeiten und die folgende Zeile hinzufügen (falls nicht bereits geschrieben):

source .bashrc

Anschließend bearbeiten oder erstellen Sie die Datei ~ / .bashrc und schreiben einen Alias ​​in den Befehl ls:

alias ls="ls -G"

Jetzt müssen Sie source .bashrcein Terminal eingeben, falls es bereits gestartet ist, oder einfach ein neues Terminal öffnen.

Wenn Sie mehr Optionen in Ihrem lsJuste wünschen, lesen Sie das Handbuch ( man ls). Die Optionen sind nicht genau die gleichen wie in einem GNU / Linux-System.

Marcio
quelle
6
Eine etwas bessere Option besteht darin, die 'Alias'-Definition durch' export CLICOLOR = "" 'zu ersetzen. Dies hat den Vorteil, dass Sie normalerweise auch dann weiterarbeiten, wenn Sie während einer Terminalsitzung die Shells wechseln (solange Umgebungsvariablen vererbt werden - Aliase nicht).
Ned Deily
5

Wenn Sie tcsh verwenden, bearbeiten Sie Ihre ~/.cshrcDatei so, dass sie die folgenden Zeilen enthält:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Wo, wie Martin sagt, LSCOLORS das Farbschema angibt, das Sie verwenden möchten.

Überprüfen Sie diese Site, um die LSCOLORS zu generieren, die Sie verwenden möchten

smaccoun
quelle
4
bashist die Standardeinstellung in OS X seit Oktober 2003.
Nelsonjchen
1
Ich denke, du hast recht. Ich habe gerade einen neuen Mac bekommen und er hatte standardmäßig Bash. Ich denke, die IT hat meine Macs bei der Arbeit so eingerichtet, dass sie standardmäßig tcsh haben.
Smaccoun
1
Der Link ist einfach genial!
Sankalp
4

Überprüfen Sie, was $ TERM gibt: meins ist xterm-color und ls -alG gibt dann eine kolorierte Ausgabe aus.

William Rose
quelle
Nun, auf Capitan mit xterm-256colorbekomme ich keine Farben. CLICOLORund LSCOLORSändere das nicht):
drevicko
2

Als ich im Labor unter Mac OS X arbeitete, konnte ich die Terminalfarben mithilfe von Terminal (anstelle von X11) abrufen und dann das Profil (über die Mac-Menüleiste) bearbeiten. Die Benutzeroberfläche ist in Bezug auf die Farben etwas seltsam, aber Sie müssen das geänderte Thema als Standard festlegen.

Weitere Einstellungen wurden durch Bearbeiten bearbeitet .bashrc.

ccook
quelle