J'utilise principalement Terminator, et il est généralement ouvert avec 3 fenêtres de terminal divisées. J'utilise aussi le terminal Gnome pour diverses raisons.
Je me demande comment l’histoire de bash est gérée dans ce cas car j’ai parfois oublié les commandes précédemment émises lorsque j’exécute history
Par exemple, mon invite montre la ligne actuelle de l’historique bash (\!
) et si je lance Terminator avec 3 fenêtres de terminal divisées, la même ligne d’historique (100 par exemple) apparaît sur tous les terminaux. Quelle histoire sera sauvegardée?
Lançant également Gnome Terminal après l’utilisation de Terminator, j’obtiens la ligne 100 au démarrage, quelles que soient les commandes passées auparavant dans Terminator
La session bash enregistrée est celle du terminal le plus fermé. Si vous voulez sauvegarder les commandes pour chaque session, vous pouvez utiliser l'astuce expliquée ici .
export Prompt_COMMAND='history -a'
Pour citer la page de manuel: "Si cette option est définie, la valeur est exécutée sous forme de commande avant l'émission de chaque invite principale."
Ainsi, chaque fois que ma commande est terminée, il ajoute l'élément d'historique non écrit à
~/.bash_history
avant d'afficher à nouveau l'invite (uniquement $ PS1).Donc, après avoir mis cette ligne dans
/etc/bash.bashrc
, je ne suis plus obligé de me réinventer ou de perdre de précieuses secondes à taper à nouveau du matériel simplement parce que j'étais paresseux avec mes terminaux.
Quoi qu'il en soit, vous devrez tenir compte du fait que les commandes de différentes sessions seront mélangées dans votre fichier d'historique afin qu'il ne soit pas si simple de le lire ultérieurement.
Voir également:
Après plusieurs lectures de man bash
, j'utilise des fichiers d'historique distincts pour chaque shell. J'ai fait un mkdir -m 0700 ~/.history
puis ajouté
[[ -d ~/.history ]] || mkdir --mode=0700 ~/.history
[[ -d ~/.history ]] && chmod 0700 ~/.history
HISTFILE=~/.history/history.$(date +%y%b%d-%H%M%S).$$
# close any old history file by zeroing HISTFILESIZE
HISTFILESIZE=0
# then set HISTFILESIZE to a large value
HISTFILESIZE=4096
HISTSIZE=4096
à mon ~/.bashrc
. De temps en temps, je me souviens de du -sk .history
et de le nettoyer. C'est bien d'avoir toutes les commandes que j'ai tapées conservées pour moi.
J'ai juste utilisé ce qui précède pour voir ce que je faisais récemment:cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
oucut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(pour inclure le premier argument, par exemple Sudo mount
dans la chaîne de tri).
Pour afficher history
à partir de tous les terminaux:
Ajoutez export Prompt_COMMAND='history -a; history -r'
à votre fichier .bashrc.
Source: http://northernmost.org/blog/flush-bash_history-after-each-command
Voir aussi " conserver l'historique persistant dans bash " pour une autre alternative. Il invite votre invite à envoyer toutes les commandes jamais saisies de n’importe quel terminal dans un fichier "historique persistant" (à côté de ce qui est habituellement fait pour le .history
normal).