¿Cómo ver el archivo `.bash_history` a través de la línea de comandos?

72

Quiero ver el contenido de mi .bash_historyarchivo pero no sé cómo llegar a través de la línea de comando.

isupportopensource
fuente
77
¿Qué talhistory | less
MadMike
2
¿Lo has comprobado /home/username/.bash_history ?
Mitch
2
NB: .bash_historyse agrega solo cuando un terminal está cerrado.
Nicolas VERHELST

Respuestas:

56

Si desea acceder al archivo en sí, sólo tiene que utilizar su editor de texto favorito (yo uso emacs, pero puede utilizar plumade gedito vim, o lo que sea):

emacs ~/.bash_history

Esa es la ubicación predeterminada de su archivo de historial. Si no encuentra nada allí, es posible que haya cambiado el nombre del archivo de historial. Esto se almacena en la $HISTFILEvariable, así que imprímalo para verificar su valor actual:

echo $HISTFILE

Si, en lugar del archivo, solo desea ver su historial, puede ejecutar historycomo sugirió @ minerz029. El historycomando sin opciones solo imprime el contenido de su $HISTFILEseguido por los comandos ejecutados en el shell actual que aún no se han escrito en ese archivo, con números de línea.

terdon
fuente
49

Si realmente necesita la salida del .bash_historyarchivo, reemplácelo historycon
cat ~/.bash_historytodos los comandos a continuación.

Si realmente quiere los comandos sin números al frente, use este comando en lugar de history:

history | cut -d' ' -f 4-

de lo contrario, no habrá diferencia (excepto si está utilizando un shell diferente).


Últimos 15 comandos

Puedes usar

history | tail -n 15

para obtener solo las últimas 15 líneas de su historial con la última ejecución impresa en último lugar (en la parte inferior).


Buscando un comando

Alternativamente, use

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

para obtener los últimos 15 comandos que contenían apt-getel último ejecutado impreso en último lugar (en la parte inferior). Puede reemplazarlo apt-getcon cualquier comando (o argumento de comando) que desee buscar (puede ser una expresión regular).


Desplazarse por la historia

Puedes usar

history | tac | less

para desplazarse por todos los comandos ejecutados comenzando por el más reciente en la parte superior. Presione qpara salir.

Del mismo modo, use

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

para desplazarse por todos los comandos ejecutados con " apt-get" en ellos (incluidos los argumentos) comenzando por el más reciente en la parte superior. Presione qpara salir.

kiri
fuente
15

Además de la excelente respuesta de minerz029.

Para reiterar: el comando 'historial' imprime el historial junto con un número al lado.

Puede canalizar la salida del historial en grep, less etc.

La salida del historial también muestra un número a la izquierda junto a la salida. p.ej

  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 

Con este número puede volver a ejecutar el comando.

por ejemplo, para volver a ejecutar 473, escribiría en el terminal

 admin@xen1~$ !473

seguido de la tecla Intro para repetir el comando junto a 473 en la salida del historial.

También puede buscar interactivamente hacia atrás en el historial de comandos escribiendo ctrl + rteclas y luego comenzar a escribir algunos de los contenidos del comando y buscará y completará. Cuando lo haya encontrado, puede escribir enter para repetirlo, o presionar la [tab]tecla para copiarlo en la línea de comando para editar el comando primero.

Por supuesto, esas dos últimas opciones funcionan en el shell bash. No estoy seguro de si estas características funcionan en otros shells. Pero como bash es el shell predeterminado de Ubuntu, debería encontrarlos allí.

Matt H
fuente
1

ingrese la descripción de la imagen aquí

Es posible que desee probar el "historial de cuadro de sugerencia" https://github.com/dvorka/hstr : lee el historial de Bash y permite una navegación rápida.

Martin Dvorak
fuente