Petit billet rapide pour un outil que j'ai découvert il y a relativement peu mais que j'adore, il s'agit d'Atuin, une petit logiciel permettant de voir l'historique de ses commandes shell (compatible avec bash, zsh, fish et d'autres) dans la même veine qu'un zsh-history-substring-search mais avec l'avantage de pouvoir synchroniser cela sur le web, de manière chiffrée de bout à bout (avec chiffrement depuis le client).

Atuin - Shell History & Executable Runbooks

Parfait pour ne plus perdre l'historique de ses shells entre deux machines. Il a même la possibilité de pouvoir créer des alias pour le shell et de les synchroniser également, de même pour pour la synchronisation des dotfiles... que demande le peuple ?!

Pour commencer c'est simple, il suffit d'entrer la commande suivante sur votre shell :

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

Ensuite de créer un compte :

atuin register -u <YOUR_USERNAME> -e <YOUR EMAIL>

Vous recevrez alors une clé de chiffrement, composée de 24 mots, qui vous permettra de déchiffrer localement votre historique.

Sur vos autres machines, il suffira d'installer Atuin puis de vous connecter à votre compte :

atuin login -u <USERNAME>

Cela vous demandera ensuite votre clé de chiffrement afin de pouvoir récupérer votre historique et de chiffrer/déchiffrer vos données.

Vous pouvez éventuellement ajouter cela à la fin de votre .***rc (comme .zshrc), si ce n'est pas déjà présent :

eval "$(atuin init zsh)"

À partir là il n'y a plus rien à faire manuellement, quand vous appuierez sur la touche haut pour naviguer dans vos précédentes commandes, c'est Atuin qui s'affichera. Si vous utilisez zsh avec zsh-history-substring-search, c'est Atuin qui s'exécutera en priorité. De même si vous faites un CTRL+R pour rechercher dans votre historique de commandes.

La synchronisation se fera automatiquement de manière régulière, mais il est possible de forcer une synchronisation avec la commande suivante :

atuin sync

Mais aussi l'autre fonctionnalité que j'aime beaucoup dans Atuin, c'est de pouvoir enregistrer des alias qui seront eux aussi synchronisés. Pour faire cela il faut d'abord activer la fonctionnalité en modifiant le fichier de configuration qui doit être (ou que vous devez créer) à l'emplacement suivant ~/.config/atuin/config.toml :

[dotfiles]
enabled = true

Ensuite pour créer un alias sur Atuin qui sera ensuite synchronisé sur le service :

atuin dotfiles alias set <alias> <command>

Pour prendre effet, vous devez redémarrer le shell.

Et voici donc une liste d'alias que vous pouvez ajouter par exemple :

atuin dotfiles alias set at atuin
atuin dotfiles alias set dcu "docker compose up -d"
atuin dotfiles alias set xl "eza -al --icons"

Pour lister vos alias existant, c'est facile :

atuin dotfiles alias list

Il est également possible d'enregistrer des variables d'environnement, et ça fonctionne de la même manière que les alias :

atuin dotfiles var set <alias> <command>

Bref un outil très sympa, apparemment sécurisé, et qui est très utile pour une utilisation cross-device.