2212422

Linux-Terminalprompt für Ästheten: Der Bash-Prompt mit Powerline

04.08.2016 | 14:12 Uhr |

Das Vorurteil, Kommandozeilenfreaks seien pure Pragmatiker, ist ganz falsch. Mancher Admin legt erst los, wenn er sein Terminal mit Farben, Schriften und Prompt individualisiert hat. Mit Powerline gibt es ein spezielles Kosmetiktool.

Keine Software ist funktional wie optisch so anpassungsfähig wie die Kommandozeile. Wem die internen Möglichkeiten nicht ausreichen, kann mit Powerline die Prompt-Ästhetik noch ausbauen. Der Name „Powerline“ ist insofern etwas unglücklich, weil er mit der prominenten Netzwerktechnik Powerline kollidiert (Power-LAN, DLAN). Damit hat die Python-Erweiterung für die Bash-Shell definitiv nichts zu tun.

Es handelt sich um eine Prompt-Kosmetik, die in der Bash-Shell das aktuelle Verzeichnis in der „Breadcrumb“-Darstellung anzeigen und optional auch den Texteditor Vim, ferner Tmux oder die Fish-Shell verfeinern kann. Das Scriptprojekt ist unter https://github.com/milkbikis/powerline-shell verfügbar.

Eine ausführliche englischsprachige Dokumentation bietet die Website https://powerline.readthedocs.org . Alle Kommando- und Codezeilen dieses Beitrags finden Sie auch unter http://paste.ubuntu.com/16008177/ und können Sie dort kopieren.

Auch interessant: Die 10 wichtigsten Linux-Befehle für Einsteiger

Die Einrichtung von Powerline

Die Erweiterung für die Bash-Shell ist in Python geschrieben und damit im Prinzip unter allen Distributionen lauffähig. Wir beschreiben nachfolgend die nicht ganz triviale, aber unterm Strich problemlose Einrichtung unter Ubuntu. Der Vorgang zeigt die globale Installation, theoretisch ist auch eine benutzerspezifische Installation möglich.

Voraussetzungen: Sie benötigen den Paketmanager für Python-Pakete namens pip sowie das Tool git für den Zugriff auf das Softwareverwaltungssystem Git:

sudo apt-get install python-pip
sudo apt-get install git

So ausgestattet können Sie das Tool Powerline nun auf den Rechner laden:

sudo pip install git+git://github.com/Lokaltog/powerline

Da Powerline für seine Prompt-Darstellung spezielle Zeichen benötigt, brauchen Sie ferner eine Open-Type-Schriftendatei, die Sie mit

wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf

in eine beliebiges Verzeichnis herunterladen und dann mit

sudo mv PowerlineSymbols.otf /usr/share/fonts/

in den Fonts-Ordner verschieben. Danach aktualisieren Sie den Schriftencache des Systems mit

sudo fc-cache -vf

Schließlich benötigt die Schriftendatei noch eine Konfigurationsdatei, die Sie erneut mit wget herunterladen:

wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf

Diese Datei muss dann mit

sudo mv 10-powerline-symbols.conf/etc/fonts/conf.d/

noch in den richtigen Ordner verschoben werden.

Damit ist Powerline installiert – nur weiß davon bislang die Bash-Shell noch nichts.

Powerline-Prompt wird nicht automatisch gestartet. Durch Eingabe von „pon“ aber aktivierbar.
Vergrößern Powerline-Prompt wird nicht automatisch gestartet. Durch Eingabe von „pon“ aber aktivierbar.

Lese-Tipp: Terminal-Tuning - Linux-Tricks für mehr Komfort

Instruktionen für die Bash: Damit Powerline in die Shell eingreifen kann, müssen Sie nun noch die Bash informieren (und gegebenenfalls weitere Kommandozeilentools wie Vim oder Tmux). Für die Bash geschieht das in der Datei „.bashrc“ in Ihrem Home-Verzeichnis. Die erste Zeile, die einen 256-Farben-Modus für das Terminal fordert, ist wie im Bespiel in vielen Fällen bereits vorhanden:

TERM=xterm-256color
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh

