Antworten:
Hier ist ein Beispiel für das Festlegen einer roten Eingabeaufforderung:
PS1=$'\e[0;31m$ \e[0m'
Die Magie ist das \e[0;31m
(roten Vordergrund \e[0m
einschalten ) und (Zeichenattribute ausschalten). Diese werden Escape-Sequenzen genannt. Unterschiedliche Escape-Sequenzen führen zu unterschiedlichen Ergebnissen, von der absoluten Cursorpositionierung über die Farbe bis hin zur Änderung der Titelleiste Ihres Fensters usw.
Weitere Informationen zu Escape-Sequenzen finden Sie im Wikipedia-Eintrag zu ANSI-Escape-Codes
Geben Sie dies ein ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Unterstützte Farben:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, und white
(aus dieser Antwort ) , obwohl verschiedene Computer können verschiedene gültige Optionen haben.
Surround-Farbcodes (und andere nicht druckbare Zeichen) mit %{....%}
. Damit funktioniert der Textumbruch korrekt.
Außerdem erfahren Sie hier, wie Sie dies von hier aus mit dem Trimmen von Verzeichnissen zum Laufen bringen können .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
bedeutet, dass der Inhalt als wörtliche Escape-Sequenz interpretiert wird, sodass sich der Cursor beim Drucken der Sequenz nicht bewegt. Wenn Sie dies nicht verwenden, können die Farbcodes den Cursor tatsächlich bewegen und unerwünschte Effekte erzeugen. Dies ist in dem Visual Effects
Abschnitt in zshmisc Manpage
Zsh wird mit eingebauten farbigen Eingabeaufforderungen geliefert. Versuchen
autoload -U promptinit && promptinit
und prompt -l
listet dann verfügbare -p fire
Eingabeaufforderungen auf, zeigt eine Vorschau der Eingabeaufforderung "Feuer" an und -s fire
legt sie fest.
Wenn Sie bereit sind, eine Eingabeaufforderung hinzuzufügen, fügen Sie unter der Autoload-Zeile oben Folgendes hinzu:
prompt fade red
Ich glaube nicht, dass das autoload -U colors && colors
mehr gebraucht wird und man kann einfach:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
um das gleiche Ergebnis wie die Antwort von FireDude zu erzielen . Weitere Informationen finden Sie in der ZSH-Dokumentation .
autoload -U colors && colors
autoload
zu arbeiten.
autoload on
?
autoload -U colors
, bedeutet dies, dass Ihre Distribution es bereits in einer anderen zsh-Initialisierungsdatei hat. Sie sollten es weiterhin in Skripten aufnehmen, die Sie mit anderen teilen möchten.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(1 bis 256)$FG[018]
(1 bis 256)$fg[magenta]
(Magenta, Rot, Weiß, Gelb, Schwarz, Blau, Cyan, Grün)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
Die Variablendefinition (PS1 / PROMPT) muss hinzugefügt werden ~/.zshrc
Wir können die PS1-Variable auch an der aktuellen Eingabeaufforderung neu definieren, um sie sofort zu testen (Änderungen werden nicht gespeichert).
Die Antwort von Bryan Oakley oben hat einen Fehler, wie bereits erwähnt, und die von Andrew Marshall angebotene Lösung enthält zwar keinen Fehler, macht es jedoch nicht offensichtlich, dass die verwendeten Farben zu stark angepasst werden müssen.
Da macOS Catalina von nun an verlangt, dass zsh die Standard-Shell ist, möchten möglicherweise mehrere weitere Personen ihre Eingabeaufforderung anpassen und kommen möglicherweise hierher, um eine Antwort zu erhalten. Daher dachte ich, ich würde versuchen, eine breitere Zusammenfassung zu geben und andere sehr eng verwandte Begriffe zu berühren, die eine stärkere Anpassung ermöglichen.
3-stellige Codes für verschiedene Farben. Zunächst finden wir hier dreistellige Codes für verschiedene Farben: https://unix.stackexchange.com/a/124409/194343 . Zum Beispiel ist 214 eine Art orange Farbe.
Vordergrund und Hintergrund. Die andere wichtige Information ist, dass man für die Grundfarben F oreground und bac K definieren kann, was sie mit F bzw. K wollen . Quelle ist das zsh-Handbuch zu visuellen Effekten: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
So zum Beispiel die folgenden zwei Befehle
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
Präsentieren Sie den Hostnamen in Orange mit schwarzem Hintergrund, gefolgt von einem Doppelpunkt in Weiß mit schwarzem Hintergrund, gefolgt vom aktuellen Arbeitsverzeichnis in hellblau mit schwarzem Hintergrund, gefolgt vom Dollarzeichen in Weiß mit schwarzem Hintergrund.
Weitere verwandte Informationen finden Sie unten.
Sofortige Informationen auf der rechten Seite. Zum Beispiel Hinzufügen eines Zeitstempels. Siehe https://superuser.com/a/1251045/290299 . Natürlich kann dies farbcodiert werden, zum Beispiel mit einer hellblauen / lila Farbe, wie folgt:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Farben für ls
. Nach dem Lesen des Handbuchs für ls kann man beispielsweise die Farben für ls
die folgenden zwei Befehle aktivieren :
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Als letzte Bemerkung, die ich nicht getestet habe, da ich mit meiner Konfiguration zufrieden bin, könnte eine andere Möglichkeit für jemanden sein, den Port coreutils
von MacPorts zu installieren und dann zu verwenden gdircolors
(Quelle: https://unix.stackexchange.com/a/174596) / 194343 ). (Ich kann diesen letzten Teil in Zukunft bearbeiten, da alle oben genannten Teile verwandte Teile sind, die den Alltag viel lustiger und leichter zu bewältigen machen.)
Ich habe festgestellt, dass mit zsh5 (dem Standard unter Debian Jessie) alle diese Lösungen funktionieren:
$'\e[00m
$fg[white]
$fg{white}
Jetzt haben sie ein Problem: Sie bewegen den Cursor, was beim Tabulieren zu einem hässlichen Aufkleber führt (zur automatischen Vervollständigung). Die Lösung besteht einfach darin, die Escape-Sequenzen mit zu umgeben %{FOOBAR%}
. Ich habe eine Weile gebraucht, um das herauszufinden. Für die 2. und 3. Lösung ist das colors
Lademodul obligatorisch. Um die erste Lösung lesbar zu halten, definieren Sie einfach Variablen für die von Ihnen verwendeten Farben.
Um eine Eingabeaufforderung mit der Farbe abhängig vom Exit-Status des letzten Befehls zu erhalten, können Sie Folgendes verwenden:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Fügen Sie einfach diese Zeile zu Ihrem hinzu ~/.zshrc
.
In der Dokumentation sind mögliche Platzhalter aufgeführt.
Probieren Sie meinen Favoriten: setzen Sie ein
~/.zshrc
diese Linie:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
vergiss nicht
source ~/.zshrc
um die Änderungen zu testen
Sie können natürlich die Farben / Farbcodes ändern :-)
man zshall und suche nach PROMPT EXPANSION
Nachdem Sie die vorhandenen Antworten hier gelesen haben, sind einige von ihnen widersprüchlich. Ich habe die verschiedenen Ansätze auf Systemen mit zsh 4.2 und 5+ ausprobiert und festgestellt, dass diese Antworten widersprüchlich sind, weil sie nicht angeben, auf welche Version von ZSH sie abzielen. Verschiedene Versionen verwenden hierfür unterschiedliche Syntax und einige von ihnen erfordern verschiedene Autoloads.
Daher ist es wahrscheinlich die beste Wahl, zshall zu managen und nach PROMPT EXPANSION zu suchen, um alle Regeln für Ihre spezielle Installation von zsh herauszufinden. Beachten Sie in den Kommentaren, dass Dinge wie "Ich verwende Ubuntu 11.04 oder 10.4 oder OSX" nicht sehr aussagekräftig sind, da unklar ist, welche Version von ZSH Sie verwenden. Ubuntu 11.04 impliziert keine neuere Version von ZSH als Ubuntu 10.04. Es kann eine Reihe von Gründen geben, warum eine ältere Version installiert wurde. Im Übrigen impliziert eine neuere Version von ZSH nicht, welche Syntax verwendet werden soll, ohne zu wissen, um welche Version von ZSH es sich handelt.
Um alle oben genannten Antworten zu ergänzen, besteht ein weiterer praktischer Trick darin, die Einstellungen für die farbige Eingabeaufforderung in eine zsh-Funktion zu platzieren. Dort können Sie lokale Variablen definieren, um längere Befehle zu aliasen, z. B. rc=$reset_color
oder Ihre eigenen Farbvariablen definieren. Vergessen Sie nicht, es in Ihre .zshrc
Datei aufzunehmen und die von Ihnen definierte Funktion aufzurufen:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt