Connect with us

Wie man

So passen Sie Ihre Bash-Eingabeaufforderung an (und kolorieren)

So passen Sie Ihre Bash-Eingabeaufforderung an (und kolorieren)

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

Die Beispielschritte hier wurden unter Ubuntu 16.04 LTS ausgeführt. Der Vorgang sollte bei anderen Linux-Distributionen gleich sein, obwohl die Standard-Bash-Eingabeaufforderung und die Einstellungen in der .bashrc-Datei etwas anders sein können.

Wo die Prompt-Variable gespeichert ist

Ihre Bash-Eingabeaufforderungskonfiguration wird in der .bashrc-Datei Ihres Benutzerkontos gespeichert, die sich unter befindet ~/.bashrc. Wenn Ihr Benutzername also bob ist, befindet sich die Datei unter /home/bob/.bashrc.

Sie können die Datei öffnen, um die aktuelle Bash-Variable anzuzeigen. Wir verwenden nano als Beispiel-Texteditor, Sie können aber auch vi, emacs oder jeden anderen Texteditor verwenden, mit dem Sie vertraut sind. Öffnen Sie ein Terminal und führen Sie Folgendes aus:

nano ~/.bashrc

Scrollen Sie nach unten zum PS1= Sektion. Die erste Variable sieht ziemlich kompliziert aus, weil sie Farbinformationen enthält – das werden wir später erklären. Die zweite Variable ohne Farbinformationen lautet wie folgt:

${debian_chroot:+($debian_chroot)}u@h:w$

Das ist noch etwas kompliziert wegen der ${debian_chroot:+($debian_chroot)} Bits. Diese weisen Bash lediglich an, Sie wissen zu lassen, wenn Sie eine Debian-Chroot-Umgebung verwenden, und werden normalerweise nicht angezeigt. Wenn Sie diese ignorieren, sehen Sie hier die Standardstruktur der Bash-Eingabeaufforderungsvariablen:

u@h:w$

u zeigt Ihren Benutzernamen an, @ zeigt das @-Zeichen an, h gibt den Hostnamen (Computername) an, : zeigt an: Zeichen, w gibt das Arbeitsverzeichnis an und $ zeigt ein $ an, wenn Sie ein normales Benutzerkonto sind, oder #, wenn Sie root sind. Wenn Sie das alles zusammenfassen, erhalten Sie username@hostname:working_directory$.

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

Verlassen Sie den Texteditor vorerst – in Nano drücken Sie Strg+X, um ihn zu beenden. Wir zeigen Ihnen, wie Sie mit Variablen experimentieren, bevor Sie tatsächlich eine neue in Ihre .bashrc-Datei schreiben.

So erstellen Sie eine benutzerdefinierte Bash-Eingabeaufforderung

Ihre Bash-Eingabeaufforderungskonfiguration wird in der PS1-Variablen gespeichert. Um den Inhalt der PS1-Variablen in eine neue Variable zu speichern, führen Sie den folgenden Befehl aus:

DEFAULT=$PS1

Sie können nun die PS1-Variable auf verschiedene Werte setzen, um zu experimentieren. Zum Beispiel würde die erste Zeile hier Ihre Eingabeaufforderung auf eine einfache „user$“-Eingabeaufforderung setzen, während die zweite Ihre Eingabeaufforderung auf eine einfache „user:working_directory$“-Eingabeaufforderung setzen würde.

PS1="u$ "

PS1="u:w$ "

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

PS1=$DEFAULT

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

Sie können der Variablen beliebige Zeichen oder Text hinzufügen. Um der Standardeingabeaufforderung „Hello World“ voranzustellen, können Sie Folgendes verwenden:

PS1="Hello World u@h:w$ "

