12 Dezember 2015 19:08

Lesezeichen in Bash

Wer häufiger die Shell nutzt, weiß, wie viel Zeit man beim Navigieren durch das Dateisystem braucht. Zwar gibt es einige Abkürzungen (cd -, pushd, Tab-Vervollständigung, …), aber es raubt dennoch einige Zeit.

Oftmals sind es aber immer die gleichen Ziele, die sich ungünstigerweise hinter langen Pfaden verstecken. Eine Zeit lang habe ich im Home ein Verzeichnis mit Symlinks gepflegt, zu denen ich dann mittels cd -P gewechselt bin. Das ist aber immer noch recht umständlich, sodass ich mich auf die Suche nach einer Alternative gemacht habe.

Auf der Suche nach Lösungen

Es ist ja nicht so, dass ich der erste mit solchen Problemen wäre. Dementsprechend gibt es auch bereits einige Tools, die Lesezeichen zur Shell hinzufügen.

  • bashmarks – Ein übersichtliches Tool, welches Lesezeichen in einer Datei speichert. Es gibt für die Verwaltung Befehle mit einem Buchstaben: s, g, p, d, l. Ich hätte es aber lieber alles in einem Befehl.
  • jump – Ein zentraler jump-Befehl mit einigen Optionen zur Verwaltung und Vervollständigung von Namen innerhalb des Ziels. Der Nachteil ist, dass es in Ruby geschrieben ist und somit etwas umfangreichere Abhängigkeiten hat als gewünscht.
  • autojump – Ein netter Ansatz: Man fügt die Favoriten nicht manuell hinzu. Stattdessen wird die Verzeichnisaktivität protokolliert, sodass man relativ schnell zu häufig genutzten Verzeichnissen springen kann. Mir ist da aber wiederum zu viel "Magie" im Spiel und mit etwas Pech bekommt man unerwünschte Vorschläge. Außerdem ändert es PROMPT_COMMAND und wird somit bei jedem Befehl ausgeführt.

Daneben gibt es auch noch diverse Vervollständigungs-Tools, mit denen man beliebige Pfade vervollständigen kann. Wesentlich flexibler als bash-completion, aber immer noch recht fordernd, da man ständig den Ist-Zustand überprüfen und immer noch recht viele Zeichen eingeben muss.

Eigenentwicklung

Da ich mit keiner der fertigen Lösungen zufrieden war, habe ich mir selbst ein kleines Script geschrieben. Es vereint einige Features der oben genannten Tools, hat jedoch wenig Abhängigkeiten (Bash sollte normalerweise genügen) und ist KISS.

Die Installation ist relativ einfach: Die Datei muss in der Bash-Konfiguration gesourced werden (z.B. in der ~/.bashrc). Anschließend steht der Befehl jump zur Verfügung. Über diesen können die Lesezeichen verwaltet und aufgerufen werden:

  • jump -c foo: Erstelle ein Lesezeichen für das aktuelle Arbeitsverzeichnis mit dem Namen "foo".
  • jump -d foo: Lösche das Lesezeichen "foo".
  • jump -l oder einfach nur jump: Liste alle Lesezeichen mit den jeweiligen Zielen auf.
  • jump foo: Springe zum Lesezeichen "foo".

Die Lesezeichen werden als Symlink in ~/.local/share/bashjump gespeichert, sodass sie auch leicht manuell bearbeitet und genutzt werden können. Auf der TODO-Liste steht zur Zeit eine Vervollständigung von Verzeichnissen innerhalb der Ziele wie bei "jump".

Kommentare

Jörgel, 27.12.2015 22:21
Klappt prima! Vielen Dank!
SammysHP, 25.06.2017 16:00
Vor einem Monat habe ich nun endlich auch die TODO-Liste abgearbeitet. Meine bashjump Eigenentwicklung kann nun direkt zu Unterverzeichnissen wechseln:

$ jump photos/wedding
Powered by BetaBlog
Login | RSS Beiträge RSS Kommentare Impressum