bashrc - Das Terminal anpassen

bashrc

Die Datei bashrc steuert unter Linux die Eigenschaften des Terminals.

Informationen

Gerade Windows-Nutzer die nicht gerade Entwickler sind bezeichnen das Terminal unter Linux als Relikt aus grauer Vergangenheit und schon längst überholt - doch gibt es keine grafische Software die wirklich alles kann was man sich wünscht, oft muss man sich durch unendliche Menüs klicken oder zusätzliche Software nutzen. Mit dem Terminal funktionieren viele Dinge viel einfacher und schneller als auf der grafischen Oberfläche, bevor ich unter Windows im Explorer alle JPG-Dateien markiert und gelöscht habe sind diese auf dem Terminal mit einem:

rm -rf *.jpg

schon lange weg, bevor der Explorer oder ein anderer Dateimanager sich überhaupt geöffnet hat - und dies war nur ein sehr einfaches Beispiel. Wenn man sich etwas mit dem Terminal befasst ist man jeder grafischen Oberfläche - auch Microsoft Windows überlegen.

Gesteuert werden die Eigenschaften des Terminals durch die im Home-Verzeichnis versteckt liegende Datei ".bashrc", und um diese Datei geht es in diesem Beitrag der Linux Bibel. Wir werden einige Tipps finden wie wir das Terminal an unsere Bedürfnisse anpassen können.

Änderungen anwenden

Die Datei ".bashrc" ist eine ganz normale Textdatei die sich mit jedem beliebigen Texteditor öffnen und bearbeiten lässt, Änderungen die man vornehmen will trägt man am Ende der Datei ein, für jede Änderung eine neue Zeile. Um die Änderungen zu übernehmen startet man das Terminal im Fenster neu (also schließen und wieder öffnen) oder mit dem Befehl:

source ~/.bashrc

Tipps

Hier nun die Tipps die immer wieder erweitert werden:

Verzeichnisse automatisch korrigieren

Es kommt hin und wieder vor das man sich beim Eingeben von Verzeichnissen vertippt, bei kurzen Namen wie etwa "/etc" nutzt man meist auch die automatische Vervollständigung durch die Tabulator-Taste nicht. So meldet die Shell natürlich einen Fehler weil sie das Verzeichnis nicht kennt:

bashrc - Tipps für das Terminal unter Linux

bashrc - Tipps für das Terminal unter Linux

Die Shell - in diesem Fall also die Bash hat jedoch auch eine automatische Korrektur für Verzeichnisse die nur nicht aktiviert ist. Möchte man dies für einen Versuch temporär tun gibt man folgende Befehle ein:

shopt -s direxpand
shopt -s dirspell
shopt -s cdspell

Gibt man nun ein Verzeichnis falsch an versucht die Shell dies automatisch zu korrigieren und wechselt in das Verzeichnis:

bashrc - Tipps für das Terminal unter Linux

bashrc - Tipps für das Terminal unter Linux

Schließt man das Terminal ist diese Einstellung wieder weg, möchte man diese Option dauerhaft nutzen geben Sie die angegebenen Befehle einfach Zeile für Zeile in die ".bashrc" ein:

bashrc - Tipps für das Terminal unter Linux

bashrc - Tipps für das Terminal unter Linux

Alias - Abkürzungen

Oft genutzte Befehle mit mehreren Optionen kann man problemlos durch ein Kürzel ersetzen und so abkürzen. Als Kürzel kann man nutzen was man will so lange dieses nicht mit einem anderen Befehl konkurriert. Als kleines Beispiel werde ich für den Befehl:

ls -la

das Kürzel "ll" setzen und für:

ssh nutzer@server.org

das Kürzel "sshn" nutzen. Dafür genügen folgende Zeilen in der ".bashrc":

alias ll='ls -la'
alias sshn='ssh nutzer@server.org'

Ab sofort genügen die Befehle:

ll
sshn

um die jeweilig zugewiesenen Befehle zu starten.

Gewünschten Editor nutzen

Bei manchen Befehlen wird automatisch der Texteditor Vim gestartet, so nutzt auch der MC normal seinen eingebauten Editor. Bei gewissen anderen Befehlen startet automatisch Vim - doch damit haben nicht alle Nutzer Freude. Möchte man einen eigenen Editor fest legen gibt man diesen durch die Zeile:

EDITOR=nano

für den Editor Nano an. Auf einem System mit grafischer Oberfläche kann man auch eine grafische Software angeben wie etwa:

EDITOR=kate

