128 votes

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

Existe-t-il un moyen de sauvegarder toutes les commandes de terminal que j'ai tapées et de les afficher comme un historique dans un journal de bord ?

159voto

s3lph Points 13389

Cela se fait automatiquement. Bash stocke vos commandes dans ~/.bash_history . Si vous voulez jeter un coup d'œil à l'historique, vous pouvez imprimer la sortie de ce fichier en utilisant l'une des méthodes suivantes

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 est de 500 commandes par défaut. Vous pouvez cependant augmenter cette taille en ajoutant une ligne à votre fichier ~/.bashrc pour définir le HISTSIZE variable :

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

Cela ne prendra pas effet immédiatement, mais seulement pour les sessions nouvellement lancées. Pour l'appliquer, il suffit de re-sourcer le .bashrc fichier :

. ~/.bashrc

ou courir HISTSIZE=... dans votre session actuelle.

53voto

0x2b3bfa0 Points 7873

Vous pouvez taper history sur un terminal pour visualiser toutes les commandes exécutées précédemment.


Vous pouvez tronquer la sortie à quelques lignes (où 5 est le nombre de lignes) :

history 5

Si vous souhaitez afficher uniquement les commandes contenant une chaîne de caractères (c.-à-d. mv ), vous pouvez faire ceci :

history | grep mv

Vous pouvez rappeler une commande en tapant ! suivi du numéro de l'entrée.

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

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

Si vous exécutez une commande qui échoue parce qu'elle a besoin des privilèges de l'utilisateur root (c.-à-d. touch /etc/foo ), vous pouvez utiliser sudo !! pour exécuter la dernière commande en tant que root.


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

Si vous avez une erreur de frappe dans une commande, vous pouvez la corriger de cette façon. Disons que je tape cat .bash_hi pour remplacer .bash_hi par .bash_history Je dois seulement taper ^hi^history^ .


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

14voto

Bilal Points 3399

Il suffit de taper :

history > print.txt

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

3voto

Frank Nocke Points 999

Souvent, je veux juste ces commandes récentes, aussi. Pour les poster dans mes notes de développement ou sur des sites d'échange de fichiers comme celui-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 en tant qu'alias, les numéros de ligne sont supprimés, et l'indentation est immédiate (comme pour le markdown des citations de code)

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

3voto

Martin Dvorak Points 201

Vous pouvez essayer https://github.com/dvorka/hstr qui permet à de simples navigation sur Le système de navigation et le filtrage de l'historique de vos activités par le biais d'une boîte à suggestions :

enter image description here

Il peut être facilement lié a Ctrl-r y/o Ctrl-s

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X