Die meisten Linux-Distributionen konfigurieren die Bash-Eingabeaufforderung so, dass sie ungefähr so ​​aussieht [email protected]:directory$ . Sie können die Bash-Eingabeaufforderung jedoch so konfigurieren, dass sie enthält, was Sie möchten, und sogar die Farben auswählen, die Sie möchten.

Die Beispielschritte wurden hier auf Ubuntu 16.04 LTS durchgeführt. Der Prozess sollte auf anderen Linux-Distributionen derselbe sein, obwohl die standardmäßige Bash-Eingabeaufforderung und die Einstellungen in der .bashrc-Datei etwas anders sein können.

Wo die Eingabeaufforderungsvariable gespeichert wird

Ihre Bash-Eingabeaufforderungskonfiguration wird in der .bashrc-Datei Ihres Benutzerkontos gespeichert ~/.bashrc. Wenn Ihr Benutzername bob lautet, ist die Datei um /home/bob/.bashrc.

Sie können die Datei öffnen, um die aktuelle Bash-Variable anzuzeigen. Wir verwenden nano als Beispieltexteditor. Sie können jedoch auch vi, emacs oder einen anderen Texteditor verwenden, mit dem Sie sich auskennen. Öffne ein Terminal und starte:

nano ~/.bashrc

Scrollen Sie nach unten zu PS1= Sektion. Die erste Variable sieht ziemlich kompliziert aus, da sie Farbinformationen enthält. Wir erklären dies später. Die zweite Variable ohne Farbinformationen lautet wie folgt:

${debian_chroot:+($debian_chroot)}[email protected]:w$

Dies ist immer noch etwas kompliziert wegen der ${debian_chroot:+($debian_chroot)} Bits. Diese teilen Bash lediglich mit, dass Sie wissen sollen, ob Sie eine Debian-Chroot-Umgebung verwenden und normalerweise nicht angezeigt werden. Ignorieren Sie diese, hier ist die Standardstruktur der Bash-Eingabeaufforderungsvariablen:

[email protected]:w$

u zeigt Ihren Benutzernamen an, @ zeigt das @ -Zeichen an, h bezeichnet den Hostnamen (Computername), : bezeichnet das: Zeichen, w gibt das Arbeitsverzeichnis an und $ gibt ein $ an, wenn Sie ein normales Benutzerkonto sind, oder #, wenn Sie root sind. Also, das alles zusammen zu bekommen, bekommst du [email protected]:working_directory$.

Um Ihre Bash-Eingabeaufforderung zu ändern, müssen Sie lediglich die Sonderzeichen in der PS1-Variablen hinzufügen, entfernen oder neu anordnen. Es gibt jedoch viel mehr Variablen, die Sie verwenden können als die Standardvariablen.

Lassen Sie den Texteditor zunächst - drücken Sie in Nano Strg + X, um den Vorgang zu beenden. Wir zeigen Ihnen, wie Sie mit Variablen experimentieren, bevor Sie eine neue in Ihre .bashrc-Datei schreiben.

So erstellen Sie eine benutzerdefinierte Bash-Eingabeaufforderung

Ihre Bash-Eingabeaufforderungskonfiguration wird in der PS1-Variablen gespeichert. Führen Sie den folgenden Befehl aus, um den Inhalt der PS1-Variablen in einer neuen Variablen zu speichern:

DEFAULT=$PS1

Sie können jetzt die PS1-Variable auf unterschiedliche Werte einstellen, um zu experimentieren. Die erste Zeile hier würde beispielsweise Ihre Eingabeaufforderung auf eine grundlegende Eingabeaufforderung "user $" setzen, während die zweite Zeile Ihre Eingabeaufforderung auf eine grundlegende Eingabeaufforderung "user: working_directory $" setzen würde.

PS1='u$ ' PS1='u:w$ '

Wenn Sie zu Ihrer Standardaufforderung zurückkehren möchten, führen Sie einfach den folgenden Befehl aus.

PS1=$DEFAULT

