Avoir un historique des commandes shell est une excellente idée. C’est, bien sûr, extrêmement pratique lorsque vous devez exécuter quelque chose de manière répétitive ou que vous faites une simple erreur qui doit être corrigée. Cependant, comme je l’ai mentionné dans le passé, l’historique de bash n’est pas sans problèmes. D’une part, par défaut, vous n’obtenez pas l’historique dans une fenêtre en tapant dans une autre fenêtre. Si vous utilisez un multiplexeur de terminal ou une interface graphique, vous aurez très probablement de nombreux shells ouverts. Vous pouvez leur faire partager l’histoire, mais cela vient avec son propre bagage. Si vous y réfléchissez, nous avons des ordinateurs super rapides avec des tonnes de stockage par rapport aux « anciens jours », mais l’histoire du shell est à peu près la même qu’elle l’a été pendant des décennies. Mais [Rcaloras] y a pensé et a créé Bashhub, une base de données d’historique pour bash, zsh et probablement d’autres shells également.
Vous pourriez penser que vous n’avez besoin de rien de plus que ce que vous avez, et, bien sûr, ce n’est pas le cas. Cependant, Bashhub propose un historique stocké et crypté de manière privée sur toutes les machines. Il fournit également un contexte sur les commandes que vous avez exécutées dans le passé. En d’autres termes, vous pouvez voir le répertoire dans lequel vous étiez, l’heure et la date exactes, le système sur lequel vous étiez et le dernier code de retour de la commande.
Ils m’appellent le chercheur
La meilleure partie, cependant, est que vous pouvez facilement rechercher dans votre historique en utilisant toutes ces informations. Donc, si vous voulez connaître la dernière commande que vous avez exécutée dans le répertoire ~/.ssh de votre ordinateur nommé FISHMONGER (nous ne jugeons pas), vous pouvez la rechercher.
Vous pouvez également rendre les recherches interactives comme vous vous y attendez probablement de l’histoire. En d’autres termes, vous tapez, et il vous montre les choses qui correspondent, vous donnant de moins en moins au fur et à mesure que vous tapez plus.
Discrétion s’il-vous-plaît
Bien sûr, certains seront nerveux à l’idée d’avoir un historique stocké quelque part, et c’est une préoccupation légitime. Les développeurs affirment que les données sont cryptées et privées, mais elles sont stockées sur un serveur via https, pas sur votre machine locale. De plus, vous pouvez désactiver l’enregistrement et supprimer des commandes comme bon vous semble. Le mécanisme d’historique n’enregistre pas les mots de passe que vous entrez à l’invite et, honnêtement, si vous mettez des données sensibles sur la ligne de commande, vous devriez probablement réfléchir à la sagesse de cela, de toute façon.
Il existe un moyen de mettre un filtre s’il y a des choses que vous ne voulez vraiment jamais mettre dans l’histoire. Ou ajoutez #ignore à la fin d’une commande pour la garder hors de l’historique. Bien sûr, tout cela suppose que vous fassiez confiance au développeur pour respecter les filtres, stocker les données chiffrées, et tout ça.
Ce qui nous inquiète le plus, cependant, c’est qu’il en coûte quelque chose pour faire fonctionner ce serveur. Nous imaginons donc qu’ils voudront éventuellement facturer le service ou qu’il disparaîtra. Le code est sur GitHub donc, vraisemblablement, vous pourriez l’auto-héberger, si vous étiez prêt à le résoudre, mais cela semble être beaucoup de travail.
Honnêtement,…
Nous aimons l’idée. Nous aurions été tout aussi heureux, cependant, d’avoir le fichier d’historique situé quelque part que nous pourrions contrôler au moins marginalement. La plupart des gens qui l’utiliseraient ont une sorte de serveur accessible au public de nos jours, et il existe de nombreuses options de stockage en nuage.
Cependant, si cela ne vous dérange pas d’envoyer vos données d’historique via une connexion vraisemblablement cryptée à une base de données vraisemblablement cryptée, essayez-la peut-être. Il semble facile à désinstaller. Selon la documentation, vous supprimez simplement ~/.bashhub. Bien sûr, cela laisse un petit bout dans votre fichier de démarrage qui cherche à voir si ce répertoire existe, mais c’est inoffensif.
L’installation est également facile :
curl -OL https://bashhub.com/setup && $SHELL setup
Vous pouvez brancher la valeur de $SHELL
manuellement si vous le souhaitez et utilisez bash, zsh ou fish.
Exemples
Vous voulez retrouver vos 10 dernières commandes emacs ?
bh -n 10 "emacs"
Ou rendez la recherche interactive (vous pouvez également intégrer fzf, si vous le souhaitez) :
bh -i "emacs"
Quelles sont les dernières commandes que vous avez exécutées dans /tmp ?
bh -n 3 -d /tmp
Ça marche!
Cela fonctionne bien et ne semble pas ralentir les choses, même si, avec les ordinateurs et les connexions réseau d’aujourd’hui, c’est difficile à dire. L’exécuter sur du vieux matériel pourrait être une autre histoire. On peut imaginer quelques améliorations comme pouvoir retrouver une ligne dans l’historique et la transformer en alias ou la sauvegarder dans un script. Les accros aux statistiques voudront peut-être récupérer les données brutes et répondre à des questions telles que « Quel était mon programme le plus utilisé sur l’ordinateur hôte DARKSTAR ? »
Nous avons déjà parlé de fzf, et cela fonctionne bien avec Bashhub. Nous aimerions pouvoir stocker la base de données localement et la synchroniser nous-mêmes entre nos machines.