web-dev-qa-db-fra.com

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

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

65
rgr

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 la ligne suivante à votre ~./bashrc:

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

Cela ne prendra pas effet immédiatement, mais uniquement pour les sessions nouvellement démarrées. Pour appliquer cela, utilisez le fichier .bashrc:

. ~/.bashrc

ou exécutez HISTSIZE=... dans votre session en cours.

82
s3lph

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 mvname__), procédez comme suit:

history | grep mv

Vous pouvez rappeler une commande en tapant ! suivi du numéro d'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 ou !!
  • 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 !man, vous exécuterez la dernière commande commençant par manname__.
  • Si vous tapez !?man?, il exécutera la dernière commande contenant 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. Supposons 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-linux-vps

29
Helio

Il suffit de taper:

history > print.txt

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

9
Bilal

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 en retrait immédiatement (comme nécessaire pour le démarquage des guillemets)

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

Vous voudrez peut-être essayer https://github.com/dvorka/hstr qui permet la navigation simple , la navigation et "suggérer "style de boîte" filtrant votre historique Bash:

enter image description here

Il peut être facilement lié à Ctrl-r et/ou Ctrl-s

0
Martin Dvorak