Bash wird auf die Standardaufforderung zurückgesetzt, da Sie diese Standardeinstellungen zuvor gespeichert haben. Beachten Sie, dass alle hier vorgenommenen Änderungen nur temporär für die aktuelle Bash-Sitzung sind. Sie können sich daher jederzeit abmelden und wieder anmelden oder das Terminalfenster schließen und erneut öffnen, um zur Standardaufforderung zurückzukehren. Mit der obigen Zeile können Sie jedoch problemlos zur Standard-Bash-Eingabeaufforderung zurückkehren, ohne sich mühelos abmelden oder ein Fenster schließen zu müssen.

Sie können der Variablen beliebige Zeichen oder Text hinzufügen. Um der Standardaufforderung "Hallo Welt" voranzustellen, können Sie Folgendes verwenden:

PS1='Hello World [email protected]:w$ '

Jetzt, da Sie die Grundlagen verstanden haben, müssen Sie nur wissen, was alle Sonderzeichen sind. Sie werden sich wahrscheinlich nicht für viele interessieren, aber hier ist die vollständige Liste, wie sie im Bash-Handbuch angezeigt wird:

  • Ein Glockencharakter: a
  • Das Datum im Format "Wochentag Monat Datum" (z. B. "Di 26. Mai"): d
  • 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: D{format}
  • Ein Fluchtcharakter: e
  • Der Hostname bis zum ersten "." h
  • Der Hostname: H
  • Die Anzahl der aktuell von der Shell verwalteten Jobs: j
  • Der Basisname des Endgerätenamens der Shell: l
  • Eine neue Zeile:
  • Eine Wagenrückgabe:
  • Der Name der Shell, der Basisname von $ 0 (der Teil nach dem letzten Schrägstrich): s
  • Die Uhrzeit im 24-Stunden-Format HH: MM: SS:
  • Die Uhrzeit im 12-Stunden-Format HH: MM: SS: T
  • Die Uhrzeit im 12-Stunden-Format: @
  • Die Uhrzeit im 24-Stunden-Format HH: MM: A
  • Der Benutzername des aktuellen Benutzers: u
  • Die Version von Bash (z. B. 2.00): v
  • Die Veröffentlichung von Bash, Version + Patchlevel (z. B. 2.00.0): V
  • 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: W
  • Die Historiennummer dieses Befehls: !
  • Die Befehlsnummer dieses Befehls: #
  • Wenn die effektive Benutzer-ID 0 ist, #, andernfalls $: $
  • Das Zeichen, dessen ASCII-Code der Oktalwert nnn ist: nn
  • Ein Backslash: \
  • Beginnen Sie mit einer Folge nicht druckbarer Zeichen. Dies kann verwendet werden, um eine Terminalsteuerungssequenz in die Eingabeaufforderung einzubetten: [
  • Beenden Sie eine Folge nicht gedruckter Zeichen: ]

Wenn Sie also Datum und Uhrzeit zu Ihrer Bash-Eingabeaufforderung hinzufügen und das Arbeitsverzeichnis in eine zweite Zeile setzen möchten, können Sie die folgende Konstruktion verwenden:

PS1='[d ] [email protected] w$ '

Die eckigen Klammern sind hier überhaupt nicht notwendig, helfen jedoch, die Dinge visuell aufzuteilen und die Zeile lesbarer zu machen. Wie bereits erwähnt, können Sie der Variablen, die Sie möchten, beliebigen Text oder normale Zeichen hinzufügen. Sie können also alles verwenden, was für Sie funktioniert.