Logo der Distribution

Mit zwei Möglichkeiten bringen Sie das Logo der Distribution auf das Terminal, das sind Linux-Logo und Neofetch, mehr dazu im Beitrag Linux-Logo.

Linux-Logo - Das Logo der Distribution auf dem Terminal

Linux-Logo - Das Logo der Distribution auf dem Terminal

Neofetch - Das Logo der Distribution auf dem Linux-Terminal

Neofetch - Das Logo der Distribution auf dem Linux-Terminal

Selbst gebauter Prompt

Der Prompt des Linux-Terminals ist selten sonderlich aufregend, hier etwa der Standard unter Siduction (Debian Unstable):

robertg@robert-pc:~$

Und der des Administrator-Terminals:

root@robert-pc:/home/robertg#

Dabei kann der Shell-Prompt viel mehr an Farben und Informationen bieten, hier ist zwar ein wenig denken nötig weil der Aufbau des Prompt's etwas komplex ist aber nicht sonderlich schwierig. Als erstes wollen wir uns einmal ansehen wie unser aktueller Bash-Prompt aufgebaut ist, dazu nutzen wir ganz einfach den Befehl:

echo $PS1
Den Bash- Shell-Prompt unter Linux anpassen

Den Bash- Shell-Prompt unter Linux anpassen

In meinem Fall vom normalen Nutzer:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

Es ist schon eine recht lange und unverständliche Zeichenkette vor allem da hier auch die Farben mit dabei sind, man muss diese Geschichte aber gar nicht verstehen - man muss nur wissen was man will, sucht sich die nötigen Teile zusammen und fügt die einzelnen Bestandteile ein. In folgender Tabelle sehen wir uns einmal die nötigen Zeichenketten ohne Farben an:

Variable

Bedeutung

\a

Bell - die grafische Glocke in ASCII

\A

Die Uhrzeit im 24-Stunden Format (hh:mm)

\d

Das Datum im Format "Wochentag Monat Tag"

\e

Das ASCII Escape Zeichen (033)

\h

Der Hostname auf dem die Shell läuft; bis zum ersten "."

\H

Der komplette Hostname

\j

Die Anzahl der Jobs der Shell

\l

Das tty auf dem die Shell läuft

\n

Neue Zeile

\t

Die Uhrzeit im 24h Format (hh:mm:ss)

\T

Die Uhrzeit im 12h Format (hh:mm:ss)

\r

Carriage Return

\s

Der Name der verwendeten Shell (sh, bash, ...)

\u

Der Nutzername

\v

Die Version der Shell

\V

Die Release der bash (Version, Patchlevel)

\w

Das aktuelle Arbeitsverzeichnis

\W

Der letzte Teil des aktuellen Arbeitsverzeichnisses

\!

Die aktuelle History-Nummer

\#

Die aktuelle Befehls-Nummer

\$

Wenn root eine "#", sonst ein"$"

\\

Der Backslash

\nnn

Zeichen entsprechend der oktalen Zahl nnn

\[

Der Beginn einer Seqenz von nicht-darstellbaren Zeichen

\]

Das Ende einer Seqenz von nicht-darstellbaren Zeichen

\@

Die Uhrzeit im 12h am/pm Format

Jetzt wollen wir uns unseren eigenen Bash-Prompt zusammen bauen, wir können uns diesen einfach zusammen bauen indem wir die nötigen Teile oben zusammen suchen, wir müssen die Änderung nicht einmal speichern - wir testen unseren Aufbau einfach einmal, schließen wir das Terminal ist wieder die alte Einstellung da oder wir ändern diesen wieder. So lange wir die Änderungen nicht speichern bleibt alles beim alten.

Für den Bash-Prompt verantwortlich ist nun die Variable:

PS1=' '

Alles was unter Anführungszeichen steht wird nun unser Bash-Prompt sein, als kleines Beispiel:

PS1='[\u@\h \W-\t]\$ '
Den Bash- Shell-Prompt unter Linux anpassen

Den Bash- Shell-Prompt unter Linux anpassen

Man bastelt sich so nun seinen eigenen Prompt zusammen, gefällt er Ihnen speichern wir diesen in unserer Steuer-Datei ".bashrc" am Ende der Datei in einer neuen Zeile so wie wir ihn eingegeben haben, in diesem Fall also:

PS1='\u@\h \W-\t\$ '

Nun wollen wir ein wenig mehr Farbe in den Bash-Prompt bringen, auch dies ist nicht sehr kompliziert, man muss nur verstehen was man will und braucht. Als erstes muss man verstehen das sich das Terminal mit zwei Arten von Farben versteht, mit einer Vordergrund-Farbe - also etwa die Farbe der Zeichen und eine Hintergrund-Farbe die darunter liegt. Bestimmt werden diese ebenfalls mit so genannten Escape-Sequenzen, hier einmal die Tabelle mit Vordergrund- und Hintergrund-Farben:

Vordergrund

Farbe

Hintergrund

Farbe

\[\033[0;30m\]

Schwarz

\[\033[XXm\]

Keine Farbe

\[\033[1;30m\]

Dunkelgrau

\[\033[40;XXm\]

Schwarz

\[\033[0;31m\]

Rot

\[\033[41;XXm\]

Rot

\[\033[1;31m\]

Helles Rot

\[\033[42;XXm\]

Grün

\[\033[0;32m\]

Grün

\[\033[43;XXm\]

Helles Braun

\[\033[1;32m\]

Helles Grün

\[\033[44;XXm\]

Blau

\[\033[0;33m\]

Braun

\[\033[45;XXm\]

Lila

\[\033[1;33m\]

Gelb

\[\033[46;XXm\]

Türkis

\[\033[0;34m\]

Blau

\[\033[47;XXm\]

Helles Grau

\[\033[1;34m\]

Helles Blau

\[\033[0;35m\]

Dunkles Lila

\[\033[1;35m\]

Helles Lila

\[\033[0;36m\]

Dunkles Türkis

\[\033[1;36m\]

Türkis

\[\033[0;37m\]

Helles Grau

\[\033[1;37m\]

Weiß

\[\033[0m\]

Farblos

Erst einmal sieht man in dieser Tabelle das es auch Sequenzen gibt die sie selben sind aber eine andere Farbe angeben - dies kommt dadurch das die Konsole (unter KDE), das GNOME-Terminal und so weiter die Farben unterschiedlich darstellen - hier hilft also nur probieren. Die zweite Geschichte - es sieht ein wenig kompliziert aus - ist es aber nicht wenn man es erst einmal versteht und den Prompt passt man ja nur einmal an.

Dann wollen wir einmal beginnen, wollen wir erst einmal die Farbe der Schrift anpassen, zu meinem vorigen Beispiel:

PS1='\u@\h \W-\t\$ '

Hier möchte ich nun die Schrift auf gelb stellen, ich nutze also die Vordergrund-Farbe "\[\033[1;33m\]":

PS1='\[\033[1;33m\]\u@\h \W-\t\$ '

Dort wo die Farbe beginnen soll gibt man diese auch an, in diesem Fall wird daraus:

Den Bash- Shell-Prompt unter Linux anpassen - Farben

Den Bash- Shell-Prompt unter Linux anpassen - Farben

Möchte ich nur den Nutzernamen in der gewünschten Farbe angeben gilt es nach diesem wieder auf die alte Farbe um zu wechseln, also schwarz oder weiß oder grün oder eine andere gewünschte Farbe, als Beispiel:

PS1='\[\033[1;33m\]\u\[\033[0;32m\]@\h \W-\t\$ '
Den Bash- Shell-Prompt unter Linux anpassen - Farben

Den Bash- Shell-Prompt unter Linux anpassen - Farben

Wichtig ist es nun aber vor allem zuletzt wieder die normale Farbe anzugeben, ansonsten sind auch die Befehle die man eingibt in der angegebenen Farbe, in meinem Beispiel weiß:

PS1='\[\033[1;33m\]\u\[\033[0;32m\]@\h \W-\t\$\[\033[1;37m\] '

Jetzt wollen wir noch eine Hintergrund-Farbe einfügen, in meinem Beispiel möchte ich den Nutzer rot einfärben, also "\[\033[41;XXm\]" - das "XXm" ersetzen Sie dabei einfach durch die Vordergrund-Farbe, in meinem Beispiel einfach "\[\033[41;1;33m\]" - also:

PS1='\[\033[41;1;33m\]\u\[\033[0;32m\]@\h \W-\t\$\[\033[1;37m\] '
Den Bash- Shell-Prompt unter Linux anpassen - Farben

Den Bash- Shell-Prompt unter Linux anpassen - Farben

Auch hier wirkt die Farbe wieder bis zur nächsten Änderung. Haben Sie Ihren Bash-Prompt wie gewünscht zusammen gestellt speichern Sie die komplette Zeile einfach am Ende der Datei in neue Zeile.

Wird erweitert