Zsh Feature Show

Version:        Thu Nov 05 03:23:42 CET 2009

Titel:          Zsh - die Shell mit den 1000 Eigenschaften - 10+ Beispiele
Kurztitel:      Zsh Feature Show
Art:            Vortrag mit Vorführung
Dauer:          40min, Pause, Q+A bis 2h
Format:         text/plain iso-8859-1
URL:            http://www.guckes.net/talks/2009-11-05.zsh_feature_show.guug.html

Zeit:           Do 2009-11-05 19-21h
Ort:            Büro 2.0, Weigandufer 45, 12059 Berlin
                http://tinyurl.com/buero-zwei-null
                S41+S42 "Sonnenallee";
                Bus 171 "Treptower Bruecke"
Leute:          Julius Plenz und Sven Guckes
Eintritt:       kostenlos; aber um Anmeldung wird gebeten
                (wegen der Reservierung fuer Kneipe danach)

Rahmen:         sage@guug - GUUG Berlin
                http://www.guug.de/lokal/berlin/
Newsletter:     http://lists.guug.de/mailman/listinfo/sage-berlin/
Organisatoren:  Jens Link jenslink(at)guug.de und
                Florian Streibelt Florian.Streibelt(at)guug.de

Zielgruppe:     Shell-Benutzer.
Vorkenntnisse:  Grundkenntnisse der Shell, dh Navigation in der Eingabe,
                Aufrufen von Programme, Verwendung von Pipes und auch der
                History, Konfiguration (zB Aliase), ein Skript geschrieben.

social_media:
facebook:       http://www.facebook.com/event.php?eid=157895637764&index=1
XING:           https://www.xing.com/events/sage-guug-berlin-5-november-2009-zsh-feature-show-422172/description

Abstract/Beschreibung

Wer sich auf einem System einlogt, der bekommt als erstes eine login shell
vorgesetzt.  Dies kann eine csh sein, oder eine ksh, oder auch eine bash.
Die Z-Shell (aka zsh, www.zsh.org) kennen leider noch viel zu wenige.
Dabei integriert sie viele der zuerst genannten Shells
und bietet darüber hinaus noch einiges mehr.

Die Z-Shell hat seit Jahren die Features, die man
bei anderen Shells schon immer vermisst hat -
auch wer sich dessen noch gar nicht bewusst war,
zB erweiterte Aliase, Inline Expansion, Qualifizierer,
erweitertes Globbing + mehr Vervollstaendigungen.
"the Z-Shell is the final letter in shells!" :)
Und das wollen wir mal zeigen..

Was ist es *nicht*?

Dies ist kein Vortrag mit Folien, sondern eine Feature Show, dh sie zeigt
lediglich die *Effekte* des Programms, die man auch gut sehen kann, damit man
einen Eindruck von der Vielfalt der Eigenschaften des Programms erhält.
Darum wird auch nicht erklärt welche der Tasten man drücken muss, um die
Effekte auszulösen.  Das hätte auch keinen Sinn, weil das zum einen viel Zeit
in Anspruch nimmt, und das Ansagen jedes Tastendrucks sehr langweilig ist. ;-)

Ausserdem hat die Z-Shell "free key binding" als Eigenschaft, dh
eine freie Belegung aller Tasten zu Kommandos oder Kommandosequenzen.
Somit kann sich jeder Benutzer seine Lieblingskombinationen selber
zurechtlegen, wie er das wünscht.  Und wen interessieren
da noch wie die voreingestellte Tastenbelegung ist?

Natürlich möchte man lernen, wie man die Tasten
mit Abkuerzungen von Text oder Kommandos belegt -
aber das wäre dann der Stoff für einen Workshop..

Feature Show

Erweiterte Aliase

Global:     alias -g G=' | grep'  NO='&>|/dev/null'
Suffix:     alias -s c=vim  {de,at,com,net,org}='$BROWSER'

Brace Expansion

Zahlensequenzen (Ersatz von "seq"):
% print {23..42} {05..12} schmi{t,d}t@firma.de
% touch file\ {001..100}.{txt,html}

Modul

nur ein Beispiel: zmv - viele Dateien verschieben.
Replace spaces in filenames with a underline:
% autoload zmv
% zmv '* *' '$f:gs/ /_'
Alternativ mit Kurznotation:
% for f (*\ *) echo mv $f ${f:gs/ /_}

Prompts

 PROMPT='%B%U'$(hostname)'%u>%b '
RPROMPT='%1(j.%B(%j%)%b.)'
PWD per ^F anzeigen
% autoload -U promptinit && promptinit
% prompt adam2

