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

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

LeSpocky on :

Ich habe history-incremental-pattern-search-forward eingetragen und mich gewundert, warum der bei Druck auf Strg+R nichts findet, also nicht tut, was ich erwarte. Der Grund ist der, dass Strg+R per default an history-incremental-search-backward gebunden ist, was der Beginn der Zeile mit bck-i-search auch nahelegt. Tippe ich das aber so ein wie oben beschrieben, sehe ich da fwd-i-search. Ich habe Dein Beispiel dann ein wenig abgeändert und folgendes in meiner ~/.zshrc eingetragen:

QUOTE:
autoload is-at-least
is-at-least 4.3.9 && bindkey “^R” history-incremental-pattern-search-backward


Danke für den Tipp, mit ein bisschen umbasteln ist das wirklich super. :-)

Jens Kubieziel on :

Hast recht. Vielleicht sollte ich die Beispiele vor dem Speichern nochmal durchtesten. :-)

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

You can use [geshi lang=lang_name [,ln={y|n}]][/geshi] tags to embed source code snippets.
Form options
cronjob