80 votes

Comment visualiser le fichier `.bash_history` en ligne de commande ?

Je veux voir le contenu de mon .bash_history mais ne savent pas comment y accéder via la ligne de commande.

67voto

Stewart Points 1385

Si vous voulez accéder au fichier lui-même, il suffit d'utiliser votre éditeur de texte préféré (je me sers de emacs mais vous pouvez utiliser pluma de gedit o vim ou autre) :

emacs ~/.bash_history

C'est l'emplacement par défaut de votre fichier d'historique. Si vous ne trouvez rien à cet endroit, vous avez peut-être changé le nom du fichier d'historique. Celui-ci est stocké dans le fichier $HISTFILE la variable, alors imprimez-la pour vérifier sa valeur actuelle :

echo $HISTFILE

Si, au lieu du fichier, vous voulez juste voir votre historique, vous pouvez exécuter history comme le suggère @minerz029. El history commande sans option, imprime simplement le contenu de votre $HISTFILE suivi des commandes exécutées dans le Shell actuel qui n'ont pas encore été écrites dans ce fichier, avec les numéros de ligne.

55voto

kiri Points 25860

Si vous avez vraiment besoin de la sortie de la .bash_history remplacer le fichier history avec
cat ~/.bash_history dans toutes les commandes ci-dessous.

Si vous voulez réellement les commandes sans les chiffres devant, utilisez cette commande au lieu de history :

history | cut -d' ' -f 4-

sinon, il n'y aura aucune différence (sauf si vous utilisez un Shell différent).


Les 15 dernières commandes

Vous pouvez utiliser

history | tail -n 15

pour obtenir seulement les 15 dernières lignes de votre historique avec la dernière exécutée imprimée en dernier (en bas).


Recherche d'une commande

Vous pouvez également utiliser

history | grep "apt-get" | tail -n 15

pour obtenir les 15 dernières commandes qui contiennent apt-get avec le dernier exécuté imprimé en dernier (en bas). Vous pouvez remplacer apt-get avec toute commande (ou argument de commande) que vous souhaitez rechercher (il peut s'agir d'une expression régulière).


Faire défiler l'histoire

Vous pouvez utiliser

history | tac | less

pour faire défiler tous les commandes exécutées en commençant par la plus récente en haut. Appuyez sur q pour sortir.

De même, utilisez

history | grep "apt-get" | tac | less

pour faire défiler tous les commandes exécutées avec " apt-get "(y compris les arguments) en commençant par le plus récent en haut. Appuyez sur q pour sortir.

16voto

Aquatic Points 1827

En plus de l'excellente réponse de minerz029.

Pour répéter, la commande 'history' imprime l'historique avec un numéro à côté.

Vous pouvez passer la sortie de l'historique dans grep, less, etc.

La sortie de l'historique montre aussi un numéro à gauche à côté de la sortie, par ex.

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

Avec ce numéro, vous pouvez réexécuter la commande.

Par exemple, pour ré-exécuter 473, il faut taper dans le terminal

 admin@xen1~$ !473

suivi de la touche entrée pour répéter la commande à côté de 473 dans la sortie de l'historique.

Vous pouvez également recherche interactive en arrière dans l'historique des commandes en tapant ctrl + r puis commencez à taper le contenu de la commande et elle le cherchera et le remplira. Lorsque vous l'avez trouvée, vous pouvez taper Entrée pour la répéter, ou appuyer sur la touche [tab] pour le copier sur la ligne de commande afin de modifier la commande en premier lieu.

Bien sûr, ces deux dernières options fonctionnent dans le Shell de bash. Je ne suis pas sûr que ces fonctionnalités fonctionnent dans d'autres shells. Mais puisque bash est le Shell par défaut d'Ubuntu, vous devriez les y trouver.

2voto

Martin Dvorak Points 201

enter image description here

Vous pouvez essayer l'historique de type "boîte à idées". https://github.com/dvorka/hstr - il lit l'historique du Bash et permet une navigation rapide.

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