Musst du oft lange Datei- oder Verzeichnislisten durchforsten, um das zu finden, was du suchst? Kannst du dich manchmal an den genauen Namen und Speicherort nicht erinnern? 😩
Super! Denn dieser Artikel zeigt dir, wie du mit fzf
(Fuzzy Finder) blitzschnell und intuitiv durch alles stöbern kannst. Das geht für Dateien, aber auch für die Befehls-Historie bis hin zu laufenden Prozessen. So kommst du oft schneller als Ziel, als mit anderen Befehlen.
fzf
ist ein kommandobasiertes, interaktives Filter-Tool, das Eingaben von stdin
entgegennimmt und eine fuzzy-gematchte, interaktive Liste zur Auswahl präsentiert.
Installation
Bei vielen Linux-Distributionen ist das Paket fzf
nicht vorinstalliert. Aber das lässt sich ganz leicht nachholen:
|
|
Grundlegende Syntax
Generisch sieht der einfache Aufruf von fzf
so aus:
|
|
Deine Auswahl wird dann auf stdout
(Konsole) ausgegeben. Seine wahre Stärke entfaltet fzf
in Kombination mit anderen Befehlen (Pipes) und Shell-Keybindings.
Erstes Beispiel
Klingt kompliziert? Lass es uns besser am ersten, praktischen Beispiel erkunden:
|
|
Die Eingabe von history
gibt deinen Befehlsverlauf aus. Kennst du den Befehl noch nicht, dann ist jetzt ein guter Moment den passenden Artikel dazu zu lesen und dann hierher zurück zu kommen.
Diese Daten werden an fzf
weitergegeben. Es öffnet ein interaktives Fenster, in dem du mit Fuzzy-Matching jeden früheren Befehl finden und auswählen kannst.
Die Auswahl erfolgt einfach mit den Pfeiltasten und wird dann in der Kommandozeile ausgegeben:
|
|
Solltest du nicht fündig werden oder keine Auswahl treffen wollen, kannst du den Dialog mit der Tastenkombination [Strg] und [C] wieder verlassen.
Kannst du schon den Vorteil erkennen? Deine eingegebenen Zeichen müssen nicht genau so in der Befehlshistorie auftauchen. Auch für andere Anwendungsfälle gilt das äquivalent. Daher heisst das Tool auch Fuzzy Finder, weil man fuzzy mit ungenau übersetzen kann.
Wichtige Optionen von fzf
Aber bevor wir weiter auf den praktischen Einsatz von fzf
schauen, will ich dir ein paar wichtige Parameter zeigen, die du bei dem Befehl verwenden kannst:
Option | Bedeutung |
---|---|
--reverse |
Zeigt die Auswahlliste von umgekehrt an (standardmäßig ist es von unten nach oben). |
--multi |
Erlaubt die Auswahl mehrerer Einträge mit der [Tab]-Taste. |
--height N% |
Begrenzt die Höhe des fzf -Fensters auf N Prozent des Terminalfensters. |
--query=SUCHE |
Startet die Suche direkt mit dem angegebenen Suchbegriff. |
-f SUCH_MUSTER |
Filtert die Eingabe nicht-interaktiv (für Skripte). Ähnlich wie grep , aber unscharf. |
--preview 'BEFEHL' |
Zeigt eine Vorschau des aktuell ausgewählten Elements an, wie mit cat {} . |
So weit die Theorie 📖
Praktische Beispiele
Lass uns jetzt wichtige Use-Cases von fzf
anschauen, die dich definitiv zu einem effektiveren Linux-Nerd machen werden 😄
Befehlshistorie history
filtern
Vielleicht willst du einen Befehl erneut ausführen. Du kannst history | grep 'suchbegriff'
verwenden. Aber dann wird nur etwas ausgespuckt, wenn dein 'suchbegriff'
genau so vorkommt. und vielleicht musst du das öfter wiederholen. Das wird schnell lästig.
Besser kannst du eine Fuzzy-Suche auf deine bisherigen Befehle starten:
|
|
Details dazu hatten wir ja im weiter oben bereits.
Ordner wechseln
Bestimmt kennst du cd
(nein, ich meine nicht die 💿) zum Wechsel in einen anderen Ordner.
Aber das geht auch als unscharfe (fuzzy) Aktion mit fzf
. Mit einem speziellen Keybinding reicht:
|
|
Wie geht es also genau? Hier sind die Schritte:
- Du gibst
cd **
ein - Drücke dann die [Tab]-Taste und [Enter]
- Jetzt öffnet
fzf
die Verzeichnis-Auswahl für dich - Gib deinen Suchbegriff ein und drücke wieder [Enter]
So landest du im ausgewählten Ordner. Wenn nichts Passendes dabei ist, kannst du die Aktion auch wieder mit [Strg] und [C] abbrechen.
Hier habe ich zum Beispiel den Wechsel in einen Pfad innerhalb von /etc
vorgenommen:
Probier es einfach aus. Das Keybinding ist nämlich meist voreingestellt, sodass es funktionieren wird.
Funktioniert das Keybinding
cd **
nicht?
- führe
echo 'eval "$(fzf --bash)"' >> ~/.bashrc
aus- und lies die Datei mit
source ~/.bashrc
danach neu ein
Dateien suchen und anzeigen
Auch mit find
lässt sich fzf
hervorragend verbinden für eine mächtige Dateisuche.
So suchst du zunächst nur Dateien, die du dann interaktiv filterst:
|
|
Datei-Vorschau anzeigen
Oft verwendet man head oder tail für eine Dateivorschau. Auch das kannst du mit fzf
zusammen verwenden.
So siehst du dir die ersten 10 Zeilen einer Datei direkt in der Auswahl an, bevor du sie öffnest:
|
|
Datei interaktiv auswählen und öffnen
Oft will man eine Datei nicht nur ansehen, sondern auch bearbeiten.
So öffnest du eine Datei interaktiv in deinem bevorzugten Editor:
|
|
Der Parameter height
bestimmt dabei, wie hoch der Auswahlbereich für die Selektion der Datei ist.
Prozess beenden
Willst du einen Prozess beenden, so musst du meist erst die PID suchen und dann kill
mit dieser Angabe und einem optionalen Signal für kill
ausführen.
Auch das geht einfacher mit fzf
. Finde und beende einen Prozess ohne mühsames Suchen der PID.
Starte zunächst einen harmlosen Dummy-Prozess im Hintergrund:
|
|
Jetzt lässt du dir alle Prozesse anzeigen:
|
|
Zum beenden suchst du nach sleep
und drückst [Enter], um ihn vor Ablauf der 60 Sekunden zu beenden.
SSH-Hosts durchsuchen
Auch SSH-Verbindungen lassen sich mit fzf
interaktiv aufbauen.
So durchsuchst du deine ~/.ssh/config
und verbindest dich:
|
|
Auch die Datei ~/.ssh/known_hosts
könntest du in der gleichen Form verwenden. Das geht sogar super-duper am einfachsten 🆒
|
|
Durch Git-History stöbern
Vielleicht arbeitest du auch mit git
. Dann siehst du dir manchmal die Commits an. Danach kannst du zu dem gewünschten Eintrag die Details aufrufen.
Eine übersichtliche Git-History und Details zu einem Eintrag kannst du auch mit fzf
erhalten:
|
|
Fazit
fzf
revolutioniert deine Produktivität 🚀 in der Arbeit mit der Shell. Es verwandelt mühsames Suchen in einen schnellen, intuitiven Dialog mit deinem Rechner.
Verwende fzf
in deine täglichen Aufgaben und du wirst dich fragen, wie du jemals ohne es auskommen konntest.
Cheat Sheet für fzf
Leg das neben deine Tastatur, wenn du es mit fzf
ernst meinst 🔥
|
|
Hilfe zu fzf
Mehr zu fzf
und all seinen Optionen findest du unter:
|
|
Auf der Projektseite findest du weitere ausführliche Dokumentation, Beispiele und Anleitungen.
Details zum Befehl tldr
gibt es hier.