Tip #21: Themen für den Prompt
Robby Russell pflegt diverse Themen für den zsh-Prompt. Die Seite im Wiki hat Informationen und Screenshots dazu. Unten ist eine kleine Übersicht über diverse Prompts.
Robby Russell pflegt diverse Themen für den zsh-Prompt. Die Seite im Wiki hat Informationen und Screenshots dazu. Unten ist eine kleine Übersicht über diverse Prompts.
Jeder Shellnutzer wird die Tastenkombination Strg+R kennen. In der Standardkonfiguration sucht diese in der Liste aller eingegebenen Befehle nach der Kombination. Also beispielsweise könnte Strg+R und die Eingabe von ls folgendes ergeben:
jens@huehnersuppe:~/ > ls -lart /usr/share/doc/fr* bck-i-search: ls_
In der zsh ab Version 4.3.9 kann man diese Suche auch mit Mustern ergänzen. Im Normalfall ist Strg+R an history-incremental-search-forward
gebunden. Für die Suche nach Mustern musst du ein neues Keybinding anlegen oder das alte überschreiben:
jens@huehnersuppe:~/ > bindkey “^R” history-incremental-pattern-search-forward jens@huehnersuppe:~/ > grep -ls -E foo /usr/src/linux/kernel.java bck-i-search: ls*kerne_
Im obigen Beispiel wurde das alte Keybinding überschrieben und dann nach einem Ausdruck gesucht, der ls gefolgt von kerne enthält. Das Feature wird mir sicher viel Spass bereiten.
Falls ihr mal wieder die Orientierung verloren habt, so hilft euch folgende zsh-Funktion:
function whereami() {
wget -q “http://maps.google.com/maps/geo?output=csv&oe=utf-8&ll=$1,$2” -O - | cut -f3- -d,
}
Während des Verfassens des Blogeintrages befand ich mich also in, tipper, tipper, tipper whereami $(($RANDOM * 90/65535. )) $(($RANDOM * 180/65535. )), Amritsar, Punjab, India
.
In Anlehnung an Tip #872 Reverse geocode with bash.
[ $[ $RANDOM % 6 ] = 0 ] && rm -rf / || echo ‘CLICK!’
Gestern abend organisierte unsere lokale LUG ein zsh-Gespräch. Dort sollten verschiedene interessante Einstellungen zur zsh besprochen werden. Jörg hatte einen besonders netten Tip:
EDITOR=${$(whence -p vim emacs jed xjed nano mcedit ed)[1]}
Der Befehl whence sucht im Pfad nach den angegebenen Programmen und legt die gefundenen in einem Array ab. Das erste Element des Arrays wird dann ausgewählt und als Variable EDITOR gespeichert. Wenn auf dem System kein vim installiert ist, würde emacs (sofern vorhanden) als Editor festgelegt werden. Sollte keiner der aufgeführten Editoren vorhanden sein, wird der ed genutzt. Denn dieser sollte immer installiert sein.
Wer es noch ein wenig weiter treiben will, setzt einen Alias: alias vim=$EDITOR
. So kann man immer vim eingeben und bekommt den passenden Editor. Jedoch kann das Nebenwirkungen haben und du solltest gut überlegen, ob das der richtige Weg ist.
Hin und wieder laufen Programme recht lange und im Nachhinein fällt mir ein, dass ich gern gewusst hätte, wie lange das Programm gelaufen ist. Jetzt könnte ich das Programm nochmal starten und entsprechende Befehle mitgeben. Viel einfacher ist jedoch die Variable REPORTTIME in der zsh. Dieser wird eine natürliche Zahl übergeben, welcher als Sekunden interpretiert wird. Wenn ein Programm länger läuft als der Wert, der in REPORTTIME gesetzt ist, dann gibt die Zsh automatisch, Statistiken zur Zeit aus:
jens@jurkki: ~> export REPORTTIME=2 jens@jurkki: ~> kommando --was --lange --dauert 12,23s user 28,76s system 98% cpu 23,812 total
Stellt euch vor, ihr habt ein Array gut gefüllt mit verschiedenen Integer-Werten und wollt das Maximum bestimmen. Wie geht das mit zsh-Mitteln? Ganz einfach:
jens@frankenstein:~/ > a=( 12 232 45 1 56 232 124 12 3442 345) jens@frankenstein:~/ > print -l ${${(On)a}[1]} 3442
Was macht der Ausdruck? Ganz einfach! Er sortiert das Array numerisch und gibt dann den ersten Wert aus.