Suche…


Syntax

  • export PS1 = "etwas" # wird angezeigt, wenn bash auf einen Befehl wartet, der eingegeben werden soll
  • export PS2 = "Weiteres" # dsplayed, wenn die Anweisung weitere Zeilen enthält
  • export PS3 = "Eingabeaufforderung zur Auswahl von Anweisungen" # Selten verwendete Eingabeaufforderung für Auswahl. Stellen Sie zuerst PS3 auf Ihre Bedürfnisse ein und rufen Sie dann select auf . Siehe Hilfe auswählen
  • export PS4 = "meistens nützlich für das Debuggen; Zeilennummer usw." # wird für das Debuggen von Bash-Scripts verwendet

Parameter

Flucht Einzelheiten
\ein Eine Glocke.
\ 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 wird in die Eingabeaufforderung eingefügt. Ein leeres FORMAT führt zu einer ländereinstellungsspezifischen Zeitdarstellung. Die Zahnspangen sind erforderlich.
\ e Ein Fluchtcharakter. \ 033 funktioniert natürlich auch.
\ h Der Hostname bis zum ersten ".". (dh kein Domain-Teil)
\ H Der Hostname schließlich mit Domain-Teil
\ j Die Anzahl der aktuell von der Shell verwalteten Jobs.
\ l Der Basisname des Endgerätenamens der Shell.
\ n Eine neue Zeile
\ r Ein Wagenrücklauf.
\ s Der Name der Shell, der Basisname von $ 0 (der Teil nach dem letzten Schrägstrich).
\ t Die Uhrzeit im 24-Stunden-Format HH: MM: SS.
\ T Die Uhrzeit im 12-Stunden-Format HH: MM: SS.
@ Die Uhrzeit im 12-Stunden-Format.
\EIN Die Uhrzeit im 24-Stunden-Format HH: MM.
\ u Der Benutzername des aktuellen Benutzers.
\ v Die Version von Bash (z. B. 2.00)
\ V Die Veröffentlichung von Bash, Version + Patchlevel (zB 2.00.0)
\ w Das aktuelle Arbeitsverzeichnis mit $ HOME, abgekürzt mit einer Tilde (verwendet die Variable $ PROMPT_DIRTRIM).
\ W Der Basisname von $ PWD, wobei $ HOME mit einer Tilde abgekürzt wird.
! Die Historiennummer dieses Befehls.
# Die Befehlsnummer dieses Befehls.
$ Wenn die effektive Benutzer-ID 0 ist, # , andernfalls $ .
\ NNN Das Zeichen, dessen ASCII-Code der Oktalwert NNN ist.
\ Ein Backslash
\ [ Beginnen Sie mit einer Folge nicht druckbarer Zeichen. Dies könnte verwendet werden, um eine Terminalsteuerungssequenz in die Eingabeaufforderung einzubetten.
\] Beenden Sie eine Folge nicht gedruckter Zeichen.

Verwenden der Umgebungsvariable PROMPT_COMMAND

Wenn der letzte Befehl in einer interaktiven Bash-Instanz abgeschlossen ist, wird die bewertete PS1-Variable angezeigt. Vor dem eigentlichen Anzeigen der PS1-Bash wird geprüft, ob PROMPT_COMMAND gesetzt ist. Dieser Wert dieser Variable muss ein aufrufbares Programm oder Skript sein. Wenn diese Variable gesetzt ist, heißt dieses Programm / Skript, BEVOR die Aufforderung für die PS1 angezeigt wird.

# just a stupid function, we will use to demonstrate
# we check the date if Hour is 12 and Minute is lower than 59
lunchbreak(){ 
   if (( $(date +%H) == 12 && $(date +%M) < 59 )); then 
      # and print colored \033[ starts the escape sequence 
      # 5; is blinking attribute
      # 2; means bold
      # 31 says red
      printf "\033[5;1;31mmind the lunch break\033[0m\n";
   else
      printf "\033[33mstill working...\033[0m\n"; 
   fi; 
}

# activating it
export PROMPT_COMMAND=lunchbreak

PS2 verwenden

PS2 wird angezeigt, wenn sich ein Befehl auf mehr als eine Zeile erstreckt und die Bash auf weitere Tastenanschläge wartet. Es wird auch angezeigt, wenn ein zusammengesetzter Befehl wie while ... do..done und ähnliches eingegeben wird.

export PS2="would you please complete this command?\n" 
# now enter a command extending to at least two lines to see PS2

PS3 verwenden

Wenn die select-Anweisung ausgeführt wird, werden die angegebenen Elemente mit einer vorangestellten Nummer angezeigt und anschließend die PS3-Eingabeaufforderung angezeigt:

export PS3="  To choose your language type the preceding number : "
select lang in EN CA FR DE; do
   # check input here until valid.
   break
done

PS4 verwenden

PS4 wird angezeigt, wenn sich die Bash im Debugging-Modus befindet.

#!/usr/bin/env bash

# switch on debugging
set -x

# define a stupid_func
stupid_func(){
   echo I am line 1 of stupid_func
   echo I am line 2 of stupid_func
}

# setting the PS4 "DEBUG" prompt
export PS4='\nDEBUG level:$SHLVL subshell-level: $BASH_SUBSHELL \nsource-file:${BASH_SOURCE} line#:${LINENO} function:${FUNCNAME[0]:+${FUNCNAME[0]}(): }\nstatement: '

# a normal statement
echo something

# function call
stupid_func

# a pipeline of commands running in a subshell 
( ls -l | grep 'x' )

PS1 verwenden

PS1 ist die normale Systemaufforderung, die angibt, dass bash auf die Eingabe von Befehlen wartet. Es versteht einige Escape-Sequenzen und kann Funktionen oder Programme ausführen. Da bash den Cursor nach der Eingabeaufforderung der Anzeige positionieren muss, muss er wissen, wie die effektive Länge der Eingabeaufforderung berechnet wird. Um nicht druckbare Zeichenfolgen innerhalb der PS1-Variablen anzuzeigen, werden geschweifte Klammern verwendet: \ [ eine nicht druckbare Zeichenfolge \] . Alles, was gesagt wird, gilt für alle PS * -Vars.

(Das schwarze Caret zeigt den Cursor an)

#everything not being an escape sequence will be literally printed
export PS1="literal sequence "  # Prompt is now:
literal sequence ▉

# \u == user \h == host \w == actual working directory
# mind the single quotes avoiding interpretation by shell
export PS1='\u@\h:\w > ' # \u == user, \h == host, \w actual working dir
looser@host:/some/path > ▉

# executing some commands within PS1
# following line will set foreground color to red, if user==root, 
# else it resets attributes to default
# $( (($EUID == 0)) &&  tput setaf 1)
# later we do reset attributes to default with
# $(  tput sgr0 )
# assuming being root:
PS1="\[$( (($EUID == 0)) &&  tput setaf 1 \]\u\[$(tput sgr0)\]@\w:\w \$ "
looser@host:/some/path > ▉  # if not root else <red>root<default>@host....    


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