Peco pour filtrer de manière interactive en ligne de commandes

Peco est un outil simple pour filtrer de manière interactive. Il est sous licence MIT, disponible sous GitHub et activement maintenu (dernière version 0.5.1 du 17/03/2017). C’est un dérivé de percol (en Python, dernier commit 24/01/2016). Une petite démo de Peco tirée de sa page GitHub.

Peco est écrit en Go et est disponible pour Linux, Unix, *BSD, Mac OS X, Windows. Ses principales qualités :

  • Il est simple à utiliser et interactif. Il remplacera avantageusement grep pour les allergiques à la ligne de commandes et il fera gagner beaucoup de temps aux devs/sysadmins
  • Sur Linux et Unix il est proposé en tant que simple fichier exécutable (c’est la méthode recommandée d’installation), il nécessite Go et que le fichier soit exécutable donc pas besoin d’être root

Un simple fichier exécutable que vous mettez où vous voulez

Pour Debian en simple utilisateur (typiquement sur un serveur où vous n’avez pas un accès root).

wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar xf peco_linux_amd64.tar.gz && mv peco_linux_amd64/peco ~/
chown babar: ~/peco && chmod +x ~/peco
rm -r peco_linux_amd64 peco_linux_amd64.tar.gz
/home/babar/peco --help

Pour Ubuntu en simple utilisateur.

wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar xf peco_linux_amd64.tar.gz && mv peco_linux_amd64/peco ~/.local/bin/ # mkdir -p ~/.local/bin/ si le dossier n'existe pas
chown babar: ~/.local/bin/peco && chmod +x ~/.local/bin/peco
rm -r peco_linux_amd64 peco_linux_amd64.tar.gz
peco --help

Pour Debian en root (Pour Ubuntu voir Mémo installation packages Xubuntu).

wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar xf peco_linux_amd64.tar.gz && mv peco_linux_amd64/peco /usr/local/bin/
chown root:staff /usr/local/bin/peco && chmod +x /usr/local/bin/peco
rm -r peco_linux_amd64 peco_linux_amd64.tar.gz
peco --help

Les bases et quelques exemples d’utilisation

Vous trouverez les raccourcis clavier/souris ici, à regarder obligatoirement :
Touche Echap ou Ctrl + c pour sortir de peco
Touche Entrée pour sélectionner la ligne où se trouve le curseur, envoyer la ligne sur STDOUT et sortir de peco
Ctrl + espace pour sélectionner la ligne et aller à la ligne suivante
Ctrl + r pour changer de filtre (IgnoreCase, CaseSensitive, SmartCase, Regexp, Fuzzy)

Quelques exemples d’utilisation.

ps aux | peco
set | peco --query home
cat /etc/passwd | peco --query babar
peco /var/log/syslog
peco --query color /etc/systemd/user.conf
cat /var/log/auth.log | peco --query 'babar may 20'

Options de la ligne de commandes

Voir ici pour la liste complète. Quelques options intéressantes :
--query : Spécifier la requête de recherche à utiliser lors du lancement de peco
--layout : Positionner la barre de recherche soit en haut soit en bas
--exec : Exécuter la commande spécifiée sur les lignes sélectionnées en quittant peco. La commande reçoit les lignes sélectionnées de STDIN et sera exécutée par /bin/sh -c

Fichier de configuration

Vous trouverez ici les indications du fonctionnement du fichier de configuration, j’ai choisi de le placer dans $HOME/.config/peco/config.json.

Voici mon fichier de config.

mkdir -p ~/.config/peco && nano ~/.config/peco/config.json
{
    "Prompt": "Jacques a dit :",
    "StickySelection": true
}

Il y a bien entendu d’autres options, je vous laisse les consulter. J’attire votre attention sur StickySelection qui permet de conserver les lignes sélectionnées même si vous changez votre requête de recherche (on sélectionne plusieurs lignes avec Ctrl + espace par exemple).

Keymaps et Styles

Peco permet de configurer finement les raccourcis clavier, on se rendra dans Keymaps pour cela en s’appuyant notamment sur Available Keys, Available Actions, Default Keymap. Jetez un œil sur les Combined Actions permettant de définir une action personnalisée genre sélectionner 4 lignes d’un coup avec un seul raccourci clavier.

On peut changer le rendu visuel de Peco via les différents styles proposés.

Quelques critiques

Essayer peco, c’est l’adopter. Cela ne doit cependant pas cacher ses défauts :

  • L’option --exec est loin d’être top alors qu’elle était très prometteuse, je la trouve mal pensée, elle est quasiment inutilisable
  • La feature à suivre (il y a une issue ouverte) est un Zoom.In/Zoom.Out. Typiquement dans un log on a trouvé ce qu’on cherchait on voudrait bien voir les XX lignes avant et après le terme recherché. Tout le monde pour réclamer la feature sur GitHub ! Moi c’est fait ;)
  • Il est dommage que les options n’existent pas en version courte par exemple -q pour remplacer --query
  • Un raccourci clavier pour ouvrir le fichier à l’endroit sélectionné avec son éditeur favori (vim, nano, etc.)

En somme c’est un outil encore un peu jeune mais qui mérite toute votre attention et que vous adopterez très probablement.

Tcho !

Les commentaires sont fermés.