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

Und so sieht mein Prompt aus: Geben Sie hier die Bildbeschreibung ein

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 bearbeiten

  • Fü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 in PS1 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

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow