Ich benutze seit vielen Jahren täglich ein Terminal. Ich verwende eine stark angepasste, nicht standardmäßige Shell. Ich mache ausgiebigen Gebrauch von der Tab-Vervollständigung und habe mir die Flags für viele Befehle gemerkt. Bis vor etwa einem Jahr dachte ich, ich hätte den Höhepunkt der Terminalproduktivität erreicht. Dann entdeckte ich eine Welle von Shell-Hilfsprogrammen, die, obwohl obskur, die Art und Weise, wie ich mit meiner Terminalumgebung interagiere, grundlegend zum Besseren veränderten.
Dieser Artikel ist der erste in einer Reihe über diese neuen Dienstprogramme (plus ein paar Tools, die ich schon länger kenne und liebe). Heute werden wir uns Tools ansehen, die speziell zum Bewegen in Ihrem Dateisystem geeignet sind.
Umherspringen:z
Sie wissen, wie Sie die ersten paar Buchstaben einer häufig verwendeten Website in Ihren Browser eingeben und mit der Gewissheit, dass Sie an die richtige Stelle gelangen, die Eingabetaste drücken können? Was wäre, wenn wir dieselbe Erfahrung in Ihre Shell bringen würden? Stellen Sie sich vor, Sie könnten sich zu einem häufig verwendeten Verzeichnis teleportieren, indem Sie einfach einen kleinen Teil seines Namens eingeben. Das ist z
tut.
Das z
Shell-Skript verfolgt die Verzeichnisse, die Sie besuchen, und wann Sie sie besucht haben. Es kombiniert die Häufigkeit Ihres Zugriffs auf ein Verzeichnis mit der Aktualität Ihres Zugriffs, um die "Häufigkeit" Ihres Zugriffs zu bestimmen. Wenn Sie ein paar Buchstaben für den Namen eines Verzeichnisses eingeben, z
wählt den Kandidaten aus, der den bereitgestellten Teilstring mit der höchsten Häufigkeit enthält. Das Ergebnis ist unheimlich oft richtig.
Hier ist es in Aktion:
Kurze Fakten:
bash
/zsh
Implementierung:GitHubfish
Implementierung:GitHub- Lizenz (
bash
/zsh
):WTFPLv2 - Lizenz (
fish
):MIT - Sprache:Shell-Skript
Es gibt eine Reihe ähnlicher Tools wie autojump
und fasd
. Probieren Sie sie alle aus!
Fuzzy-Suche:fzf
Manchmal ist die Suche nach Dingen mit regulären Ausdrücken übertrieben. Es gibt Zeiten, in denen es ausreichen sollte, dass die richtigen Buchstaben in der richtigen Reihenfolge vorkommen. Das fzf
Mit dem Dienstprogramm können Sie schmerzlos nach Fuzzy-Matches suchen. Wie bezieht sich dieses Tool auf die Bewegung in Ihrem Dateisystem? Warte einfach ab und du wirst sehen.
Standardmäßig fzf
funktioniert auf stdin, also können Sie es wie grep
verwenden :
$ fzf < long-log-file.txt
Live-Beispiel:
Denn fzf
funktioniert, um stdin zu filtern und die Ausgabe auf stdout zu senden, können Sie mit diesem Tool viel mehr tun, als Dateien zu durchsuchen. Möchten Sie nach einem Verzeichnis unterhalb des aktuellen suchen?
$ fzf
Stimmt. Wenn stdin keine Pipe ist, fzf
durchsucht alle Dateien darunter und gibt Ihre Auswahl auf stdout aus, was es einfach macht, die Ergebnisse mit anderen Befehlen wie einem Editor zu kombinieren.
Wenn Sie dasselbe mit mehr Kontrolle erreichen möchten, könnten Sie Folgendes ausführen:
$ find . -type d | fzf
Sie können fzf
verwenden um sich fortzubewegen, indem Sie Folgendes ausführen:
$ cd $(find . -type d | fzf) #bash/zsh
$ cd (find . -type d | fzf) #fish
Jetzt gibt es auch andere unterhaltsame Anwendungen. Sie können:
- Rufen Sie Befehle aus Ihrem Verlauf auf mit:
$ eval $(history | fzf) #bash/zsh $ eval (history | fzf) #fish
- Bearbeiten Sie eine Datei unterhalb des aktuellen Verzeichnisses mit:
$ $EDITOR $(find . | fzf) #bash/zsh $ $EDITOR (find . | fzf) #fish
- Wählen Sie die zu installierenden Pakete mit:
$ sudo apt install $(apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | sed 's|([^/]+)/.*|\1|' | fzf) #bash/zsh $ sudo apt install (apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | string split / | fzf) #fish
- Treffen Sie im Allgemeinen Entscheidungen basierend auf Text mit Zeilentrennung. Der Himmel ist die Grenze!
Das fzf
Utility hat bestehende Integrationen mit bash
, zsh
, und fish
. Wenn Sie diese Shells installieren, fzf
ergänzt und erweitert auf natürliche Weise Arbeitsabläufe wie "umgekehrte Indexsuche" und Tab-Vervollständigung. Ich bin ein intensiver Nutzer von fish
Integration, ich selbst.
Kurze Fakten:
- Hole
fzf
:GitHub - Lizenz:MIT
- Sprache:Los
Möchten Sie mehr?
Wenn Ihnen diese Tools nützlich erscheinen, bleiben Sie dran für weitere Artikel. Wenn Sie es kaum erwarten können, diese Serie basiert auf diesem Vortrag, den ich bei All Things Open 2019 gehalten habe. Dort finden Sie weitere Tools und Tricks.