Bash
Anpassen von PS1
Suche…
PS1-Eingabeaufforderung ändern
Um PS1 zu ändern, müssen Sie nur den Wert der PS1-Shell-Variablen ändern. Der Wert kann abhängig von der Distribution in der Datei ~/.bashrc
oder /etc/bashrc
werden. PS1 kann in beliebigen Text wie folgt geändert werden:
PS1="hello "
Neben dem Klartext werden eine Reihe von Sonderzeichen mit Backslash unterstützt:
Format | Aktion |
---|---|
\a | ein ASCII-Glockenzeichen (07) |
\d | das Datum im Format „Wochentag Monat Datum“ (z. B. „Di 26. Mai“) |
\D{format} | Das Format wird an strftime (3) übergeben und das Ergebnis in die Eingabeaufforderung eingefügt. Ein leeres Format führt zu einer ländereinstellungsspezifischen Zeitdarstellung. Die Zahnspangen sind erforderlich |
\e | ein ASCII-Escape-Zeichen (033) |
\h | der Hostname bis zum ersten '.' |
\H | der hostname |
\j | Die Anzahl der aktuell von der Shell verwalteten Jobs |
\l | Der Basisname des Endgerätenamens der Shell |
\n | Neue Zeile |
\r | Wagenrücklauf |
\s | der Name der Shell, der Basisname von $ 0 (der Teil nach dem letzten Schrägstrich) |
\t | die aktuelle Uhrzeit im 24-Stunden-Format HH: MM: SS |
\T | die aktuelle Uhrzeit im 12-Stunden-Format HH: MM: SS |
\@ | die aktuelle Uhrzeit im 12-Stunden-Format |
\A | die aktuelle Uhrzeit im 24-Stunden-Format HH: MM |
\u | der Benutzername des aktuellen Benutzers |
\v | die Version von bash (zB 2.00) |
\V | die Veröffentlichung von bash, Version + Patchlevel (zB 2.00.0) |
\w | das aktuelle Arbeitsverzeichnis, wobei $ HOME mit einer Tilde abgekürzt wird |
\W | der Basisname des aktuellen Arbeitsverzeichnisses, wobei $ HOME mit einer Tilde abgekürzt wird |
\! | Die Historiennummer dieses Befehls |
\# | die Befehlsnummer dieses Befehls |
\$ | wenn die effektive UID 0 ist, ein #, andernfalls ein $ |
\nnn* | das Zeichen, das der Oktalzahl nnn entspricht |
\ | ein Backslash |
\[ | Beginnen Sie mit einer Folge nicht gedruckter Zeichen, die zum Einbetten einer Terminalsteuerungssequenz in die Eingabeaufforderung verwendet werden kann |
\] | Beenden Sie eine Folge nicht gedruckter Zeichen |
So können wir beispielsweise PS1 auf Folgendes einstellen:
PS1="\u@\h:\w\$ "
Und es wird ausgegeben:
Benutzer @ Maschine: ~ $
Zeige einen Git-Zweig mit PROMPT_COMMAND
Wenn Sie sich in einem Ordner eines Git-Repository befinden, kann es hilfreich sein, den aktuellen Zweig anzuzeigen, in dem Sie sich befinden. ~/.bashrc
in ~/.bashrc
oder /etc/bashrc
Folgendes hinzu (git ist erforderlich, damit dies funktioniert):
function prompt_command {
# Check if we are inside a git repository
if git status > /dev/null 2>&1; then
# Only get the name of the branch
export GIT_STATUS=$(git status | grep 'On branch' | cut -b 10-)
else
export GIT_STATUS=""
fi
}
# This function gets called every time PS1 is shown
PROMPT_COMMAND=prompt_command
PS1="\$GIT_STATUS \u@\h:\w\$ "
Wenn wir uns in einem Ordner in einem Git-Repository befinden, wird Folgendes ausgegeben:
Zweigbenutzer @ Maschine: ~ $
Und wenn wir uns in einem normalen Ordner befinden:
Benutzer @ Maschine: ~ $
Zeigt den Namen des git-Zweigs in der Terminal-Eingabeaufforderung an
Sie können Funktionen in der PS1-Variablen haben, stellen Sie einfach sicher, dass Sie sie in ein einzelnes Anführungszeichen setzen oder für Sonderzeichen Escape-Zeichen verwenden:
gitPS1(){
gitps1=$(git branch 2>/dev/null | grep '*')
gitps1="${gitps1:+ (${gitps1/#\* /})}"
echo "$gitps1"
}
PS1='\u@\h:\w$(gitPS1)$ '
Sie erhalten eine Aufforderung wie diese:
user@Host:/path (master)$
Anmerkungen:
-
~/.bashrc
Sie die Änderungen in~/.bashrc
oder/etc/bashrc
oder~/.bash_profile
oder~./profile
(je nach Betriebssystem) vor und speichern Sie sie. - Führen Sie nach dem Speichern der Datei
source ~/.bashrc
(Distro-spezifisch) aus.
Zeit in Terminal-Eingabeaufforderung anzeigen
timeNow(){
echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '
Sie erhalten eine Aufforderung wie diese:
[05:34:37 PM] user@Host:/path$
Anmerkungen:
-
~/.bashrc
Sie die Änderungen in~/.bashrc
oder/etc/bashrc
oder~/.bash_profile
oder~./profile
(je nach Betriebssystem) vor und speichern Sie sie. - Führen Sie nach dem Speichern der Datei
source ~/.bashrc
(Distro-spezifisch) aus.
Färben Sie die Terminal-Eingabeaufforderung ein und passen Sie sie an
So stellt der Autor seine persönliche PS1
Variable ein:
gitPS1(){
gitps1=$(git branch 2>/dev/null | grep '*')
gitps1="${gitps1:+ (${gitps1/#\* /})}"
echo "$gitps1"
}
#Please use the below function if you are a mac user
gitPS1ForMac(){
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
timeNow(){
echo "$(date +%r)"
}
if [ "$color_prompt" = yes ]; then
if [ x$EUID = x0 ]; then
PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;31m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;31m\]:/#\[\033[00m\] '
else
PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;32m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;32m\]:/$\[\033[00m\] '
fi
else
PS1='[$(timeNow)] \u@\h \w$(gitPS1) :/$ '
fi
Farbreferenz:
# Colors
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
Anmerkungen:
~/.bashrc
Sie die Änderungen in~/.bashrc
oder/etc/bashrc
oder~/.bash_profile
oder~./profile
(je nach Betriebssystem) vor und speichern Sie sie.Für
root
Sie möglicherweise auch die Datei/etc/bash.bashrc
oder/root/.bashrc
bearbeitenFühren Sie nach dem Speichern der Datei
source ~/.bashrc
(Distro-spezifisch) aus.Hinweis: Wenn Sie die Änderungen in
~/.bashrc
gespeichert haben, müssen Sie die~/.bashrc
source ~/.bashrc
in Ihrem~/.bash_profile
damit diese Änderung inPS1
bei jedem Start der Terminal-Anwendung aufgezeichnet wird.
Zeigt den Status und die Uhrzeit des vorherigen Befehls an
Manchmal benötigen wir einen visuellen Hinweis, um den Rückkehrstatus des vorherigen Befehls anzuzeigen. Das folgende Snippet-Make setzt es an die Spitze der PS1.
Beachten Sie, dass die Funktion __stat () jedes Mal aufgerufen werden sollte, wenn eine neue PS1 generiert wird. Andernfalls bleibt der Status des letzten Befehls Ihrer .bashrc oder Ihres .bash_profile erhalten.
# -ANSI-COLOR-CODES- #
Color_Off="\033[0m"
###-Regular-###
Red="\033[0;31m"
Green="\033[0;32m"
Yellow="\033[0;33m"
####-Bold-####
function __stat() {
if [ $? -eq 0 ]; then
echo -en "$Green ✔ $Color_Off "
else
echo -en "$Red ✘ $Color_Off "
fi
}
PS1='$(__stat)'
PS1+="[\t] "
PS1+="\e[0;33m\u@\h\e[0m:\e[1;34m\w\e[0m \n$ "
export PS1