Completion

Vervollstaendigung im Menü!
Navigation. Farbe.
Einfügen von Treffern

Was funktioniert frei Haus:
Variablen: echo $M  $M*L
Optionen: setopt csh   csh_JU
xpdf: xpdf 
gpg: gpg --sign
kill: kill    ssh
ssh:  % ssh user/host
      % scp host:  (escaping, quotes)

Dateinamen: Partial completion, matcher-list
      zstyle ':completion:*' matcher-list \
        'm:ss=ß m:ue=ü m:ue=Ü m:oe=ö m:oe=Ö m:ae=ä m:ae=Ä
         m:{a-z}={A-Z} r:|[-_.+,]=** r:|=*'

Inline  Completion -> Beispiel? TODO!
History Completion -> Beispiel? TODO!

Extended Globbing

Exklusion:  rm *~*.tex
Qualifier:  alias lsd='ls -d *(/)'
            alias lsf='ls    *(.)'
            Aufräumen:
            % rm *(mm-1)
            % rm *(ms-23)
            % rm *(L0)
Range:      mv image<0040-0133>.jpg ...
Rekursion:  ls ~/public_html/**/*.html(R)

Key Binding

emacs vs. vi
frei definierbar, Widgets, im Menü.
Beispiele: run-help, copy-prev-word und push-line.

Kleine Helfer

Ein paar Keybindings:
 am Anfang -> ls
Ctrl-X s  -> prepend sudo
Alt-.     -> insert !$

Editieren von Variablen:
% vared PATH

Expansion zum vollen Dateinamen:
% ls -l =foo
% ls -l $(which foo)

% setopt rm_star_wait
"Don't shoot yourself in the foot!"

Multiple redirection:
% date > foo.$$.log >> foo.log

Hashed directories:
% hash -d ex=/usr/share/doc/zsh/examples/
% less ~ex/

Goodies

History:
bindkey "^[[A"   up-line-or-search
bindkey "^[[B" down-line-or-search
... oder sogar im Menu (auch nicht-präfix)!

Links

http://www.opensourcepress.de/zsh-buch
"Zsh - die magische Shell" von Julius Plenz und Sven Guckes
Open Source Press, 221 Seiten, broschiert, EUR24.90,
deutsch, ISBN 978-3-937514-59-8. Kategorie "Synopsis".

http://www.zshbuch.org/
die Webseite zum Buch

Dozenten

Julius Plenz

Jahrgang 1988,
nutzt seit 2003 GNU/Linux-Systeme und seit die 2005 Z-Shell.

Nach diversen Vorträgen auf Computerkongressen und Linuxtagen
schrieb er 2008 mit Sven zusammen das Buch "Zsh".
Nach seinem Auslandsjahr in Tansania hat er nun gerade
sein Mathematikstudium an der FU Berlin begonnen.

Homepage: http://www.plenz.com/
Kontakt: zsh_feature_show(at)plenz.net +49-178-554.23.42

Sven Guckes

Jahrgang 1967,
Studium der Mathematik und Informatik an der
Freien Universität Berlin; lebt in Berlin.

Benutzer der Zsh seit ca 1995.

Vorträge und Workshops zur Zsh in 2004 in Graz und Ludwigsburg; in
2005 in Chemnitz, Brandenburg, Eisenstadt, Wien, Pforzheim und Swansea.

Spezialgebiete:
"Text Tools" (zB less, mutt, screen, slrn, vim, zsh)
und zur Effizienz von User Interfaces
und Free/Libre Software Events.

Projekte:  zu viele. ;-)

Homepage: http://www.guckes.net/sven/
Kontakt: zsh_feature_show(at)guckes.net +49-179-3966141

Hilfsmittel

Wir bringen einen Laptop mit.

Aber einen Beamer brauchen wir schon.
Auflösung von mindestens 1024x768.

Netz:
Ein Zugang zum Netz per ssh nach draussen sollte reichen,
dann kann alles auch im eigenen account gezeigt werden.
Ein Anschluss per Kabel über einen Switch und eine
Konfiguration per DHCP wuerde den Anschluss erleichtern.
Das lokale Netz sollte ssh (port 22) nicht sperren.

Kabel:
Ein Verlaengerungskabel fuer Strom
sowie ein Stromverteiler waere gut.

Workshop:
Workshops machen wir natuerlich gerne.
Möglichst abends oder am Wochenende,
ca 3-5 Stunden, damit es wsa bringt.
Maximal 10 Teilnehmer, damit wir uns auf die
Teilnehmern auch konzentrieren koennen.
EOF