EXPLAINSHELL : chaque argument de votre commande expliqué par sa man page

https://explainshell.com/

📌 EXPLAINSHELL est un service web qui prend une ligne de commande, la découpe et colle sous chaque argument le passage exact de la man page qui l’explique. On tape, on clique sur EXPLAIN, et le mystère de tar xzvf s’évanouit.

Le problème est connu : les man pages sont vastes, écrites pour la référence, pas pour la lecture fluide. Vous tombez sur find . -type f -print0 au détour d’un script, vous devinez, vous continuez. Pire : un crontab hérité d’un prédécesseur, avec ses cut, ses redirections et ses boucles for en cascade. explainshell coupe court. Chaque token se colore, une ligne le relie au bon paragraphe d’aide, et les opérateurs du shell — pipes, &&, redirections, sous-shells — sont décortiqués eux aussi.

L’interface tient en une phrase : un champ de saisie et des boîtes de texte reliées par des traits. Spartiate, mais d’une lisibilité redoutable. Un sélecteur choisit la source des man pages — Ubuntu 26.04, Arch dans sa version courante, ou tout — et la page d’exemples va jusqu’à disséquer la fameuse fork bomb :(){ :|:& };:, sans jugement.

Sous le capot, la mécanique est propre. La commande est d’abord analysée en arbre syntaxique par bashlex, puis chaque nœud est confronté à une base SQLite de man pages pré-traitées, avec leurs options extraites et leurs alias — git commit pointe ainsi vers la page git-commit. Détail qui vaut le détour : l’extraction des options fait désormais appel à des modèles de langage, mais le modèle ne génère aucun texte. Il renvoie des plages de lignes du document original, découpées telles quelles. Ce qui s’affiche vient toujours de la man page, jamais de l’imagination d’une IA. Je trouve cette contrainte élégante : on profite du LLM sans hériter de ses hallucinations.

explainshell est open source, sous GPLv3, et se prête au self-hosting sans douleur : on clone le dépôt, on télécharge la base depuis une release GitHub, make serve, et l’outil tourne sur localhost:5000. Pratique pour une machine déconnectée ou un réseau interne. Petite nuance juridique : la base de données agrège des man pages qui gardent chacune leur licence d’origine, la GPLv3 ne couvre que le code. Nuance d’usage aussi : tout dépend de la couverture. Les outils courants sont traités, une commande exotique peut rester sans explication.

  • 🔍 Chaque argument relié au texte exact de la man page
  • 🧩 Pipes, &&, redirections et sous-shells également décortiqués
  • 🐧 Man pages Ubuntu et Arch, sélectionnables à la volée
  • 🏠 Self-hosting en quelques commandes, base SQLite incluse
  • 🤖 Extraction assistée par LLM, sans une ligne inventée

Utilisé pour relire un script piqué dans une CI ou vérifier une option de ssh avant de l’exécuter, l’outil rend service en dix secondes. Un vétéran du terminal, rafraîchi avec mesure.

Sources

  • Site officiel — explainshell.com
  • GitHub — idank/explainshell

Publications similaires

Laisser un commentaire