Computer
Allerlei
vim
mutt
slrn
zsh
browser
icq
screen

 

Submenu:

Zsh - Generell
Zsh-Liebhaber

 

Quick-Index

Allgemein - Vorteile - Nettigkeiten - Quellen

Zsh

Allgemein

Zsh? Warum zum Teufel die Zsh? Die Bash ist doch überall installiert und kann doch alles was man braucht?! Ach so? Nein, für mich nicht. Ich habe gerne spezialisierte Software, die genau das tut und kann, was ich brauche - die Zsh erfüllt dabei meine Anforderungen für eine Shell. Sie ist modular, schnell und bringt viele Features mit die andere Shells nicht einmal ansatzweise beherrschen. Zusätzlich zu den hier gebrachten Vorteilen und einigen netten Sachen der Zsh gibt es noch weitere Dokumente zu den Unterschieden zwischen den diversen Shell, besonders empfehlenswert zu lesen sind dabei "UNIX shell differences and how to change your shell" (andere Quelle), "History of UNIX Shells" und auch in der ZSH-FAQ gibt es dazu eine Erklärung.

Ich nutze die Zsh auf diversen Plattformen:

[mika@grml: ~]% uname -a
Linux grml 2.6.2 #1 SMP Wed Feb 11 22:00:45 CET 2004 i686 GNU/Linux
[mika@qnx: ~]% uname -a
QNX qnx 6.2.1 2003/01/18-02:12:22est x86pc x86
[mika@bufo: ~]% uname -imrs
FreeBSD 5.2.1-RC i386 GENERIC
[mika@u2]~$ uname -imrs
SunOS 5.9 sun4u SUNW,Ultra-2
[mika@fufopc09: ~] uname -a
CYGWIN_NT-5.1 fufopc09 1.5.7(0.109/3/2) 2004-01-30 19:32 i686 unknown unknown Cygwin

Die Zsh läuft also nicht nur auf Linux (sondern jedem[?] *nix). Da sie aber leider nicht so wie die Bash auf (so gut wie jedem) System zu finden ist, installiere ich mir die Zsh überall und für mich ist es ein Zeichen für ein gut administriertes System, wenn ich auf einem System eine Zsh vorfinde..

Ein kleines Beispiel für Zsh vs. Bash:

Bash: gzip -cd foo.gz && less foo             Zsh: less <(gzip -cd foo.gz)
Bash: cat foo fubar | sort                    Zsh: sort <f{oo,ubar} 
Bash: find . -type f -exec chmod 700 {} \;    Zsh: chmod 700 **/*(.)
Bash: ls -l `which foobar`                    Zsh: ls -l =foobar
Danke an Christian Schneider, von dessen Signatur ich mir das geklaut habe. (Ja, es gibt ein UUOC und find vs. chmod sind eigentlich verschiedene Sachen. Es soll aber eher als Demonstration dienen.)

Vorteile der Zsh

Quellen: zsh-4.2.0/Etc/FEATURES, Changelogs, Announcements, http://www.cise.ufl.edu/help/software/doc/zsh/FEATURES, zshfaq02.html, http://strcat.neessen.net/zsh/

Nettigkeiten der Zsh

Umbenennen von Dateien

Groß-/Kleinschreibung

Bei allen PDF-Dateien die mit einem Kleinbuchstaben beginnen, diesen durch den entsprechenden Großbuchstaben ersetzen. Der Rest des Dateinamens soll so bleiben wie er ist. Anmerkung: zmv bedingt 'autoload zmv'

zsh
autoload zmv
zmv '([a-z])(*).pdf' '${(C)1}$2.pdf'

Umbenennen von *.huch.bak in *.huch

zsh
autoload zmv
zmv '(*).bak' '$1'
Wie würde man das anders machen?
for FILE in *.bak; do mv $FILE $(basename $FILE .bak);done
oder:
find . -name '*.bak' -exec sh -c 'mv {} $(dirname {})/$(basename {} .bak)' \;

Leerzeichen in Dateinamen in Underscores umwandeln

$ zmv -Q "(**/)(* *)(D)" "\$1\${2// /_}"

Dateien listen

Symbolische Links auflisten

$ ls -l *(@)
-> man zshexpn | less -p 'Glob Qualifiers'

Dateinamen ausführen

Seit Zsh Version 4.2 kann man via "alias -s" (suffix alias) der Zsh sagen, welches Kommando sie bei welchem Suffix (Dateiendung) ausführen soll. Als Beispiel:
alias -s tex=vim
alias -s txt=vim
alias -s html=w3m

Wenn man jetzt 'datei.tex' oder 'datei.txt' in den Shellprompt eingibt und die Returntaste betätigt wird vim mit der Datei gestartet. Wenn man dies mit 'datei.html' macht wird der Kommandozeilenbrowser w3m mit der Datei geöffnet.

Quellen/Literatur/Download

Weiterführende Literatur ist auf der der ZSH-Liebhaber-Seite erwähnt.

Konfigurationsdateien:

Mein spezieller Dank geht an: Matthias Kopfermann, Sven Guckes, Christian Schneider, Sven Wischnowsky und Stephen Rueger, die mir (teils unbewusst ;-)) wertvolle Ideen und Konfigurationsdateien geliefert haben.

* Nach oben