Um den Powerline-Prompt einmal exemplarisch darzustellen, reicht der Aufruf gemäß der letzten Zeile mit „source“. Der Daemon und die Variablen sorgen dafür, dass der Prompt dauerhaft gilt. Der hier genannte Pfad „/usr/local/lib/python2.7/[…]“ kann in Ihrem konkreten Fall abweichen, wenn eine andere Python-Version vorliegt. Wo das Powerline-Projekt genau liegt, erfahren Sie mit

pip show powerline-status

Zeigt dieses Kommando ein anderes Verzeichnis als „python2.7“, dann korrigieren Sie die „source“-Zeile in der „.bashrc“ entsprechend.

Wenn Sie nun ein (neues) Terminal aufrufen, sollte die Shell den schicken „Breadcrumb“-Prompt anzeigen. Farben und Aussehen sind zwar anpassbar, jedoch gibt es dafür keine zentrale Konfigurationsschnittstelle. Sie müssten daher Scriptingkenntnisse mitbringen, um die zahlreichen Python- und Javascripts manuell anzupassen.

Auch interessant: Die 10 wichtigsten Linux-Befehle für Netzwerk und Internet

Informativer Prompt im Eigenbau

Ästhetisch ist die Powerline-Erweiterung schwer zu toppen. Der Aufwand der Einrichtung und mehr noch jener für eigene Anpassungen ist aber sicher nicht jedermanns Sache. Wer sich auf etwas Bastelarbeit einlässt, kann auch mit den Bordmitteln der Bash-Shell einen attraktiven, farbigen und informativen Prompt bauen. Definiert wird dieser in der Datei „.~/bashrc“ mit der Variablen „PS1=“ (Großschreibung!). Für einige Standardinfos wie das aktuelle Verzeichnis, Datum oder Uhrzeit gibt es vordefinierte Escape-Zeichenfolgen wie etwa „\w“ für das aktuelle Verzeichnis:

PS1='\w'

Darüber hinaus können Sie aber auch jede beliebige Umgebungsvariable einfach mit „$[Variable]“ in die PS1-Definition setzen („PS1='[$LOGNAME] \w'“. Mit der Sequenz „\[\033“ kommt Farbe ins Spiel. Ein Prompt wie

PS1='\n\[\033[47;30m\]\d, \A \[\033[41;37m\] \u on \H \[\033[47;30m\] MB free=$freemem \[\033[41;37m\] $CPU \[\033[40;37m\][$timediff]\[\033[44;37m\] \w \[\033[0m\]\n'

ist sehr unübersichtlich, aber nicht wirklich schwierig. Es geht Schritt für Schritt von einer Escape-Sequenz zur nächsten – „\n“ bedeutet einen Zeilenumbruch, „\[\033“ leitet jeweils einen neuen Farbcode ein. Der erste („47;30m“) bedeutet Schwarz auf weißem Hintergrund. In diesen Farben wird dann mit „\d“ das Datum, mit „\A“ die Uhrzeit abgebildet. Danach geht es weiter in neuer Farbe mit User- und Hostnamen und so fort. Am Ende sollten Farbdefinitionen immer zurückgesetzt werden („\[\033[0m\]“), damit die letzte Farbkombination nicht weiter für Terminalbefehle gilt. In der Abbildung sehen Sie das Ergebnis des obigen Prompt-Beispiels, das allerdings ohne zusätzliche Vorbereitung nicht funktioniert, weil Variablen wie „$CPU“ oder „$timediff“ erst definiert sein müssen. Wenn Variablen außerdem echtzeitaktuell sein sollen wie etwa bei der CPU-Auslastung, müssen diese Variablen unmittelbar vor der Prompt-Darstellung ermittelt werden. Dafür gibt es eine spezielle Direktive:

PROMPT_COMMAND=[Befehl | Script | Function]

Wir empfehlen eine „Function“ in der Datei „.bashrc“ als besonders schnelle Lösung – also

PROMPT_COMMAND=promptcmd

und an beliebiger Stelle der Datei die Funktion gemäß Abbildung. Die Codezeilen sind unter http://paste.ubuntu.com/16008177 erreichbar.

„PROMPT_ COMMAND“ ermöglicht einen dynamischen Prompt mit Echtzeitinformationen.
Vergrößern „PROMPT_ COMMAND“ ermöglicht einen dynamischen Prompt mit Echtzeitinformationen.
0 Kommentare zu diesem Artikel
2212422