Skip to content

Tip #20: Effektive Suche in der History

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. ;-)

Tip #19: Wo bin ich?

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.

Tip #17: Lieblingseditor nutzen

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.

Tip #16: Automatisch Zeit messen

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

Tip #15: Maximum in einem Array finden

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.

tweetbackcheck