¿Historial de comandos selectivo en la terminal?

9

Dentro de un terminal, cuando presiona hacia arriba en su teclado, puede ver los comandos pasados ​​que le ha dado antes en orden. Me preguntaba si había una manera de ver solo los comandos en el pasado comenzando con -por ejemplo, "ls -l". De esa manera, si la lista de comandos es:

  1. ls -l -a
  2. cmake
  3. cd ~ / Desktop
  4. cmake

Una forma de simplemente escribir "ls" y tabulación o cualquier combinación de pulsaciones de teclas necesarias para abrir el comando pasado que se entrega al terminal que comienza con "ls"

Gracias,

jlo
fuente

Respuestas:

14

No mostrará las cosas solo desde el principio ls, pero puede Ctrl-R lshacer una búsqueda hacia atrás en el historial. Repita Ctrl-Rpara encontrar el próximo partido.

billar
fuente
Gracias por el CTRL+Rcomando de acceso directo.
Kleber S.
8

A veces es útil tener esto ...

Ejemplo

Conexión a otra máquina usando ssh:

empezar a escribir

ssh

Use la PgUptecla y su ssh termina con su último uso ... presione PgUpnuevamente y le dará la siguiente y así sucesivamente. ¿Gusta?

Puedes usar esto:

Edite su .bashrc ( vi /home/<yourfolder>/.bashrc) y agregue esto:

$if Bash
    # Search history back and forward using page-up and page-down
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward

    # Completion
    set match-hidden-files off
    set page-completions off
    set completion-query-items 350
    set show-all-if-ambiguous on

$endif

Esto agrega solo al terminal de su usuario esta función. Tendrás que editar también el de la raíz para tener el mismo: puedes seguir este tutorial desde la wiki, no hay forma de hacerlo mal, también hay muchas cosas adicionales para mejorar tu experiencia de terminal ...

maniat1k
fuente
Incluso puede vincularlo a las teclas de flecha arriba / abajo bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward', lo que lo hace aún más intuitivo.
Fritz
5

Para ver el historial de comandos, use puede usar:

$ history

Si solo desea ver que el comando pasado comience con, por ejemplo, "ls", en mi opinión, uso:

$ history | grep ls

Ciertamente, la salida contendrá algo, no un comando, pero contendrá caracteres "ls", pero creo que puede ayudar.

neo0
fuente
2

La forma más fácil de lograr lo que quieres es mediante !<whatever-command>. Por ejemplo, para ejecutar lo lsque realizó por última vez, puede hacer un !ls. Eche un vistazo al siguiente registro para ver si esto es lo que necesita:

nits@nits-excalibur:~$ ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
nits@nits-excalibur:~$ cd Documents/
nits@nits-excalibur:~/Documents$ top
nits@nits-excalibur:~/Documents$ !ls
ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
Nitin Venkatesh
fuente
1
Esto ejecuta el comando sin mostrarlo, ¿hay alguna alternativa que lo muestre como lo solicitó el OP?
Bruno Pereira
En zsh, puede setopt HIST_VERIFYy el comando se colocará en su búfer de entrada, donde puede presionar enter para aceptarlo o editarlo.
Poolie
1

El historial se encuentra ~ / .bash_history Además, para un buen truco para buscar en el historial de bash, presione ctrl + r y luego escriba el inicio del comando que está buscando.

y http://ubuntuforums.org/showthread.php?t=204382 para los alias y trucos prácticos de la línea de comandos

Cola de anillo
fuente