Tout d'abord, laissez-moi vous montrer un exemple ci-dessous.
Dans Shell (1), j'ai exécuté la commande suivante.
$ ping google.com
PING google.com (74.125.235.164) 56(84) bytes of data.
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=2 ttl=54 time=3.42 ms
Et après cela, ouvrez un autre Shell (2) et regardez l’histoire.
$ history
.
.
.
8720 exit
8721 clear
8722 history
Dans ce cas, le shell ne peut pas voir l'historique exécuté par Shell (1), mais je veux voir tout l'historique de chaque bash.
Ma question est donc comment puis-je voir toute l'histoire de bash? Est-ce que quelqu'un sait comment pirater?
Merci beaucoup d'avance!
Vous devriez examiner l'option histappend
Shell et l'indicateur -a
à history
:
histappend
Si cette option est définie, la liste d'historique est ajoutée au fichier nommé par la valeur de la variable
HISTFILE
lorsque le shell se ferme, au lieu de remplacer le fichier.
history
-a
Ajoute les "nouvelles" lignes de l'historique (lignes de l'historique entrées depuis le début de la session bash en cours) au fichier d'historique.
Si vous mettez history -a
dans votre Prompt_COMMAND
, vous obtiendrez un fichier .bash_history
toujours à jour.
cat ~/.bash_history
fonctionnerait aussi, bien que j’ai tendance à utiliser
vim ~/.bash_history
puis utilisez /
pour rechercher
essaye ça:
Modifiez votre fichier .bashrc et ajoutez-le à la fin:
shopt -s histappend
Prompt_COMMAND="history -n; history -a"
unset HISTFILESIZE
HISTSIZE=2000
source: http://subbass.blogspot.com.br/2009/10/howto-sync-bash-history-between.html
Vous pouvez installer quelque chose comme l'historique de shell avancé, qui enregistrera chaque commande dans une base de données sqlite3. Il est livré avec un outil permettant d’interroger la base de données à partir de la ligne de commande . https://github.com/barabo/advanced-Shell-history
Avec cette configuration, vous aurez une vue unifiée de l'historique des commandes pour toutes les sessions. Vous obtenez également des informations telles que l'historique des commandes pour le répertoire de travail actuel (ou la sous-arborescence), le code de sortie de commande, la durée de la commande, etc.
Divulgation complète: j'ai écrit et entretenu l'outil.
Comme plusieurs l'ont noté, vous devez utiliser shopt -s histappend
. Vérifiez en exécutant shopt
et en vérifiant que histappend est 'activé'.
Pour vous assurer que chaque commande (sur plusieurs shells simultanés) apparaît dans l'historique de chacun de ces shells, ajoutez ceci à la fin de votre fichier .bashrc:
# Skip if not an interactive Shell
if [ -z "${PS1}" ]; then return; fi
export Prompt_COMMAND="history -a; history -c, history -r; ${Prompt_COMMAND}
-a: ajoute les nouvelles lignes d'historique (lignes d'historique entrées depuis le début de la session Bash en cours) à l'historique fichier .
-c: efface l'historique liste .
-r: lit l'historique fichier et ajoute son contenu à l'historique liste .
Exécutez source .bashrc
ou créez de nouvelles sessions et, dans plusieurs fenêtres de terminal, entrez le commentaire #Tn
dans chacune d'elles. Ensuite, sur un terminal, entrez history | tail -N
pour afficher les N dernières lignes. Vous devriez voir tous les commentaires entrés sur les différents terminaux.
Il peut être utile d’ajouter ce qui suit dans /etc/profile.d/bashrc.sh afin d’obtenir un timestamp sur chaque ligne de l’historique:
if [ -z "${PS1}" ]; then return; fi
export HISTTIMEFORMAT='%F %T '
Le résultat ressemble à ceci:
[moi@laBoheme ~]$ history | tail -4
3292 2019-01-22 12:41:27 # T1
3293 2019-01-22 12:41:34 # T2
3294 2019-01-22 12:41:42 # T3
3295 2019-01-22 12:41:50 history | tail -4