Login
Newsletter
Werbung

Do, 25. März 2010, 19:00

Die Z-Shell (zsh)

Eine mächtige Alternative zur Bash

Hochgradig konfigurierbarer Prompt

In der Z-Shell kann man nicht nur die linke Seite des Prompts, sondern auch die rechte Seite konfigurieren. Der Prompt in der Abbildung ist eine abgeänderte Version von Phil!s ZSH Prompt.

Ein Beispiel-Prompt der zsh

Marcel Jakobs

Ein Beispiel-Prompt der zsh

Die Anzeige der Uhrzeit inklusive Sekunden ist recht praktisch, da man daran sieht, wie lange ein Befehl gedauert hat oder wann man ihn ausgeführt hat. Es gibt jedoch auch die Möglichkeit, automatisch die Ausgabe von time bei der Beendigung eines Befehls ausgeben zu lassen, der länger als eine vorher definierte Zeit benötigt hat.

ZLE-Widgets

Der Z-Line-Editor ZLE ist sozusagen die Eingabezeile in der zsh. Mit diesem kann man sich kleine Programme schreiben, die einem das Leben vereinfachen.

Ein Beispiel wäre ein Programm, dass bei der Eingabe von ... diese zu ../.. umwandelt. Jeder weitere Punkt wird wieder umgewandelt. So kann man recht einfach folgendes eingeben:

cd ..../directory

Auf dem Bildschirm erscheint jedoch folgendes:

[/listing] cd ../../../directory

Diese Erweiterung ist nicht Standard der Z-Shell. Man kann sie aber durch folgenden Code in der Konfigurationsdatei ~/.zshrc erzeugen:

rationalise-dot() {
    if [[ $LBUFFER = *.. ]]; then
        LBUFFER+=/..
    else
        LBUFFER+=.
    fi
}
zle -N rationalise-dot
bindkey . rationalise-dot

Automatisches tee-ing

In der Z-Shell kann man die Ausgabe eines Kommandos recht einfach in mehrere verschiedene Dateien umleiten. Statt wie in der Bash

ls | tee -a all | tee actual

zu schreiben, kann man in der zsh einfach

ls >>all >actual

eingeben. Beide Befehle führen ls aus und hängen die Ausgabe an die Datei all an und schreiben sie in die Datei actual, wobei der Inhalt der letzten dabei überschrieben wird. Möchte man die Ausgabe wie beim original tee-Befehl auch auf dem Bildschirm sehen, so leitet man sie auch noch auf STDOUT um:

ls >>all >actual >&1

Verzeichnisse durch Ersetzung wechseln

Ein Beispiel sollte dies am besten erklären. Angenommen, man hat die zwei Verzeichnisse ~/development/scripting/perl/modules und ~/development/scripting/python/modules und befindet sich in ~/development/scripting/perl/modules, so kann man durch den Befehl

cd perl python

in das Verzeichnis ~/development/scripting/python/modules wechseln.

Bei einem cd-Kommando mit zwei Parametern wird im aktuellen Verzeichnis-String das erste Wort durch das zweite ersetzt. Hier also perl durch python.

Fazit

Viele der hier beschriebenen Beispiele sind sicherlich auch mit Erweiterungen in der Bash möglich. Sie zeigen aber auf jeden Fall, dass die Z-Shell jede Menge interessante Möglichkeiten bietet. Die oben gezeigten Funktionen sind aber meist nur angerissen und liefern nur eine kleine Auswahl von dem, was die Z-Shell zur Verfügung stellt. Darüber hinaus besitzt die Z-Shell eine ganze Reihe Module (z.B. für Matheoperationen oder einen eigenen FTP-Client), die man bei Bedarf laden kann. Sehr schön ist auch die Möglichkeit, den Screen-Titel von der zsh aus zu setzen. Es lohnt sich auf jeden Fall, diese Shell etwas genauer zu betrachten.

Im Netz findet man sehr viele Seiten, welche die Funktionen der zsh näher beschreiben, darunter Michael Prokops zsh-Liebhaberseite, das ZshWiki oder »Zzappers Best of ZSH Tips«.

Autoreninformation

Marcel Jakobs arbeitet gerne auf der Kommandozeile. Auf Anregung eines zsh-Nutzers hin hat er sich diese Shell genauer angesehen und ist aufgrund der vielen Möglichkeiten dabei geblieben.

Dieser Artikel ist in freiesMagazin 03/2010 erschienen. Veröffentlichung mit freundlicher Genehmigung des Autors.

  • Dieses Werk wurde unter der GNU Free Documentation License veröffentlicht. Das Kopieren, Verbreiten und/oder Modifizieren ist erlaubt unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation.

    - Weitere Informationen
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung