Aller au contenu
Outils medium

atuin : retrouvez n'importe quelle commande en 3 secondes

14 min de lecture

logo atuin

Vous avez lancé une commande Docker la semaine dernière. Elle fonctionnait parfaitement. Mais laquelle exactement ?

Vous appuyez sur Ctrl+R, tapez docker… et vous scrollez. Longtemps. Vous ne trouvez pas. Vous finissez par la retaper de mémoire, avec une erreur de syntaxe.

atuin résout ce problème en 3 secondes.

Vous appuyez sur , tapez docker, et l’interface atuin s’ouvre avec toutes vos commandes Docker. Vous sélectionnez, Entrée, c’est fait.

Ce qu’atuin enregistre (et ce qu’il n’enregistre pas)

Section intitulée « Ce qu’atuin enregistre (et ce qu’il n’enregistre pas) »

Voici ce qu’atuin enregistre pour chaque commande exécutée après son installation :

Fenêtre de terminal
# Exemple de commande avec contexte complet
atuin history list -f "{time}\t{command}\t{directory}\t{duration}\t{exit}" -r false | head -3
2026-01-30 13:56:11 code ~/.config/atuin/config.toml /home/bob/Projets 109ms 0
2026-01-30 13:55:45 npm run dev /home/bob/Projets 13m 130
2026-01-30 13:33:37 docker ps -a /home/bob/infra 1s 0

C’est ce contexte qui permet les filtres “par dossier” ou “par machine” — impossibles avec Ctrl+R.

  1. Lancez le script d’installation

    Fenêtre de terminal
    bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)

    Le script détecte votre shell (Bash, Zsh ou Fish) et configure tout automatiquement. Le binaire est installé dans ~/.atuin/bin/.

  2. Redémarrez votre shell

    Fenêtre de terminal
    exec $SHELL
  3. Importez votre historique existant

    Fenêtre de terminal
    atuin import auto

    Vous verrez quelque chose comme :

    Importing history from zsh
    Found 8347 entries
    Imported 8347 new entries

    Ces commandes importées n’auront pas de contexte (dossier, durée), mais vous pourrez les retrouver.

  4. Testez : appuyez sur ↑

    L’interface atuin s’ouvre. Vous êtes prêt.

Maintenant qu’atuin est installé, essayons ensemble.

Étape 1 : Appuyez sur (flèche haut).

L’interface atuin s’ouvre. Vous voyez vos dernières commandes.

Étape 2 : Tapez git.

Sans appuyer sur Entrée. Juste les lettres g, i, t.

Regardez : la liste se filtre instantanément. Vous ne voyez plus que les commandes contenant “git” : git status, git push, git log --oneline, etc.

Étape 3 : Naviguez avec les flèches, puis :

  • Entrée → exécute la commande immédiatement
  • Tab → insère la commande dans votre prompt (pour la modifier avant de l’exécuter)

C’est tout. Vous savez utiliser atuin.

Situation 1 : “Je cherche une commande Docker”

Section intitulée « Situation 1 : “Je cherche une commande Docker” »

Vous vous souvenez vaguement d’une commande Docker, mais pas exactement.

Ce que vous faites : ↑, tapez docker, scrollez.

La recherche est “fuzzy” : docker trouve aussi docker-compose, Dockerfile, etc. C’est ce que vous voulez la plupart du temps.

Situation 2 : “Je veux exactement docker ps -a

Section intitulée « Situation 2 : “Je veux exactement docker ps -a” »

Vous ne voulez pas docker-compose ps, vous voulez exactement docker ps -a.

Ce que vous faites : ↑, tapez 'docker ps -a' (avec les guillemets simples).

Les guillemets simples désactivent la recherche fuzzy. Vous obtenez uniquement les correspondances exactes.

Situation 3 : “Je veux les commandes de ce projet”

Section intitulée « Situation 3 : “Je veux les commandes de ce projet” »

Vous êtes dans ~/projects/api et vous voulez voir uniquement les commandes que vous avez lancées ici, pas celles des autres projets.

Ce que vous faites :

  1. ↑ pour ouvrir atuin
  2. Appuyez sur Ctrl+R plusieurs fois jusqu’à voir “directory” dans l’en-tête
  3. Tapez votre recherche

Le filtre “directory” limite aux commandes exécutées dans le répertoire courant.

Situation 4 : “Je veux les commandes de ce serveur”

Section intitulée « Situation 4 : “Je veux les commandes de ce serveur” »

Vous êtes connecté en SSH sur prod-server et vous voulez voir uniquement les commandes lancées sur cette machine (pas celles de votre laptop).

Ce que vous faites :

  1. ↑ pour ouvrir atuin
  2. Appuyez sur Ctrl+R plusieurs fois jusqu’à voir “host”
  3. Tapez votre recherche

Le filtre “host” limite aux commandes de la machine actuelle.

Quand vous appuyez sur Ctrl+R dans l’interface atuin, vous basculez entre ces modes :

