¿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,

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.


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 ...


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.


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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.