Die Standard-PS1-Variable auf meinem Computer (Kubuntu 13.10) lautet wie folgt:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Ich suche nach einer Referenz für die Funktionsweise der Variablen $ PS1, die es mir zumindest ermöglicht, die obige PS1-Variable zu verstehen.
PS1
in einem Terminal einstellen , zPS1="How r u, \u?"
. Die Änderung bleibt nur so lange bestehen, bis Sie das Terminal schließen.Antworten:
Verweise
Bisher gab es nicht eine einzige Referenz für alles, was in einer Bash-Eingabeaufforderung enthalten sein kann - aber da es sich um eine Funktion handelt, die sich über Jahrzehnte entwickelt hat und wahrscheinlich von Distribution zu Distribution variiert, ist dies möglicherweise zu viel verlangt. Ich habe versucht zusammenzufassen, was ich hier am nützlichsten fand.
Dieses How-to ist das vollständigste, aber es ist sehr lang und weitläufig. Einige der nützlicheren Abschnitte:
\[
und\]
notwendig.In diesem Handbuch wird die
${}
allgemeine Funktionsweise von Bash erläutert. In dieser Frage zu Ask Ubuntu erfahren Sie etwas mehr darüber, wie dies funktioniertdebian_chroot
.Dazwischen wird meines Erachtens jedes Zeichen in der Standardvariablen von Ubuntu PS1 erklärt.
Erklärung der Ubuntu-Eingabeaufforderung
Die Eingabeaufforderung besteht aus drei Teilen:
\[\e]0;\u@\h: \w\a\]
Setzt die Titelleiste eines XTerm-Fensters:\[
Startet einen Abschnitt mit nicht druckbaren Zeichen\e]0;
ist die Escape-Sequenz für 'set xterm title' (Ich glaube, Zahlen ungleich 0 setzen andere xterm-Eigenschaften, obwohl ich dies nicht getestet habe)\u@\h: \w
den zu verwendenden Titel (siehe unten für\u
,\h
und\w
)\a
markiert das Ende des Titels\]
markiert das Ende nicht druckbarer Zeichen${debian_chroot:+($debian_chroot)}
Wird auf den Wert von $ debian_chroot in Klammern erweitert, wenn $ debian_chroot gesetzt ist. Weitere Informationen zu $ debian_chroot finden Sie in dieser Frage .\u@\h:\w\$
ist die Eingabeaufforderung selbst:\u
wird auf den aktuellen Benutzernamen erweitert\h
wird auf den aktuellen Hostnamen erweitert\w
wird zum aktuellen Arbeitsverzeichnis erweitert\$
erweitert#
für root und$
für alle anderen Benutzerquelle
Laut mit Bash - Referenzhandbuch ,
PS1
ist:Einige andere gute Referenzen können sein:
PS1-Eingabeaufforderung für Linux / Unix erklärt
Was macht "$ {debian_chroot: + ($ debian_chroot)}" in meiner Terminal-Eingabeaufforderung?
Bash Shell PS1: 10 Beispiele, um Ihre Linux-Prompt wie Angelina Jolie zu machen
quelle
\[
und\]
- haben Sie irgendwelche Referenzen dafür?\[
- Beginnen Sie eine Sequenz von nicht druckbaren Zeichen, die zum Einbetten einer Terminalsteuerungssequenz in die Eingabeaufforderung verwendet werden kann.\]
- Eine Folge von nicht druckbaren Zeichen beenden. Nehmen Sie sich Zeit und lesen Sie sorgfältig;)ss64.com scheint die beste Referenz zu haben, die ich gefunden habe.
Es erklärt die folgenden Variablen:
Das
\[ ... \]
definiert eine Reihe von nicht druckbaren Zeichen. Sie sind erforderlich, um die Cursorposition korrekt zu verfolgen.Das
\e
in Ihrer Eingabeaufforderung startet eine Escape-Sequenz. Mehr dazu hier (Anmerkung "Esc" auf dieser Seite ist die\e
Sequenz).tput
, um den Escape-Code für Sie abzurufen.${debian_chroot:+($debian_chroot)}
ist Parametererweiterung. Sehen hier($debian_chroot)
wenn$debian_chroot
sonst nichts eingestellt ist.quelle