¿Cómo busco en mi historial de línea de comandos los comandos que utilicé antes?

147

Además de ver la historia, ¿hay alguna manera de filtrar mi historial?

¿Quiere decir que quiero buscar un comando que comenzó con "ssh"?

    
pregunta Blankman 02.11.2011 - 02:25

10 respuestas

229

Presione Ctrl + R y escriba ssh . Ctrl + R iniciará la búsqueda desde el comando más reciente al anterior (búsqueda inversa). Si tiene más de un comando que comienza con ssh , presione Ctrl + R una y otra vez hasta que encuentre la coincidencia.

Una vez que haya encontrado la coincidencia, puede presionar Enter para ejecutar el comando o el cursor hacia la izquierda / derecha para seleccionar el texto del comando.

No hay una opción inversa predeterminada para Ctrl + R para invertir la dirección de la búsqueda, pero aquí encontrará algunas sugerencias al respecto.

    
respondido por el Prince John Wesley 02.11.2011 - 02:32
76

Si solo desea buscar su historial, puede usar history | grep ssh , sustituyendo ssh por lo que quiera buscar.

    
respondido por el ssmy 02.11.2011 - 02:36
13

Al presionar Ctrl + R se iniciará el modo "reverse-i-search", al escribir "ssh" buscará en su historial comandos que contengan "ssh".

    
respondido por el Sergey 02.11.2011 - 02:33
13

Hago una ligera variación de lo anterior, funciona bien para mí (si te refieres a tu historial de bash

En mi carpeta de inicio, creo un archivo llamado

.inputrc

Adentro va esto

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Nota: lo anterior no parece funcionar más en 14.04, por lo que hace lo mismo -

"\e[A":history-search-backward
"\e[B":history-search-forward

Luego, escribiendo todo el comando anterior que desee & amp; usar los botones de página arriba / página dn busca el historial, siempre comenzando con la página arriba

    
respondido por el doug 02.11.2011 - 02:42
5

Aquí hay otro método que usa comandos clásicos (es más probable que funcione en distros). El historial de comandos se almacena en el archivo .bash_history en su directorio de inicio, por lo que puede hacer esto:

grep "ssh" ~/.bash_history

No olvide el indicador -i si necesita una búsqueda que no distinga entre mayúsculas y minúsculas.

    
respondido por el DisgruntledGoat 02.11.2011 - 10:49
2

Encontré la siguiente función en algún lugar de Internet y la utilicé con gran efecto. Pon esto en tu ~/.bashrc :

hgrep () { 
    history | egrep --color=auto --recursive "[email protected]" | egrep --color=auto --recursive -v "hgrep [email protected]"
}

Ahora vuelve a cargar tu caparazón: exec bash . Ahora tiene un nuevo comando, que puede usar así:

hgrep ssh

Le mostrará una lista de comandos coincidentes de su historial. Para ejecutar un comando, escriba ! seguido del número de comando. Aquí hay un ejemplo:

~:$ hgrep scp
  207  tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
  421  tn scp scott-laptop __HOST__:Scott\ Severance.asc .
  422  tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
  468  tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  469  tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  470  scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207

Me gusta este enfoque mejor que Ctrl + R porque permite búsquedas mucho más flexibles y puedo ver múltiples resultados a la vez.

    
respondido por el Scott Severance 09.11.2011 - 04:14
2

Pon esto en tu ~/.bashrc :

  

alias hgrep = 'historial | grep --color = auto '

ejemplo:

    
respondido por el hadj messaoud 15.10.2017 - 12:59
1

Si usa shell en Emacs ( M-x shell ) puede usar M-r (es equivalente a Ctrl + R en un terminal ).

    
respondido por el N.N. 26.08.2012 - 17:33
1

El historial es bueno pero limitado: prefiero configurar mi entorno bash para que pueda registrar todos los comandos que he ejecutado, además del directorio en el que se ejecutaron. Luego Ejecuto un comando para enumerar todos los comandos que he ejecutado en el directorio actual, que puedo canalizar a grep, etc. - se llama 'plato', ver:

enlace

Si quieres ir al grano, solo tienes que buscar esto en tu .bashrc ( enlace )

También hay un comando realmente útil que recibe de forma gratuita llamado 'dishg' - o plato global - que imprime todos los comandos que se ejecutan, independientemente del directorio. Obviamente, este solo es útil cuando se usa con grep y cola, etc. ...

Lo he estado utilizando durante años y, literalmente, es lo primero que instalo cada vez que configuro una nueva caja. Registra los comandos que ejecuta en archivos de texto en un directorio oculto (~ / .dish). Nunca he tenido un problema con el espacio en disco ...

    
respondido por el David Woolford 26.08.2018 - 01:53
0

Quería escribir esto como comentario en @ ssmy pero no pudo obtener el formato en el comentario para cooperar.

Después de buscar en el historial con history | grep ssh , puede ejecutar el comando que desee escribiendo su número antes de un signo de exclamación, p. ej. !42 .

Ejemplo:

$ history | grep ssh
  5 ssh [email protected]
 13 ssh [email protected]
 42 ssh [email protected]
$ !42
    
respondido por el magikMaker 31.01.2018 - 22:12

Lea otras preguntas en las etiquetas