So passen Sie die Shell-Variable PS1-PS4 auf der Bash-Eingabeaufforderung an

Sie können die wahre Schönheit von Linux erkennen, wenn Sie Shell-Befehle verwenden. Standardmäßig zeigt die Shell-Eingabeaufforderung den Hostnamen und das Arbeitsverzeichnis an. Mit Variablen können Sie Farbe der Eingabeaufforderung, Anzeige, Datum, Uhrzeit, Benutzername usw. ändern. Sie können sogar Shell-Skripte innerhalb der PS1-Variablen ausführen, wobei PS für die Eingabeaufforderung steht. Ich werde einige Beispiele für das Ändern der Linux-Umgebung mit der Variablen PS1 zeigen.

Verwandte lesen: So ändern Sie die Bash-Shell-Eingabeaufforderung bunt in Linux

Darstellung der verschiedenen Shell-Variablen

  • PS1: Umgebungsvariable, die den Wert der Standardeingabeaufforderung enthält. Es ändert das Aussehen und die Umgebung der Shell-Eingabeaufforderung.
  • PS2: Umgebungsvariable, die den Wert enthält, den die Eingabeaufforderung für eine Interpretation der Befehlsfortsetzung verwendet. Sie sehen es, wenn Sie einen langen Befehl in vielen Zeilen schreiben.
  • PS3: Umgebungsvariable, die den Wert der Eingabeaufforderung für den select-Operator innerhalb des Shell-Skripts enthält.
  • PS4: Umgebungsvariable, die den Wert der Eingabeaufforderung enthält, die verwendet wird, um Skriptzeilen während der Ausführung von a . anzuzeigen bash Skript im Debug-Modus.

Beachten Sie, dass wir in diesem Artikel verwenden Echo Befehl, um den Wert der verschiedenen Eingabeaufforderungen in unserer Konsole anzuzeigen.

1) Ändern Sie die bash Aufforderung PS1

PS1 ist die Standardeingabeaufforderung, die wir jedes Mal sehen, wenn wir uns an der Konsole anmelden. Für die meisten neuen Linux-Systeme haben die Standardwerte u@h:w$ die zeigen die Benutzername, Hostname, das aktuelle Arbeitsverzeichnis und das Benutzerberechtigung. Dies sind nur Beispiele für verschiedene Werte, die es annehmen kann. Es gibt einige andere Werte, die wir später sehen werden. Werfen wir einen Blick auf den Standardwert der PS1-Eingabeaufforderung auf dem Terminal

# echo $PS1 
[e]0;u@h: wa]${debian_chroot:+($debian_chroot)}u@h:w$

Die Teile, die enthalten debian_chroot geben Sie an, dass die Eingabeaufforderung geändert wird, um Sie daran zu erinnern, wenn Sie in einer Change-Root-Umgebung arbeiten. Sehen Sie sich unten an, um eine vollständige Idee für den Rest der Eingabeaufforderung zu erhalten:
Optionen:
a Das ASCII-Glockenzeichen (Sie können auch 07 eingeben)
d Datum im Format „Sa. Sep. 04″“
e ASCII-Escape-Zeichen (Sie können auch 33 eingeben)
h Erster Teil des Hostnamens (z. B. „mybox“)
H Vollständiger Hostname (z. B. „mybox.mydomain.com“)
j Die Anzahl der Prozesse, die Sie in dieser Shell angehalten haben, indem Sie ^Z . drücken
l Der Name des Endgeräts der Shell (z. B. „ttyp4“)
n Neue Zeile
r Wagenrücklauf
s Der Name der ausführbaren Shell-Datei (wie „bash“)
t Uhrzeit im 24-Stunden-Format (z. B. „23:59:59″)
T Uhrzeit im 12-Stunden-Format (z. B. „11:59:59″)
@ Uhrzeit im 12-Stunden-Format mit am/pm
u Dein Benutzername
v Version von bash (wie 2.04)
V Bash-Version, inklusive Patchlevel
w Aktuelles Arbeitsverzeichnis (z. B. „/home/koithara“)
W Der „Basisname“ des aktuellen Arbeitsverzeichnisses (wie „koithara“)
! Position des aktuellen Befehls im Verlaufspuffer
# Befehlsnummer (diese wird bei jeder Eingabeaufforderung hochgezählt, solange Sie etwas eingeben)
$ Wenn Sie kein Root sind, fügt ein „$“ ein; Wenn Sie root sind, erhalten Sie ein “#”
xxx Fügt ein ASCII-Zeichen basierend auf der dreistelligen Zahl xxx ein (ersetzen Sie nicht verwendete Ziffern durch Nullen, z. B. „07″)
Ein Backslash
[ This sequence should appear before a sequence of characters that don’t move the cursor (like color escape sequences). This allows bash to calculate word wrapping correctly.
] Diese Sequenz sollte nach einer Sequenz von nicht druckbaren Zeichen erscheinen.

Wir werden einige Beispiele machen, aber bevor wir den Wert dieser Variablen manipulieren, müssen wir die Datei speichern, die alle enthält. Es wird Ihnen helfen, leichter zu unserer ursprünglichen Eingabeaufforderung zurückzukehren, falls wir einen Fehler machen oder sich aus- und wieder einloggen müssen.

$ cp ~/.bashrc ~/.bashrc-backup

Beispiel 1: Zeigen Sie nur den Benutzernamen und den Hostnamen mit dem Trennzeichen „-“ an:

user01@server01:~$ export PS1="u - h$ "
user01 - server01$ echo $PS1
u - h$