Nachdem Sie nun die Grundlagen verstanden haben, müssen Sie nur noch wissen, was alle Sonderzeichen sind. Sie werden sich wahrscheinlich nicht für viele davon interessieren, aber hier ist die vollständige Liste, wie sie in erscheint das Bash-Handbuch:

  • Ein Glockenzeichen: a
  • Das Datum im Format „Wochentag Monat Datum“ (z. B. „Dienstag 26. Mai“): d
  • Das Format wird an strftime(3) übergeben und das Ergebnis wird in den Prompt-String eingefügt; ein leeres Format führt zu einer gebietsschemaspezifischen Zeitdarstellung. Die Klammern werden benötigt: D{format}
  • Ein Escape-Zeichen: e
  • Der Hostname bis zum ersten ‚.‘: h
  • Der Hostname: H
  • Die Anzahl der Jobs, die derzeit von der Shell verwaltet werden: j
  • Der Basisname des Terminalgerätenamens der Shell: l
  • Ein Zeilenumbruch: n
  • Ein Wagenrücklauf: r
  • 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: t
  • Die Uhrzeit im 12-Stunden-Format HH:MM:SS: T
  • Die Uhrzeit im 12-Stunden-Format am/pm: @
  • 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 (zB 2.00.0): V
  • Das aktuelle Arbeitsverzeichnis, wobei $HOME mit einer Tilde abgekürzt wird (verwendet die Variable $PROMPT_DIRTRIM): w
  • Der Basisname von $PWD, wobei $HOME mit einer Tilde abgekürzt wird: W
  • Die Verlaufsnummer dieses Befehls: !
  • Die Befehlsnummer dieses Befehls: #
  • Wenn die effektive uid 0 ist, #, sonst $: $
  • Das Zeichen, dessen ASCII-Code der Oktalwert nnn ist: nnn
  • Ein Backslash:
  • Beginnen Sie eine Folge von nicht druckbaren Zeichen. Dies könnte verwendet werden, um eine Terminal-Steuerungssequenz in die Eingabeaufforderung einzubetten: [
  • End a sequence of non-printing characters: ]

Wenn Sie also Datum und Uhrzeit zu Ihrer Bash-Eingabeaufforderung hinzufügen und das Arbeitsverzeichnis auf Befehl in einer zweiten Zeile platzieren möchten, können Sie die folgende Konstruktion verwenden:

PS1="[d t] u@hnw$ "

Die eckigen Klammern sind hier überhaupt nicht notwendig, helfen aber, die Dinge optisch aufzubrechen und die Lesbarkeit der Zeile zu erleichtern. Wie bereits erwähnt, können Sie der Variablen beliebigen Text oder normale Zeichen hinzufügen. Sie können also alles verwenden, was für Sie funktioniert.

