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

72

Je souhaite afficher le contenu de mon .bash_historyfichier mais je ne sais pas comment y accéder via la ligne de commande.

isupportopensource
la source
7
Que diriez-voushistory | less
MadMike
2
Avez-vous vérifié /home/username/.bash_history ?
Mitch
2
NB: .bash_historyn'est ajouté que lorsqu'un terminal est fermé.
Nicolas VERHELST

Réponses:

56

Si vous voulez accéder au fichier réel lui - même, il suffit d' utiliser votre éditeur de texte favori (je l' utilise emacsmais vous pouvez utiliser plumades geditou vimou autre):

emacs ~/.bash_history

C’est l’emplacement par défaut de votre fichier d’historique. Si vous n'y trouvez rien, vous avez peut-être changé le nom du fichier historique. Ceci est stocké dans la $HISTFILEvariable, donc imprimez-le pour vérifier sa valeur actuelle:

echo $HISTFILE

Si, au lieu du fichier, vous souhaitez simplement consulter votre historique, vous pouvez exécuter la historytâche suggérée par @ minerz029. La historycommande sans option n'imprime que le contenu de votre $HISTFILEsuivi des commandes exécutées dans le shell en cours qui n'ont pas encore été écrites dans ce fichier, avec des numéros de ligne.

terdon
la source
49

Si vous avez réellement besoin de la sortie du .bash_historyfichier, remplacez historypar
cat ~/.bash_historydans toutes les commandes ci-dessous.

Si vous voulez réellement les commandes sans 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).


15 dernières commandes

Vous pouvez utiliser

history | tail -n 15

pour obtenir uniquement les 15 dernières lignes de votre historique avec le dernier imprimé en dernier (en bas).


Rechercher une commande

Sinon, utilisez

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

pour obtenir les 15 dernières commandes qui contenaient apt-getla dernière exécutée imprimée en dernier (en bas). Vous pouvez remplacer apt-getpar n'importe quelle 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 toutes les commandes exécutées en commençant par la plus récente en haut. Appuyez sur qpour quitter.

De même, utiliser

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

pour faire défiler toutes les commandes exécutées avec " apt-get" dans celles-ci (y compris les arguments) en commençant par la plus récente en haut. Appuyez sur qpour quitter.

kiri
la source
15

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

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

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

La sortie de l'historique affiche également un nombre à gauche de la sortie. par exemple

  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 relancer la commande.

par exemple, pour relancer 473, je taperais 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 d'historique.

Vous pouvez également effectuer une recherche interactive en arrière dans l’historique des commandes en tapant les ctrl + rclés, puis commencer à saisir une partie du contenu de la commande. Le moteur de recherche le remplira ensuite. Lorsque vous l'avez trouvé, vous pouvez taper entrée pour le répéter ou appuyer sur la [tab]touche pour le copier sur la ligne de commande afin de modifier la commande en premier.

Bien sûr, ces deux dernières options fonctionnent dans le shell bash. Je ne sais pas si ces fonctionnalités fonctionnent dans d'autres coques. Mais comme bash est le shell par défaut d’Ubuntu, vous devriez les trouver ici.

Matt H
la source
1

entrez la description de l'image ici

Vous voudrez peut-être essayer l'historique "de type boîte à suggestions" https://github.com/dvorka/hstr - il lit l'historique Bash et permet une navigation rapide.

Martin Dvorak
la source