FiltreCe qu’il montreQuand l’utiliser
globalTout votre historiqueRecherche générale
hostCette machine uniquementCommandes spécifiques au serveur
sessionCe terminal uniquementCe que vous faites en ce moment
directoryCe dossier uniquementCommandes de ce projet
workspaceCe repo GitSi vous êtes dans un sous-dossier d’un repo

Pour activer le filtre workspace, ajoutez dans votre config :

~/.config/atuin/config.toml
workspaces = true

La recherche utilise la syntaxe fzf :

Ce que vous tapezCe que ça faitExemple
motRecherche fuzzy (par défaut)docker trouve docker, docker-compose
'mot exact'Correspondance exacte'docker ps' trouve uniquement docker ps
^debutCommence par^git trouve git log, git status
fin$Se termine par.json$ trouve cat config.json
!motExclut un motdocker !compose trouve docker sans compose

Vous pouvez combiner avec | (OU) :

^git log$ | ^git status$

Créez ou éditez ~/.config/atuin/config.toml :

~/.config/atuin/config.toml
## Style d'affichage
## "compact" = 1 ligne par commande (défaut)
## "full" = 2 lignes (commande + contexte)
## "auto" = adaptatif selon la taille du terminal
style = "full"
## Mode de recherche : "fuzzy" (recommandé), "prefix", "fulltext", "skim"
search_mode = "fuzzy"
## Filtre par défaut : "global", "host", "session", "directory"
filter_mode = "global"
## Activer le filtre par repo Git
workspaces = true
## Entrée = exécute immédiatement (true) ou insère pour édition (false)
enter_accept = true
## Afficher la preview des commandes longues
show_preview = true
## Détection automatique des secrets (activé par défaut, ne pas désactiver)
secrets_filter = true
[sync]
## Sync v2 (plus rapide)
records = true

Style compact (défaut) — une ligne par commande :

docker ps -a
npm run dev
git push origin main

Style full — deux lignes avec le contexte :

docker ps -a
~/projects/api • 1s • exit 0 • 2026-01-30 14:23
npm run dev
~/projects/api • 13m • exit 130 • 2026-01-30 13:33

Le style full est plus informatif mais prend plus de place. Choisissez selon votre préférence.

Vous avez un laptop et un serveur. Vous lancez une commande sur le serveur, puis vous voulez la retrouver depuis votre laptop. Sans sync, impossible.

Avec la sync atuin, votre historique est chiffré localement avant d’être envoyé. Même les administrateurs du serveur ne peuvent pas lire vos commandes.

  1. Sur votre première machine, créez un compte

    Fenêtre de terminal
    atuin register -u votre_pseudo -e votre@email.com

    Entrez un mot de passe quand demandé. Une clé de chiffrement est générée automatiquement.

  2. Sauvegardez votre clé (important)

    Fenêtre de terminal
    atuin key

    Copiez cette clé dans un gestionnaire de mots de passe. C’est elle qui permet de déchiffrer votre historique. Si vous la perdez, vos commandes synchronisées sont irrécupérables.

  3. Sur une autre machine, connectez-vous

    Installez atuin, puis :

    Fenêtre de terminal
    atuin login -u votre_pseudo
    atuin sync

    Vos commandes des deux machines sont maintenant synchronisées.

Par défaut, atuin synchronise toutes les heures. Vous pouvez ajuster :

~/.config/atuin/config.toml
## Sync toutes les 10 minutes
sync_frequency = "10m"
## Sync après chaque commande (peut être rate-limited par le serveur)
sync_frequency = "0"
## Désactiver la sync automatique
auto_sync = false
~/.local/share/atuin/
├── history.db # Base SQLite (votre historique)
├── key # Clé de chiffrement (sync uniquement)
└── session # Token de session (sync uniquement)
~/.config/atuin/
└── config.toml # Configuration
Fenêtre de terminal
# Vérifier l'installation
atuin --version
# Diagnostic complet
atuin doctor
# Voir les dernières commandes
atuin history list -r false | head -10
# Statistiques d'utilisation
atuin stats
# Forcer une synchronisation
atuin sync

atuin ne s’ouvre pas avec ↑ :

Fenêtre de terminal
# Vérifiez que le hook est présent
grep "atuin init" ~/.bashrc ~/.zshrc 2>/dev/null

Si rien ne s’affiche, ajoutez le hook manuellement (voir section Installation).

Les filtres directory/host ne fonctionnent pas :

C’est normal pour les commandes importées. Ces filtres ne fonctionnent que pour les commandes exécutées après l’installation d’atuin.

Vérifier que tout fonctionne :

Fenêtre de terminal
atuin doctor
  1. ouvre atuin
  2. Tapez des lettres pour filtrer (recherche fuzzy)
  3. Entrée exécute, Tab insère pour modifier
  4. Ctrl+R (plusieurs fois) change le filtre (global → host → directory)
  5. Les filtres contextuels (directory, host) ne fonctionnent que pour les commandes exécutées après l’installation
  6. La sync est optionnelle — atuin fonctionne très bien en local

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.