Gestionnaire d’historique shell magique avec stockage SQLite, synchronisation chiffrée et recherche en texte intégral entre machines et sessions.
| Commande | Description |
|---|
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh | Installer via le script officiel |
brew install atuin | Installer sur macOS avec Homebrew |
cargo install atuin | Installer depuis crates.io |
pacman -S atuin | Installer sur Arch Linux |
apt install atuin | Installer sur Debian/Ubuntu (si disponible) |
dnf install atuin | Installer sur Fedora |
nix-env -i atuin | Installer sur NixOS |
scoop install atuin | Installer sur Windows avec Scoop |
atuin --version | Afficher la version installée |
| Commande | Description |
|---|
atuin init bash >> ~/.bashrc | Initialiser pour Bash |
atuin init zsh >> ~/.zshrc | Initialiser pour Zsh |
atuin init fish >> ~/.config/fish/config.fish | Initialiser pour Fish |
atuin init nushell | Afficher les commandes d’initialisation Nushell |
# Bash — ajouter à ~/.bashrc
eval "$(atuin init bash)"
# Zsh — ajouter à ~/.zshrc
eval "$(atuin init zsh)"
# Fish — ajouter à ~/.config/fish/config.fish
atuin init fish | source
# Zsh avec désactivation de la flèche haut (Ctrl+R uniquement)
eval "$(atuin init zsh --disable-up-arrow)"
| Commande | Description |
|---|
Ctrl + R | Ouvrir la recherche interactive dans l’historique |
Taper la requête après Ctrl + R | Filtrer l’historique de manière interactive |
Enter | Exécuter la commande sélectionnée |
Tab | Insérer la commande sans l’exécuter |
Ctrl + R à nouveau | Basculer entre les modes de recherche |
↑ / ↓ | Naviguer dans les résultats de recherche |
Escape | Annuler la recherche |
Ctrl + D | Supprimer l’entrée sélectionnée de l’historique |
Alt + 1-4 | Changer le mode de filtre (global/hôte/session/répertoire) |
| Commande | Description |
|---|
atuin history list | Afficher l’historique récent des commandes |
atuin history list --cmd-only | Afficher uniquement les commandes (sans métadonnées) |
atuin history list --format "{time} {command}" | Format de sortie personnalisé |
atuin history list --reverse | Afficher les plus anciennes en premier |
atuin history list -n 50 | Afficher les 50 dernières commandes |
atuin history count | Afficher le nombre total d’entrées |
atuin history last | Afficher la commande la plus récente |
Atuin alterne entre 4 modes de recherche avec Ctrl+R :
1. Fuzzy — Correspond aux caractères dans n'importe quel ordre (comme fzf)
2. Prefix — Correspond depuis le début de la commande
3. Fulltext — Correspond aux sous-chaînes exactes n'importe où
4. Skim — Correspondance floue style Skim
Changez de mode pendant la recherche avec Ctrl+R, ou définissez
un mode par défaut dans le fichier de configuration.
| Commande | Description |
|---|
atuin search query | Rechercher dans l’historique depuis la ligne de commande |
atuin search "git commit" | Rechercher une commande spécifique |
atuin search --cwd | Rechercher l’historique du répertoire courant uniquement |
atuin search --session | Rechercher l’historique de la session courante uniquement |
atuin search --global | Rechercher tout l’historique sur toutes les machines |
atuin search --interactive | Ouvrir l’interface interactive |
| Commande | Description |
|---|
atuin search --after "2024-01-01" | Rechercher après une date spécifique |
atuin search --before "yesterday" | Rechercher avant un moment spécifique |
atuin search --after "1 hour ago" | Rechercher dans la dernière heure |
atuin search --after "3 days ago" | Rechercher dans les 3 derniers jours |
atuin search --after "last week" | Rechercher dans la dernière semaine |
atuin search --before "2024-06-01" --after "2024-01-01" | Plage de dates |
| Commande | Description |
|---|
atuin search --exit 0 | Rechercher uniquement les commandes réussies |
atuin search --exit 1 | Rechercher uniquement les commandes échouées |
atuin search --exit 127 | Rechercher les erreurs “commande introuvable” |
atuin search --limit 50 | Limiter le nombre de résultats |
| Commande | Description |
|---|
atuin search --cwd /path/to/dir | Filtrer par répertoire de travail spécifique |
atuin search --hostname myserver | Filtrer par nom d’hôte |
atuin search --session SESSION_ID | Filtrer par identifiant de session |
atuin search --duration ">5s" | Filtrer par durée d’exécution |
atuin search --duration "<100ms" | Trouver les commandes rapides |
| Commande | Description |
|---|
atuin search --format "{time} {command}" | Afficher l’heure et la commande |
atuin search --format "{duration} {command}" | Afficher la durée et la commande |
atuin search --format "{host} {command}" | Afficher le nom d’hôte et la commande |
atuin search --format "{user} {directory} {command}" | Contexte complet |
# Trouver toutes les commandes docker qui ont échoué
atuin search docker --exit 1
# Trouver les opérations git de la dernière semaine
atuin search git --after "1 week ago"
# Trouver les commandes longues (>30 secondes)
atuin search --duration ">30s"
# Trouver les commandes exécutées dans un projet spécifique
atuin search --cwd ~/projects/myapp
# Trouver les commandes depuis votre ordinateur portable de travail
atuin search --hostname work-mbp
| Commande | Description |
|---|
atuin register -u username -e email -p password | Créer un compte de synchronisation |
atuin login -u username -p password | Se connecter au compte de synchronisation |
atuin login -u username -p password -k KEY | Se connecter avec la clé de chiffrement |
atuin logout | Se déconnecter du compte de synchronisation |
atuin account | Afficher le statut du compte |
atuin account delete | Supprimer le compte de synchronisation |
atuin key | Afficher la clé de chiffrement (conservez-la !) |
atuin status | Afficher le statut de la synchronisation |
| Commande | Description |
|---|
atuin sync | Synchroniser l’historique avec le serveur |
atuin sync -f | Forcer une synchronisation complète |
atuin sync --force | Forcer le re-téléversement de tout l’historique |
| Toutes les données sont chiffrées de bout en bout | Le serveur ne voit jamais l’historique en clair |
# Première configuration sur la machine 1
atuin register -u myname -e me@example.com -p mypassword
atuin key # CONSERVEZ CETTE CLÉ — vous en aurez besoin pour les autres machines
atuin sync
# Configuration sur la machine 2
atuin login -u myname -p mypassword -k YOUR_ENCRYPTION_KEY
atuin sync
# Votre clé de chiffrement ressemble à :
# abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
# Sans la clé, le serveur ne peut pas déchiffrer votre historique.
# Si vous perdez la clé, votre historique synchronisé est irrécupérable.
# Exécuter votre propre serveur de synchronisation Atuin
docker run -d \
--name atuin-server \
-p 8888:8888 \
-v atuin-data:/config \
ghcr.io/atuinsh/atuin:latest \
server start
# Pointer votre client vers le serveur auto-hébergé
# Dans ~/.config/atuin/config.toml :
# sync_address = "http://your-server:8888"
| Commande | Description |
|---|
atuin import auto | Détecter automatiquement et importer l’historique shell |
atuin import bash | Importer depuis l’historique Bash |
atuin import zsh | Importer depuis l’historique Zsh |
atuin import zsh-hist-db | Importer depuis le plugin Zsh hist-db |
atuin import fish | Importer depuis l’historique Fish |
atuin import resh | Importer depuis l’historique RESH |
atuin import nu | Importer depuis l’historique Nushell |
atuin import nu-hist-db | Importer depuis l’historique SQLite de Nushell |
# Détecter automatiquement votre shell et importer
atuin import auto
# Importer l'historique Zsh spécifiquement
atuin import zsh
# Vérifier combien d'entrées ont été importées
atuin history count
# Vérifier que l'import a fonctionné
atuin search --limit 5
| Commande | Description |
|---|
atuin stats | Afficher les statistiques de l’historique |
atuin stats --count 20 | Afficher les 20 commandes les plus utilisées |
atuin stats --period day | Statistiques pour aujourd’hui |
atuin stats --period week | Statistiques pour cette semaine |
atuin stats --period month | Statistiques pour ce mois |
atuin stats --period all | Statistiques de tous les temps |
atuin history count | Nombre total d’entrées dans l’historique |
$ atuin stats --count 10
┌─────────┬─────────────────┬───────┐
│ Rank │ Command │ Count │
├─────────┼─────────────────┼───────┤
│ 1 │ git status │ 1847 │
│ 2 │ ls │ 1523 │
│ 3 │ cd │ 1201 │
│ 4 │ git diff │ 987 │
│ 5 │ vim │ 842 │
│ 6 │ git add │ 756 │
│ 7 │ docker ps │ 689 │
│ 8 │ npm run │ 534 │
│ 9 │ git commit │ 498 │
│ 10 │ make │ 423 │
└─────────┴─────────────────┴───────┘
Total commands: 45,231
Unique commands: 8,432
| Commande | Description |
|---|
~/.config/atuin/config.toml | Fichier de configuration principal |
atuin default-config | Afficher la configuration par défaut |
| Commande | Description |
|---|
search_mode = "fuzzy" | Définir le mode de recherche floue |
search_mode = "prefix" | Définir le mode de recherche par préfixe |
search_mode = "fulltext" | Définir le mode de recherche en texte intégral |
search_mode = "skim" | Définir le mode de recherche floue skim |
filter_mode = "global" | Rechercher tout l’historique par défaut |
filter_mode = "host" | Rechercher l’hôte courant par défaut |
filter_mode = "session" | Rechercher la session courante par défaut |
filter_mode = "directory" | Rechercher le répertoire courant par défaut |
filter_mode_shell_up_key_binding = "session" | La flèche haut recherche la session courante |
| Commande | Description |
|---|
style = "compact" | Utiliser le style compact |
style = "full" | Utiliser le style complet |
style = "auto" | Détection automatique selon le terminal |
inline_height = 40 | Définir la hauteur de la recherche en ligne |
show_preview = true | Afficher le panneau d’aperçu des commandes |
show_help = true | Afficher l’aide des raccourcis clavier |
show_tabs = true | Afficher les onglets de mode de filtre |
max_preview_height = 4 | Nombre maximum de lignes pour l’aperçu |
# ~/.config/atuin/config.toml
## Paramètres de la base de données
db_path = "~/.local/share/atuin/history.db"
## Paramètres de recherche
search_mode = "fuzzy"
filter_mode = "global"
filter_mode_shell_up_key_binding = "host"
## Paramètres de l'interface
style = "auto"
inline_height = 40
show_preview = true
show_help = true
show_tabs = true
max_preview_height = 4
invert = false
## Paramètres de l'historique
update_check = true
sync_frequency = "5m"
sync_address = "https://api.atuin.sh"
## Raccourcis clavier (par défaut)
# Ctrl+R = recherche
# Flèche haut = recherche (sauf si désactivée)
# Tab = accepter sans exécuter
# Enter = accepter et exécuter
## Filtre de secrets — ne pas enregistrer les commandes avec des secrets
history_filter = [
"^export.*TOKEN",
"^export.*SECRET",
"^export.*PASSWORD",
"^export.*KEY",
".*AWS_SECRET.*",
]
## Ignorer des commandes spécifiques
history_filter = [
"^ls$",
"^cd$",
"^pwd$",
"^exit$",
"^clear$",
]
## Paramètres de synchronisation
sync_frequency = "5m"
# sync_address = "https://api.atuin.sh" # Serveur par défaut
# sync_address = "http://localhost:8888" # Auto-hébergé
| Touche | Description |
|---|
Ctrl + R | Ouvrir la recherche / changer de mode de recherche |
↑ / ↓ | Naviguer dans les résultats |
Enter | Exécuter la commande sélectionnée |
Tab | Insérer la commande sans l’exécuter |
Escape | Annuler la recherche |
Ctrl + D | Supprimer l’entrée sélectionnée de l’historique |
Alt + 1 | Passer au filtre global |
Alt + 2 | Passer au filtre hôte |
Alt + 3 | Passer au filtre session |
Alt + 4 | Passer au filtre répertoire |
Ctrl + U | Effacer la requête de recherche |
Ctrl + W | Supprimer le mot précédent |
| Commande | Description |
|---|
~/.local/share/atuin/history.db | Emplacement par défaut de la base de données |
| La base utilise le format SQLite | Peut être interrogée avec n’importe quel outil SQLite |
sqlite3 ~/.local/share/atuin/history.db ".tables" | Lister les tables de la base de données |
# Ouvrir la base de données directement avec SQLite
sqlite3 ~/.local/share/atuin/history.db
# Compter le nombre total d'entrées
sqlite3 ~/.local/share/atuin/history.db \
"SELECT COUNT(*) FROM history;"
# Trouver les commandes les plus longues
sqlite3 ~/.local/share/atuin/history.db \
"SELECT command, duration FROM history
ORDER BY duration DESC LIMIT 10;"
# Commandes par répertoire
sqlite3 ~/.local/share/atuin/history.db \
"SELECT cwd, COUNT(*) as cnt FROM history
GROUP BY cwd ORDER BY cnt DESC LIMIT 10;"
-
Importer votre historique existant d’abord — Exécutez atuin import auto immédiatement après l’installation pour commencer avec une base de données d’historique riche plutôt que de zéro.
-
Utiliser le mode de recherche floue — Définissez search_mode = "fuzzy" pour la correspondance la plus flexible. Vous pouvez toujours basculer vers d’autres modes avec Ctrl+R pendant une recherche.
-
Filtrer les secrets de l’historique — Ajoutez des motifs à history_filter dans la configuration pour empêcher l’enregistrement des commandes contenant des tokens, mots de passe et clés API.
-
Sauvegarder votre clé de chiffrement — Exécutez atuin key et stockez la clé dans un gestionnaire de mots de passe. Si vous la perdez, l’historique synchronisé depuis d’autres machines est définitivement irrécupérable.
-
Configurer la synchronisation entre machines — La synchronisation chiffrée est la fonctionnalité phare d’Atuin. Créez un compte et configurez toutes vos machines pour avoir un historique unifié partout.
-
Utiliser la recherche par répertoire — Appuyez sur Alt+4 pendant la recherche pour filtrer les commandes exécutées dans le répertoire courant — parfait pour les workflows spécifiques à un projet.
-
Personnaliser la flèche haut — Définissez filter_mode_shell_up_key_binding = "host" pour que la flèche haut n’affiche que les commandes de la machine courante, tandis que Ctrl+R recherche globalement.
-
Configurer le serveur auto-hébergé — Si vous manipulez des données sensibles, exécutez votre propre serveur Atuin avec Docker pour un contrôle complet de votre historique synchronisé.
-
Consulter les statistiques régulièrement — Exécutez atuin stats périodiquement pour comprendre vos habitudes et identifier les commandes que vous pourriez créer en alias pour plus d’efficacité.
-
Utiliser le style compact pour les petits terminaux — Définissez style = "compact" si vous travaillez dans des terminaux en panneaux divisés avec un espace vertical limité.