Inspiriert durch Björns Beitrag „Howto: iTerm2 · Pimp your macOS Terminal“ habe ich mal geschaut, was man so mit dem Prompt im macOS-Terminal anstellen kann. Mir gefällt, was er damit gemacht hat. Was mir jedoch nicht gefällt ist eine andere Terminal-App zu verwenden. Ich bin sehr zufrieden mit dem Terminal von macOS und sehe keine Notwendigkeit, wegen ein paar optischer Gimmicks zu wechseln. Ohnehin versuche ich stets weitestgehend mit dem auszukommen, was das System mitbringt – und das klappt auch in diesem Fall.
Inhalt
Schriftart & Farbe
Ich habe mir überlegt, ohne dass ich mich großartig mit dem Thema beschäftigt habe, dass man ja eigentlich nur ein paar Farben anpassen muss und ein Zeichen benötigt, das dieses Dreieck abbildet, um so einen Prompt zu erhalten. Das Anpassen von Farben hatte ich auch schonmal hier behandelt, und darauf kann man aufbauen. Das Thema mit dem Dreieck ist jedoch nicht ganz so leicht. Mit der App „Schriftsammlung“ von macOS kann man sich den kompletten Zeichensatz einer Schriftart anzeigen lassen. Das Terminal verwendet standardmäßig die Schriftart „Monaco“.
In dieser Schriftart fehlt jedoch ein Zeichen in Form eines Dreiecks, dass die gesamte Zeile Zeilenhöhe im Terminal einnimmt. Das konnte ich auch in sonst keiner installierten Schriftart mit fester Breite finden. Nach ein paar Google-Suchen bin ich dann über die Stichwörter „VIM Powerline“ und „ZSH“ auf dieses Git-Repository gestoßen. Da gibt es verschiedene Schriftarten zum Download, die ein paar mehr Zeichen beinhalten. Unter anderem auch das benötigte Dreieck. Ich habe mich für die Schriftart Meslo Dotted entschieden, diese heruntergeladen und installiert.
Hier sind die benötigten Zeichen enthalten, um ein gefülltes Dreieck oder eine dreieckige Linie einfügen zu können. Somit müssen wir diese Schriftart nur in den Einstellungen des Terminals auswählen. Zusätzlich stelle ich den Hintergrund auf volle Deckkraft und die Schriftgröße auf 14.
![]() |
![]() |
Am Terminal selber sieht man bis jetzt kaum einen Unterschied. Die Schriftart hat sich geändert, die Schriftgröße wird erst übernommen, wenn man das Terminal schließt und erneut öffnet. Da wir den Prompt noch garnicht angefasst haben, sieht der natürlich auch aus wie immer.
Variablen und Platzhalter für den Prompt
Die aktuelle Konfiguration des Promptes kann man sich durch den Befehl $ echo $PS1 ausgeben lassen. Die Ausgabe müsste so aussehen, wenn man bisher noch nichts angepasst hat:
%n@%m %1~ %#
PS1 ist dabei der Prompt, der zur Eingabe eines Befehls auffordert. PS2 erscheint, wenn ein Befehl unvollständig ist und weitere Eingaben benötigt werden. Er besteht aus lediglich einem Zeichen ( > ) und kann auf die gleiche Art und Weise angepasst werden. Folgende Platzhalter kann man am Prompt verwenden. Sie werden dann automatisch durch die entsprechenden Werte ersetzt werden:
| Platzhalter | Beschreibung |
|---|---|
| Datum & Uhrzeit | |
%D |
Datum im Format “YY-MM-TT” (z.B. 25-11-21) |
%D{format} |
Datum in einem Benutzerdefinierten Format von strftime(3) (z.B. %D{%Y-%m-%d %H:%M:%S}). Platzhalter sind hier zu finden. |
| Hostname | |
%m |
Hostname bis zum ersten . |
%M |
Hostname (vollständig) |
| Benutzer | |
%n |
Name des angemeldeten Benutzers |
%# |
Marker für den aktuellen Rechtestatus. Als root #, sonst % |
%~ |
Vollständiger Pfad zum aktuellen Arbeitsverzeichnis. Das Benutzer-Homeverzeichnis wird mit ~ abgekürzt. |
%d |
Vollständiger Pfad zum aktuellen Arbeitsverzeichnis. Das Benutzer-Homeverzeichnis wird nicht abgekürzt. |
%c |
Aktuelles Arbeitsverzeichnis. Das Benutzer-Homeverzeichnis wird mit ~ abgekürzt. |
| Prozesse & Befehle | |
%j |
Anzahl der Prozesse, die derzeit in der Shell ausgeführt werden |
%! |
Aktuelle Prozess-ID der Shell |
%? |
Exit-Code des letzten Befehls |
%* |
Befehlslaufzeit: Uhrzeit (HH:MM:SS) |
%T |
Befehlslaufzeit: Uhrzeit (HH:MM) |
| Länge / Cursorsteuerung | |
%<...< |
Links kürzen |
%>...> |
Rechts kürzen |
%<< |
Automatisch kürzen |
%{...%} |
Sequenzen einschließen, die keine Breite haben (wichtig für ANSI) |
Zusätzlich zu den Platzhaltern können auch beliebige Terminalbefehle ausgeführt und deren Rückgabewerte angezeigt werden. Befehle werden mit $(...) maskiert, z.B. $(date) für das aktuelle Datum/Uhrzeit oder $(ifconfig en0 | awk '$1 == "inet" {print $2}') für die aktuelle IP-Adresse des Netzwerkanschlusses. Und natürlich kann auch jedes weitere Zeichen einer Schriftart eingefügt werden.
Text- und Hintergrundfarben
Das Terminal ist vom Typ xterm-256color (Standardeinstellung) und kann somit 256 Farben anzeigen. Diese werden wie folgt angegeben:
| Platzhalter | Beschreibung |
|---|---|
| Farben | |
%F{color} |
Textfarbe setzen |
%f |
Textfarbe zurücksetzen (Standardfarbe des Terminals) |
%K{color} |
Hintergrundfarbe setzen |
%k |
Hintergrundfarbe zurücksetzen (Standardfarbe des Terminals) |
| Formatierung | |
%B |
Fett an |
%b |
Fett aus |
%U |
Unterstreichen an |
%u |
Unterstreichen aus |
%S |
Text-/Hintergrundfarbe invertieren an |
%s |
Text-/Hintergrundfarbe invertieren aus |
Aus folgender Farbtabelle (Quelle) können die Werte für die Farben entnommen werden (die Zahl unten links im jeweiligen Kasten):
Prompt zusammenbauen
Jetzt müssen wir die ganzen Sachen nur noch geschickt miteinander kombinieren. Dazu kann man beliebig mit dem Befehl $ export PS1="..." herumspielen.
Ich verwende derzeit folgende Kombination für meinen Prompt:
export PS1="%K{33}%F{15} %K{8}%F{33}%K{8}%F{15} %~ %K{0}%F{8}%k%f %# "
----- ----- - ----- ---- - ---- ----- -- ----- --- - --- --
| | | | | | | | | | | | | |
| | | | | | | | | | | | | +--> Rechtestatus
| | | | | | | | | | | | +------> Textformatierung auf Standard stellen
| | | | | | | | | | | +---------> Dreieck
| | | | | | | | | | +------------> Vordergrundfarbe grau
| | | | | | | | | +-----------------> Hintergrundfarbe schwarz
| | | | | | | | +---------------------> Aktuelles Arbeitsverzeichnis
| | | | | | | +--------------------------> Vordergrundfarbe weiß
| | | | | | +-------------------------------> Hintergrundfarbe grau
| | | | | +-----------------------------------> Dreieck
| | | | +--------------------------------------> Vordergrundfarbe hellblau
| | | +--------------------------------------------> Hintergrundfarbe grau
| | +------------------------------------------------> Apfel-Zeichen
| +----------------------------------------------------> Vordergrundfarbe weiß
+----------------------------------------------------------> Hintergrundfarbe hellblau
Da sehr wahrscheinlich deine im Browser eingestellte Schriftart das Dreieck als Zeichen nicht beinhaltet, wird dafür nur ein kleines Kästchen angezeigt. Im Terminal mit der entsprechend eingestellten Schrift sieht das ganze dann so aus:
Nun kann man nach Belieben herumprobieren, bis man das gewünschte Ergebnis erhält. Möchte man Zeichen verwenden, die man nicht auf der Tastatur findet, dann kann man die am einfachsten aus der Schriftsammlung herauskopieren.
Farbige Ausgaben einschalten
Um das Ganze jetzt abzurunden schalten wir noch die farbige Ausgabe bestimmter Befehle (z.B. $ ls -al) ein:
$ export CLICOLOR=1
Einstellungen Speichern
Fehlt eigentlich nur noch eins: die Einstellungen so speichern, dass sie auch beim nächsten Öffnen des Terminals noch vorhanden sind. Dazu öffnen wir die Datei .zshrc (wird automatisch erstellt, sollte sie noch nicht vorhanden sein) und ergänzen sie um das Prompt und die farbige Anzeige:
$ nano ~/.zshrc
Den Editor mit ctrl+x schließen, Veränderungen abspeichern. Beim nächsten Öffnen des Terminals sieht dann alles wie gewünscht aus.
Inspiration
Man kann ja so einiges machen, daher lasse ich Euch mal ein paar Links zu verschiedenen Themen da:
- https://unix.stackexchange.com/questions/124407/what-color-codes-can-i-use-in-my-ps1-prompt
- https://www.cyberciti.biz/faq/apple-mac-osx-terminal-color-ls-output-option/
- https://github.com/robbyrussell/oh-my-zsh/wiki/themes
- https://ohmyposh.dev/docs/themes
- https://github.com/bhilburn/powerlevel9k/wiki/Show-Off-Your-Config
- https://github.com/slok/rainbow-bash
- macOS: pimp your terminal prompt (ZSH) - 2. Januar 2026
- Proxmox: „Failed to connect to Server“ mit Safari auf MacOS - 28. Januar 2023
- Loxone: Benachrichtigung per Telegram - 15. Januar 2022








