Version: Mon Nov 02 13:00:00 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.txt 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@guug.de und Florian Streibelt Florian.Streibelt@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. = 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