Es gibt noch einen weiteren mächtigen Trick, den Sie kennen sollten: Sie können der Eingabeaufforderung die Ausgabe eines beliebigen Befehls hinzufügen. Immer wenn die Eingabeaufforderung erscheint, führt Bash den Befehl aus und trägt die aktuellen Informationen ein. Fügen Sie dazu einfach einen beliebigen Befehl ein, den Sie zwischen zwei ausführen möchten ` Zeichen. Das ist kein Apostroph – das ist der ernste Akzent, der über der Tabulatortaste auf Ihrer Tastatur erscheint.

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

PS1="u@h on `uname -s -r` w$ "

Nehmen wir als weiteres Beispiel an, dass Sie die Betriebszeit und den Lastdurchschnitt des Systems anzeigen möchten, wie von der uptime Befehl. Sie können die folgende Konstruktion verwenden, die die Betriebszeit in eine eigene Zeile vor dem Rest der Eingabeaufforderung stellt.

PS1="(`uptime`)nu@h:w$ "

Fühlen Sie sich frei, mit verschiedenen Sonderzeichen und Befehlen zu experimentieren, um Ihre ideale Eingabeaufforderung zusammenzustellen.

So fügen Sie Ihrem Bash-Prompt Farben hinzu

Sobald Sie Ihre bevorzugte Eingabeaufforderung ermittelt haben, können Sie ihr Farben hinzufügen. Dies ist eigentlich sehr einfach, aber es lässt die Variable schrecklich unordentlich und kompliziert aussehen, wenn Sie nicht verstehen, was Sie sehen.

Die Standardvariable für die Farbeingabeaufforderung von früher lautete beispielsweise:

${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

Oder entfernen Sie die debian_chroot-Bits noch einmal:

[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$

Das ist eigentlich nur der u@h:w$ variabel von früher, aber mit Farbangabe. Wirklich, wir können es in einige Abschnitte unterteilen:

[33[01;32m]u@h

[33[00m]:

[33[01;34m]w

[33[00m]$

Der erste Abschnitt ist der u@h Bit, gefolgt von Farbinformationen, die es grün werden lassen. Das zweite ist das : Zeichen, denen eine Farbinformation vorangestellt ist, die jegliche Färbung entfernt. Der dritte ist der w Bit, gefolgt von Farbinformationen, die es blau färben. Der vierte ist der $ Bit, mit vorangestellter Farbinformation, die jegliche Färbung entfernt.

Sobald Sie wissen, wie Sie eigene Farb-Tags erstellen, können Sie beliebige Farben zu beliebigen Abschnitten Ihrer Bash-Eingabeaufforderung hinzufügen.

Folgendes müssen Sie wissen: Sie müssen die gesamten Farbcodeinformationen zwischen den [ und ] characterS. Innerhalb des Tags müssen Sie mit entweder beginnen 33[ or e[ to indicate to Bash that this is color information. Both 33[ and e[ do the same thing. e[ is shorter so might be more convenient to use, but we’ll use 33[ here as it matches what’s used by default. At the end of the tag, you must end with m to indicate the end of a color tag.

Breaking that down, here’s what every color tag will look like. The only difference is the information you add in place of COLOR to define the actual color:

[33[COLORm]

Mit Bash können Sie die Farbe von Vordergrundtext ändern, dem Text Attribute wie „fett“ oder „unterstrichen“ hinzufügen und eine Hintergrundfarbe festlegen.

Hier sind die Werte für Vordergrundtext:

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

Da lila Text beispielsweise den Farbcode 32 hat, würden Sie verwenden [33[32m] für lila Text.

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

Hier sind die Werte für Textattribute:

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

Sie müssen das normale Textattribut eigentlich nicht einschließen. Das ist sowieso die Standardeinstellung.

Da roter Text beispielsweise Code 31 und fetter Text Code 1 ist, würden Sie verwenden [33[1;31m] zum fetter roter 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 ein blauer Hintergrund beispielsweise Code 44 ist, [33[44m] würde einen blauen Hintergrund angeben.

Sie können sowohl Vordergrund- als auch Hintergrundfarben-Tags angeben. 42 steht beispielsweise für einen grünen Hintergrund und 31 für roten Text. Um die Standardeingabeaufforderung in roten Text auf grünem Hintergrund zu verwandeln, verwenden Sie Folgendes:

PS1="[33[42m][33[31m]u@h:w$ "

Wir geben hier nur eine einzelne 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 beliebig viele Farbtags in der Variablen angeben, um verschiedene Abschnitte Ihrer Eingabeaufforderung nach Belieben einzufärben.

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

PS1="[33[42m][33[31m]u@h:w[33[00m]$ "

So legen Sie Ihre neue Standardansage fest

Wenn Sie mit dem Experimentieren mit Farben fertig sind, sollten Sie in der aktuellen Sitzung eine Bash-Eingabeaufforderung haben, die Ihnen gefällt. Aber wahrscheinlich möchten Sie diese neue Eingabeaufforderung dauerhaft machen, damit sie automatisch in allen Ihren Bash-Sitzungen verwendet wird.

Dazu müssen Sie nur den Inhalt der PS1-Variablen in der .bashrc-Datei ändern, die wir uns zuvor angesehen 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 benutzerdefinierte Variable. Du wirst wahrscheinlich das verlassen wollen ${debian_chroot:+($debian_chroot)} Bits allein – sie werden sowieso nicht angezeigt, es sei denn, Sie befinden sich in einer chroot-Umgebung.

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

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

Wenn Sie das nächste Mal eine neue Bash-Shell starten – beispielsweise indem Sie sich am Terminal anmelden oder ein neues Terminalfenster öffnen – sehen Sie Ihre angepasste Eingabeaufforderung.

Continue Reading
Click to comment

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Tendencia