Une commande fuzzy-finder pour Linux : fzf
Au travers de bat, j’ai découvert la commande fzf (Fuzzy Finder). Cette dernière facilite les recherches au sein d’un terminal. Elle offre de nombreuses possibilités en la couplant avec d’autres commandes. Elle permet aussi bien de faire des recherches que de filtrer des résultats ou encore d’afficher des aperçus.
À propos de fzf
Le projet fzf a été créé par Junegunn Choi en 2013. Il est distribué sous licence MIT et vous pouvez trouver le code source sur son repo Github. Il s’agit d’une autre commande écrite en Rust comme exa et bat.
Pour l’installer, vous trouverez certainement le paquet dans les dépôts de votre distribution.
- Manjaro :
sudo pacman -S fzf
- Ubuntu :
sudo apt-get install fzf
- Windows, via un gestionnaire de paquet comme Chocolatey :
choco install fzf
- Mac :
brew install fzf
Vous aurez peut-être une manipulation supplémentaire à faire si vous souhaitez utiliser les raccourcis clavier. Par exemple, sur Manjaro avec Zsh il faudra ajouter une ligne dans .zshrc
:
# Keybindings for fzf
source /usr/share/fzf/key-bindings.zsh
Qu’est-ce que permet fzf ?
La commande fzf
permet de nombreuses choses, il serait difficile d’être exhaustif. Je vais donc me contenter de vous donner quelques exemples pour vous donner une idée des possibilités.
Filtrer les résultats de find
En utilisant le pipe pour combiner find
et fzf
, vous pourrez filtrer facilement les résultats de find
. Par exemple, si vous recherchez tous les fichiers (récursivement) présent dans le dossier courant, vous allez utiliser find .
. Avec fzf
, vous pourrez filtrer la sortie très facilement :
find . | fzf
En fait, vous pouvez utiliser fzf
directement, vous obtiendrez la même la même puisqu’il s’agit de la commande par défaut. Il est possible d’en définir une autre.
Si vous êtes attentif, lors de la 2e recherche, j’utilise l’option -e
. Cette dernière permet de faire une recherche exacte.
Rechercher une commande dans l’historique
En combinant history
et fzf
, vous pouvez lister l’historique de votre terminal et effectuer une recherche pour retrouver la commande qui vous intéresse.
history | fzf
Si vous avez activé les raccourcis clavier, vous pouvez également faire Ctrl + R
dans votre terminal ; la recherche démarrera. Quand vous aurez sélectionné une commande, plutôt que de s’afficher en sortie, elle s’affichera directement au niveau du prompt. Ainsi, vous pourrez la réutiliser ou l’éditer facilement.
Éditer un fichier après une recherche fzf
fzf
peut s’avérer utile pour éditer rapidement un fichier sans avoir à parcourir l’arborescence. Si vous êtes dans un dossier parent du fichier à éditer (par exemple votre répertoire utilisateur), vous pouvez utiliser :
nano $(fzf)
La commande fzf
va lister tous les fichiers récursivement. Vous pouvez filtrer la liste en tapant des mots ou des lettres, puis vous pouvez sélectionner le fichier qui vous intéresse. Ce dernier sera aussitôt passé à nano
pour l’éditer.
Afficher un aperçu
Par exemple, si vous utilisez bat
et que vous souhaitez afficher un aperçu des thèmes pour un fichier donné, il suffit de faire :
bat --list-themes | fzf --preview="bat --theme={} --color=always /chemin/du/fichier"
Ici, il s’agit d’un exemple avec bat
, mais il est possible d’afficher des aperçus pour d’autres commandes.
Afficher des informations sur un fichier et exécuter une commande
Le wiki d’Archlinux propose cette commande :
pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns
Lorsque vous l’exécutez, la liste des paquets installés sur votre machine sera listée avec fzf
et un aperçu sera affiché sur le côté avec les informations des paquets. Vous pouvez alors sélectionner un ou plusieurs paquets pour les supprimer.
Et ce ne sont que quelques exemples
Je pense qu’il est difficile de couvrir toutes les possibilités de fzf
puisqu’il est possible de le coupler avec un grand nombre de commandes et de l’intégrer dans des scripts bash. Par exemple, voici une autre utilisation que je trouve intéressante : Casey Brant utilise un script pour simuler un bloc-note. En l’exécutant dans son répertoire de notes, il peut éditer n’importe quel fichier et revenir à fzf
automatiquement.
Cet exemple utilise Vim, mais le script fonctionne également avec d’autres éditeurs. Il est également possible de remplacer cat par bat pour ajouter des couleurs, les numéros de ligne, etc.
0 commentaire
Laisser un commentaire