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 je manque parfois des commandes précédemment émises lorsque je lancehistory
Par exemple, mon invite affiche la ligne d’historique bash actuelle ( \!
) et, si je lance Terminator avec 3 fenêtres de terminal partagées, j’obtiens la même ligne d’historique (100 par exemple) 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
command-line
bash
history
Zetah
la source
la source
Réponses:
La session bash enregistrée est celle du terminal qui est fermé le plus tard. Si vous souhaitez enregistrer les commandes pour chaque session, vous pouvez utiliser l'astuce expliquée ici .
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:
la source
export PROMPT_COMMAND='history -a; history -r'
et j'ai eu quelques numéros de ligne d'historique étranges dans le terminal.export
n'est pas nécessaire.Après plusieurs lectures de
man bash
, j’utilise des fichiers d’historique distincts pour chaque shell. J'ai faitmkdir -m 0700 ~/.history
ensuite ajoutéà mon
~/.bashrc
. De temps en temps, je me souviens de ledu -sk .history
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 j'avais fait récemment:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
ou
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(pour inclure le 1er argument, par exemple
sudo mount
dans la chaîne de tri).la source
HISTFILESIZE
deux fois?man bash
.Ctrl+r
travail?egrep 'whatever' .history/*
(oucat .history/* | egrep 'whatever'
) à la place et j'utilise Ctrl-r pour rechercher l'historique d'une session individuelle. Lisez àman bash-builtins
propos de la commande history. Monsort .history/* | uniq -c | sort -n | wc -l
montre 16033 commandes uniques,cut '-d ' -f1 .history/* | sort | uniq -c | sort -n
montre 2004 commandes uniques, principalement des fautes de frappe. Charger tout cela dans la "liste d'historique" de bash ne serait d'aucune aide.Pour montrer
history
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
la source
history --merge
. Je l'utilise depuis environ un an maintenant et cela résout le problème. Lorsque je souhaite connaître l'historique le plus récent des autres sessions, il suffit d'exécuter cette commande, qui est disponible instantanément.Voir aussi " conserver l'historique persistant dans bash " pour une autre alternative. Il invite votre invite à envoyer toutes les commandes jamais saisies dans n’importe quel terminal dans un fichier "historique persistant" (à côté de ce qui est habituellement fait pour la base
.history
).la source
echo $$ $date_part "$command_part" >> ~/.persistent_history
Ceci préfixe les entrées avec les PID de leur processus bash, afin que nous puissions démêler plusieurs historiques.