Anpassung der Linux Bash-Prompt Eingabe mit tput

Andreas Preuss
06-06-2018 16:54

Das Aussehen des Bash Promptes wird in der Variablen PS1 in der Datei ~/.bashrc festgelegt. Die PS1 Variable besteht im einfachsten Fall aus einer Zeichenkette. Zum Beispiel:

PS1='MyPrompt >'
# oder einfach nur
PS1='>'
# Es können aber auch Befehle benutzt werden.
PS1='´pwd´ >'
# Hier würde zum Beispiel das aktuelle Arbeitsverzeichniss gefolgt von einem Leerzeichen und dem größer Zeichen als Prompt angezeigt werden.

In diesem Beispiel wird der Username (\u), Hostname (\h) und der Vollständige Pfad des aktuellen Arbeitsverzeichnisses (\w) angezeigt.

PS1="\u@\h \w> "

Mit dem Linux Befehl tput lassen sich hier auf sehr einfache Weise Color und Cursor Verhalten anpassen:

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

In der PS1-Umgebungsvariablen kann man jeden beliebigen Linux-Befehl direkt ausführen, indem man ihn im Format $(linux_command) angibt. Im folgenden Beispiel wird der Befehl $(date) ausgeführt, um die aktuelle Uhrzeit in der Eingabeaufforderung anzuzeigen.

PS1="\u@\h [\$(date +%k:%M:%S)]> " # Formatierte Zeitausgabe
# oder
PS1="\u@\h [\t]> " # hh:mm:ss Format
# oder
PS1="[\@] \u@\h> " # 12-Stunden (am/pm) Format

Aber auch in Scripten oder einfach so im Terminal hat man vielleicht den Wunsch eine Hervorhebung der Textausgabe durchführen zu können. Dies geht sehr bequem mit dem tput Befehl und seinen Einstellungsparametern:

tput Zeilen- Spalten- und Cursorposition:
    tput cols
    tput lines
    tput cup 6 8 - Cursorposition einstellen
    tput cnorm - Cursor anzeigen
    tput civis - Cursor verstecken

tput Farbeinstellungs Eigenschaften:

    tput setab [1-7] - Setzen der Hintergrundfarbe mittels ANSI-Escape
    tput setb  [1-7] - Setzen der Hintergrundfarbe
    tput setaf [1-7] - Setzen der Vordergrundfarbe mittels ANSI-Escape
    tput setf  [1-7] - Setzen der Vordergrundfarbe

tput Text Mode Eigenschaften:

    tput bold - Fettdruck einstellen
    tput dim  - halbhellen Modus einschalten
    tput smul - Unterstreichung starten
    tput rmul - Unterstreichung verlassen
    tput rev  - Umkehrung einschalten
    tput smso - In den Hervorgehobenen-Modus wechseln (Fettdruck bei rxvt)
    tput rmso - Verlassen des Standout-Modus
    tput sgr0 - Alle Attribute ausschalten

    tput reset - Alle Einstellungen zurücksetzen

Beispiel:

echo 'tput smul'Unterstrichen'tput rmul'

Farb-Codes für tput:
0=Schwarz, 1=Rot, 2=Grün, 3=Gelb, 4=Blau, 5=Magenta, 6=Cyan, 7=Weiß
tput ermöglicht es auch, eine Reihe von Befehlen gleichzeitig auszuführen. Wenn man beispielsweise den Bildschirm löschen und den Cursor auf eine bestimmte Position setzen möchte, kann man wie folgt vorgehen:

$ tput -S < clear
> cup 2 4
> END

Hinweis: Wenn man Vorder- und Hintergrund des Terminals auf die gleiche Farbe setzt, kann man den Cursor nicht mehr sehen. Zum Zurücksetzen "tput reset" ausführen.

angehängte Dateien: bashrc.txt

Tags: Bash, Debian 9 Stretch, Promt, PS1, tput
Durchschnittliche Bewertung: 4 (1 Abstimmung)

Es ist möglich, diese FAQ zu kommentieren.