Histoire de Bash
Toute nouvelle commande émise dans le terminal actif peut être ajoutée au .bash_history
fichier avec la commande suivante:
history -a
Le seul concept délicat à comprendre est que chaque terminal a sa propre liste d' historique bash (chargée à partir du .bash_history
fichier lorsque vous ouvrez le terminal)
Si vous souhaitez extraire tout nouvel historique écrit par d'autres terminaux pendant la durée de vie de ce terminal actif, vous pouvez ajouter le contenu du .bash_history
fichier à la liste d' historique de bash active
history -c;history -r
Cela effacera la liste d'historique actuelle afin que nous n'obtenions pas de liste répétée et ajoutons le fichier d'historique à la liste (maintenant vide).
Solution
Vous pouvez utiliser la variable bash PROMPT_COMMAND
pour émettre une commande à chaque nouvelle invite (chaque fois que vous appuyez sur Entrée dans le terminal)
export PROMPT_COMMAND='history -a'
Cela enregistrera chaque commande dans le fichier historique au fur et à mesure de son émission.
Résultat
Maintenant, tout nouveau terminal que vous ouvrez aura l'historique des autres terminaux sans avoir à exit
ces autres terminaux. C'est mon flux de travail préféré.
Plus de précision
Disons (pour une raison quelconque) que vous avez deux terminaux que vous utilisez simultanément et que vous souhaitez que l'historique se reflète entre les deux pour chaque nouvelle commande.
export PROMPT_COMMAND='history -a;history -c;history -r'
Le principal inconvénient ici est que vous devrez peut-être appuyer sur Entrée pour réexécuter PROMPT_COMMAND afin d'obtenir la dernière historique du terminal opposé.
Vous pouvez voir pourquoi cette option plus précise est probablement exagérée, mais cela fonctionne pour ce cas d'utilisation.