Afficher l'historique des commandes exécutées dans le terminal


75

Existe-t-il un moyen de sauvegarder toutes mes commandes de terminal saisies et de les afficher comme l'historique dans un journal?

Réponses:


92

Ceci est fait automatiquement. Bash stocke vos commandes dans ~/.bash_history. Si vous souhaitez consulter l'historique, imprimez la sortie de ce fichier en utilisant l'un des fichiers suivants:

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Ou vous pouvez utiliser la commande intégrée de bash:

history

Pour effacer l’historique, supprimez le fichier et effacez l’historique temporaire:

rm ~/.bash_history && history -c

La taille de l'historique par défaut est de 500 commandes. Vous pouvez toutefois augmenter ce nombre en ajoutant une ligne à votre ~/.bashrcfichier pour définir la HISTSIZEvariable:

HISTSIZE=<number of entries, -1 for unlimited>

Cela ne prendra pas effet immédiatement, mais uniquement pour les sessions nouvellement démarrées. Pour l'appliquer, re-sourcez le .bashrcfichier:

. ~/.bashrc

ou courir HISTSIZE=...dans votre session en cours.


1
Par défaut, il ne conserve cependant que les 500 dernières commandes. Vous pouvez modifier le numéro à conserver, mais il vous suffit de le démarrer accidentellement avec les paramètres par défaut une fois, et tout votre ancien historique disparaîtra.
kasperd

Cela ne fonctionne pas pour moi sur Ubuntu 16
Nam G VU

31

Vous pouvez taper historysur un terminal pour afficher toutes les commandes exécutées précédemment.


Vous pouvez tronquer la sortie sur certaines lignes (où 5 correspond au nombre de lignes):

history 5

Si vous souhaitez afficher uniquement les commandes contenant une chaîne (c'est-à-dire mv), vous pouvez procéder comme suit:

history | grep mv

Vous pouvez rappeler une commande en tapant !suivi du numéro de saisie.

Disons que j'ai une histoire comme celle-ci:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Pour courir mkdir foo, vous pouvez taper !2.
  • Pour exécuter la dernière commande, vous pouvez utiliser !-1ou!!
  • Pour exécuter l'avant-dernière, vous pouvez utiliser !-2

Si vous exécutez une commande qui échoue car elle nécessite des privilèges root (c'est-à-dire touch /etc/foo), vous pouvez utiliser sudo !!pour exécuter la dernière commande en tant que root.


  • Si vous tapez, !manvous exécuterez la dernière commande qui commence parman
  • Si vous tapez, !?man?il exécutera la dernière commande qu'il contient man(pas nécessairement au début de la ligne)

Si vous avez une faute de frappe dans une commande, vous pouvez la corriger de cette façon. Disons que je tape cat .bash_hi, pour remplacer .bash_hipar il .bash_historyme suffit de taper ^hi^history^.


Source: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps


2
Vous pouvez également appuyer sur Ctrl-R pour effectuer une recherche dans l'hôte en cours de frappe.
Mhmd

historytravaillant pour moi sur Ubuntu 16. Merci et cela devrait être accepté!
Nam G VU

9

Il suffit de taper:

history > print.txt

Un nouveau fichier appelé print.txt sera créé dans votre répertoire de travail actuel.


3
Coupe les commandes après 1000
Antoine

3

Je veux souvent juste ces commandes récentes, aussi. Publier sur mes notes de développement ou, bien, des sites stackexchange comme ceux-ci ... Cela s’est avéré très utile, en supprimant les numéros de ligne non pertinents:

history | cut -c 8- | tail

ou, si vous l'aimez comme alias, les numéros de ligne sont supprimés et mis immédiatement en retrait (comme nécessaire pour le démarquage des guillemets)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"

1
Plus facile à utiliser fc: askubuntu.com/a/839642/158442
muru

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.