Wir können die Änderung sofort auf unserer Konsole sehen. Beachten Sie, dass wir nach dem Gleichheitszeichen das doppelte Anführungszeichen (“”) um die zu verwenden u und h Werte. Wenn wir eine andere Annotation verwenden, betrachtet die Shell alle nach dem Gleichheitszeichen als Wert und wir haben nicht das Ergebnis, das wir berücksichtigen.

Beispiel 2: Wir simulieren einen Fehler bei der Anzeige von Benutzername und Hostname, weil wir verwenden werden ^ anstatt

user01@server01:~$ export PS1=^u - h$ ^
^u - h$ ^$ echo $PS1 
^u - h$ ^

Beispiel 3: String an PS1-Variable übergeben

user01@sever01:~$ export PS1=happy-test$
happy-test$

Beispiel 4: Fügen Sie der Eingabeaufforderung mit Zeit hinzu T und das Arbeitsverzeichnis mit w

user01 - server01$ export PS1="[t] u@h:w$ "
[21:38:51] user01@server01:~$

Beispiel 5: Teilen Sie die Eingabeaufforderung mit in mehrere Zeilen auf n für langes Kommando

user01@server01:~$ export PS1="[t]nu@h:w$ "
[21:44:46]
user01@server01:~$

2) Ändern Sie die bash Aufforderung PS2

Wenn wir uns in der Konsole befinden, müssen wir möglicherweise viele Befehle in einem Befehl verknüpfen. Dadurch wird der Befehl für eine Zeile zu lang, sodass er in mehrere Zeilen unterteilt werden kann, indem Sie ““ am Ende jeder Zeile. Das standardmäßige interaktive PS2 Die Eingabeaufforderung für einen mehrzeiligen Befehl lautet „>“, was anzeigt, dass Sie den Befehl in der zweiten Zeile fortsetzen können und so weiter.

$ echo $PS2
>

Beispiel 1: Die Standardverwendung von PS2

# apt-get update && 
> apt-get -y install mysql-client python-setuptools curl git unzip apache2 php && 
> apt-get upgrade

Beispiel 2: Sie ersetzen den Wert durch einen Satz. Beachten Sie das Escape vor dem letzten Zitat

# export PS2=”incomplete? continue here-> ”
# apt-get update && 
incomplete? continue here-> apt-get -y install curl git unzip apache2 && 
incomplete? continue here-> apt-get upgrade

3) Ändern Sie die bash Aufforderung PS3

PS3 wird von der verwendet wählen Betreiber in a bash Skript. Es ist schwierig, seinen Wert auf einer einfachen Konsole zu messen. Um zu zeigen, wovon wir sprechen, müssen wir ein einfaches schreiben bash Skript, das uns hilft, den Wert zu sehen. Der Standard PS3 Wertaufforderung ist „#?

Beispiel 1: Wir werden den Inhalt unten in eine Datei namens ps3-value.sh kopieren

#!/bin/bash
echo "please select a value to display a month on the list below"
select i in jan feb mar apr exit
do
    case $i in
       jan) echo "January";;
       feb) echo "February";;
       mar) echo "March";;
       exit) exit;;
    esac
done

Beispiel 2: Ein Test des Skripts, um den Wert von PS3 anzuzeigen

$ chmod +x ps3-value.sh
:~$./ps3-value.sh
1) jan
2) feb
3) mar
4) exit
#? 2
February
#?

Beachten Sie, dass “#?” ist der PS3-Wert

Beispiel 3: Ändern Sie den Standardwert in „Auswahl“ und zeigen Sie ihn an, indem Sie das Skript ausführen

$ export PS3="choice: "
$./ps3-value.sh
Select a value to display a month on the below
1) jan
2) feb
3) mar
4) exit
choice: 2
February
choice:

Siehst du das Auswahl ist unser neuer Wert

4) Ändern Sie die bash Aufforderung PS4

Der PS4 zeigt jede Zeile von a bash Skript, wenn wir uns im Debug-Modus befinden, bevor Zeilen ausgeführt werden. Es hilft zu wissen, welche Zeile das Ergebnis nicht liefert. Wir können den Wert von PS4 mit dem Echo-Befehl anzeigen. Aber in a bash Skript, wir können es sehen mit bash -x für die Ausführung. Der Standard PS4 Wertaufforderung ist „+

Beispiel 1: Erstellen Sie eine Datei ps4-value.sh mit dem gleichen Inhalt wie ps3-value.sh und ändern Sie den Standardwert

$ echo $PS4
+
$ export PS4="[script line->:] "
$ chmod +x ps4-value.sh
$ bash -x ps4-value.sh 
[script line->: ]echo 'Please select a value to display a month on the list below'
Please select a value to display a month on the list below
[script line->: ]select i in jan feb mar apr bye
1) jan
2) feb
3) mar
4) apr
5) bye
#? 3
[script line->: ]case $i in
[script line->: ]echo March
March
#? 1
[script line->: ]case $i in
[script line->: ]echo January
January

Um Änderungen dauerhaft zu machen

Um PS1 beim Neustart persistent zu machen, müssen Sie den Exportbefehl mit Variable zur .bash_profile-Datei hinzufügen.

$cat .bash_profile
export PS1="[d][t][u@h]"

Laden Sie dann Ihre Standarddatei .bash_profile

$ . .bash_profile

Fazit

Jetzt kennst du die Rolle der Anderen bash Eingabeaufforderung und wie Sie jede einzelne ändern. Es ist wichtig, dass Sie die Datei vor der Änderung speichern, und Sie müssen sie wiederherstellen können, wenn ein Fehler auftritt.