Es gibt einen weiteren mächtigen Trick, über den Sie Bescheid wissen sollten: Sie können die Ausgabe eines beliebigen Befehls zur Eingabeaufforderung hinzufügen. Sobald die Aufforderung angezeigt wird, führt Bash den Befehl aus und gibt die aktuellen Informationen ein. Um dies zu tun, fügen Sie einfach jeden Befehl ein, den Sie zwischen zwei ausführen möchten ` Zeichen. Das ist kein Apostroph - das ist der schwere Akzent, der über der Tabulatortaste Ihrer Tastatur angezeigt wird.

Angenommen, Sie möchten die Linux-Kernel-Version in der Eingabeaufforderung anzeigen. Sie könnten eine Zeile wie die folgende verwenden:

PS1='[email protected] on `uname -s -r` w$ '

Nehmen wir als Beispiel an, Sie möchten die Betriebszeit und den Lastdurchschnitt des Systems anzeigen, wie von angezeigt uptime Befehl. Sie können die folgende Konstruktion verwenden, bei der die Betriebszeit in der eigenen Zeile vor dem Rest der Eingabeaufforderung steht.

PS1='(`uptime`) [email protected]:w$ '

Experimentieren Sie mit verschiedenen Sonderzeichen und Befehlen, um Ihre ideale Eingabeaufforderung zusammenzustellen.

So fügen Sie Ihrer Bash-Eingabeaufforderung Farben hinzu

Sobald Sie Ihre bevorzugte Aufforderung gefunden haben, können Sie Farben hinzufügen. Das ist eigentlich sehr einfach, aber es macht die Variable furchtbar unordentlich und kompliziert, wenn Sie nicht verstehen, was Sie gerade betrachten.

Zum Beispiel war die Standardvariable für die Farbaufforderung von früher:

${debian_chroot:+($debian_chroot)}[33[01;32m][email protected][33[00m]:[33[01;34m]w[33[00m]$

Oder entfernen Sie die debian_chroot-Bits noch einmal:

[33[01;32m][email protected][33[00m]:[33[01;34m]w[33[00m]$

Das ist eigentlich nur das [email protected]:w$ Variabel von früher, aber mit Farbinformationen. Wirklich, wir können es in einige Abschnitte unterteilen:

[33[01;32m][email protected] [33[00m]: [33[01;34m]w [33[00m]$

Der erste Abschnitt ist der [email protected] Bit, vorangestellt von Farbinformationen, die grün werden. Der zweite ist der : Zeichen, vorangestellt von Farbinformationen, die jegliche Farbe entfernen. Der dritte ist der w Bit, vorangestellt von Farbinformationen, die blau werden. Der vierte ist der $ Bit, vorangestellt von Farbinformationen, die jegliche Farbe entfernen.

Sobald Sie verstanden haben, wie Sie Farbmarkierungen selbst erstellen, können Sie den gewünschten Abschnitten Ihrer Bash-Eingabeaufforderung die gewünschten Farben hinzufügen.

Folgendes müssen Sie wissen: Sie müssen die gesamte Farbcodeinformation zwischen[ und ] characters. Innerhalb des Tags müssen Sie mit beiden beginnen 33[ oder e[ um Bash anzuzeigen, dass es sich um Farbinformationen handelt. Beide 33[ und e[ mach das selbe. e[ ist kürzer, daher ist es vielleicht bequemer zu verwenden, aber wir werden es verwenden 33[ hier, da es mit dem übereinstimmt, was standardmäßig verwendet wird. Am Ende des Tags müssen Sie mit enden m um das Ende eines Farbetags anzuzeigen.

Brechen wir das ab, so wird jedes Farbetikett aussehen. Der einzige Unterschied besteht in den Informationen, die Sie anstelle von COLOR hinzufügen, um die tatsächliche Farbe zu definieren:

[33[COLORm]

Mit Bash können Sie die Farbe des Vordergrundtexts ändern, dem Text Attribute wie "Fett" oder "Unterstrichen" hinzufügen und eine Hintergrundfarbe festlegen.

Hier sind die Werte für den Vordergrundtext:

  • Schwarz: 30
  • Blau: 34
  • Cyan: 36
  • Grün: 32
  • Lila: 35
  • Rot: 31
  • Weiß: 37
  • Gelb: 33

Da violetter Text beispielsweise der Farbcode 32 ist, verwenden Sie [33[32m] für violetten Text.

Sie können auch ein Attribut für den Text angeben. Dieses Attribut muss vor der Farbnummer eingefügt werden, getrennt durch ein Semikolon (;). Text mit diesen Attributen wird in verschiedenen Terminalemulatoren anders aussehen.

Hier sind die Werte für Textattribute:

  • Normaler Text: 0
  • Fett oder heller Text: 1 (hängt vom Terminalemulator ab.)
  • Dim Text: 2
  • Unterstrichener Text: 4
  • Blinkender Text: 5 (Dies funktioniert nicht in den meisten Terminalemulatoren.)
  • Umgekehrter Text: 7 (Dadurch werden die Vorder- und Hintergrundfarben invertiert, sodass schwarzer Text auf weißem Hintergrund angezeigt wird, wenn der aktuelle Text weißer Text auf schwarzem Hintergrund ist.)
  • Versteckter Text: 8

Sie müssen nicht das normale Textattribut angeben. Das ist sowieso die Standardeinstellung.

Da roter Text beispielsweise Code 31 und fetter Text Code 1 ist, verwenden Sie [33[1;31m] für fetten roten Text.

Sie können auch eine Hintergrundfarbe angeben, aber Sie können einer Hintergrundfarbe kein Attribut hinzufügen.

Hier sind die Werte für Hintergrundfarben:

  • Schwarzer Hintergrund: 40
  • Blauer Hintergrund: 44
  • Cyan-Hintergrund: 46
  • Grüner Hintergrund: 42
  • Lila Hintergrund: 45
  • Roter Hintergrund: 41
  • Weißer Hintergrund: 47
  • Gelber Hintergrund: 43

Da beispielsweise ein blauer Hintergrund Code 44 ist, [33[44m] würde einen blauen Hintergrund angeben.

Sie können sowohl Vordergrund- als auch Hintergrundfarbe-Tags angeben. Beispielsweise steht 42 für einen grünen Hintergrund und 31 für roten Text. Damit die Standardaufforderung zu rotem Text auf grünem Hintergrund wird, verwenden Sie Folgendes:

PS1='[33[42m][33[31m][email protected]:w$ '

Wir geben hier nur eine Hintergrundfarbe und dann eine einzelne Vordergrundtextfarbe an, die am Anfang der Eingabeaufforderung beginnt und auf den gesamten Text in der Eingabeaufforderung angewendet wird. Sie können jedoch in der Variablen so viele Farbmarkierungen angeben, wie Sie möchten, um verschiedene Abschnitte Ihrer Eingabeaufforderung zu färben, wie Sie möchten.

Die Hintergrund- und Vordergrundtextfarben gehen immer über die Eingabeaufforderung hinaus, es sei denn, Sie geben den Farbcode 00 an, um die Farbinformationen zu löschen. Sie können dieses Tag auch innerhalb der Variablen verwenden, um die Formatierung irgendwo in Ihrer Eingabeaufforderung zurückzusetzen. Zum Beispiel würde die folgende Zeile alle Färbungen vor dem Zeichen beenden $ Charakter.

PS1='[33[42m][33[31m][email protected]:w\[33[00m]$ '

So legen Sie Ihre neue Standardaufforderung fest

Sobald Sie mit Farben experimentiert haben, sollten Sie eine Bash-Aufforderung haben, die Sie in der aktuellen Sitzung mögen. Wahrscheinlich möchten Sie die neue Eingabeaufforderung dauerhaft machen, sodass sie automatisch in allen Ihren Bash-Sitzungen verwendet wird.

Dazu müssen Sie lediglich den Inhalt der PS1-Variablen in der .bashrc-Datei ändern, die wir zuvor betrachtet haben.

Öffnen Sie die .bashrc-Datei in Ihrem bevorzugten Texteditor wie folgt:

nano ~/.bashrc

Scrollen Sie nach unten und suchen Sie den Abschnitt PS1 =.Ersetzen Sie einfach die Standardvariable durch Ihre angepasste Variable. Wahrscheinlich wollen Sie das verlassen ${debian_chroot:+($debian_chroot)} Nur Bits - sie werden jedoch nur angezeigt, wenn Sie sich in einer Chroot-Umgebung befinden.

Geben Sie Ihre farbige PS1-Variable unter ein if [ '$color_prompt' = yes ]; then Linie. Geben Sie die Variable ohne Farben unter ein else Linie.

Speichern Sie die Datei und schließen Sie Ihren Texteditor. Um beispielsweise die Datei in Nano zu speichern, drücken Sie Strg + O, drücken Sie die Eingabetaste und drücken Sie dann Strg + X, um den Vorgang zu beenden.

Wenn Sie das nächste Mal eine neue Bash-Shell starten, z. B. durch Anmeldung am Terminal oder durch Öffnen eines neuen Terminalfensters, wird Ihre benutzerdefinierte Eingabeaufforderung angezeigt.

Top-Tipps:
Kommentare: