2009-01-08 22 views
10

Cuando trabajo una sesión bash interactiva, un aspecto del shell de Windows que extraño es la F8 tecla donde empiezas a escribir un comando, presiona F8 y el shell encuentra el comando más reciente ingresado en la historia que coincide con lo que tienes mecanografiado hasta ahora. p.ej.Bash Shell - ¿Qué es equivalente al shell DOS F8?

[email protected]:~>cd /home/jb<F8 Key Here> 

nos lleva a mi mando previo:

[email protected]:~>cd /home/jboss/server/default/log 

¿Hay alguna manera de hacer esto en bash?

Respuesta

15

Hit Ctrl - R antes de empezar a escribir.

(Muy bien puede haber otra versión que encuentra comandos en base a lo que ya se ha escrito - no sabría, como Ctrl - R siempre ha sido lo suficientemente bueno para mí :)

presionar Ctrl - R muestra una vez más el próximo partido etc.

+2

Tenga en cuenta que si graba después de su primera Ctrl-R, restringirá la búsqueda en el historial a entradas que coincidan con lo que escribió; puede alternar entre Ctrl-R y escribir para encontrar rápidamente lo que está buscando. – MatthieuP

2

En su caso !jb imprimiría y luego ejecutar ese comando.

por ejemplo,

$ nano logconfig.properties 
$ !n 
nano logconfig.properties 
$ 

Por supuesto, si usted quiere estar en el lado seguro, el uso ctrl-r primero en abrir el historial de comandos interactivo.

+0

Su comando comienza "cd/home/jb"; "! jb" no ejecutaría su comando. "!? jb?" podría hacerlo, pero también podría ejecutar algún otro comando que tuviera las letras "jb" en él. –

+0

¡Si tiene dudas una vez que ya ha escrito el! y buscar parte de la consulta, puede forzar la expansión in situ con M- ^. –

2

Ctrl + R realiza una búsqueda de historial. Es un poco diferente, ya que primero se golpea Ctrl +R y luego tipo lo que estás buscando.

1

Si solo está hablando de un comando, puede usar el !<cmd> para hacer el último. Por ejemplo, digamos que ingresó python runscript.py hace un tiempo; puede escribir:

!py 

o algo similar para ejecutar ese comando nuevamente.

Para repetir un argumento a un comando, se podría hacer algo como esto:

echo !py:1 

que runscript.py eco de vuelta a la terminal, en este ejemplo. El número después de los dos puntos se refiere al argumento que le gustaría usar del comando dado.

Hay mucha otra gran información sobre la historia de bash here.

6

My Gentoo está configurado de manera que puedo presionar PgUp y PgDn para desplazarme por esos comandos en el historial de comandos que comienzan con lo que está actualmente en mi línea de comandos.

# cd<PgUp> 

resultados en:

# cd hydrogen 

Eso es más o menos la misma función. Se define en mi /etc/inputrc con las siguientes líneas: '!'

# mappings for "page up" and "page down" to step to the beginning/end 
# of the history 
"\e[5~": history-search-backward 
"\e[6~": history-search-forward 
+0

Tengo algo similar en tcsh. Lo tengo asignado a Ctrl + Arriba y Ctrl + Abajo en su lugar, por lo que también puedo tener una búsqueda de historial normal. –

0

mi humilde opinión es peligroso, como hacer! rm en el shell equivocado que tiene un comando rm diferente de lo que esperabas. Al menos Ctrl + R le permite ver la línea de comando completa que seleccionó antes de ejecutarla.

1

que tienen estas líneas en mi archivo .inputrc:

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

Este historial se une a la arriba y abajo las teclas de flecha. Entonces puede comenzar a escribir un comando, kextload decir, y luego cada toque de la flecha hacia arriba completará la línea con el comando anterior que comenzó con kextload.

Todos mis archivos de configuración son públicos en github.

http://github.com/jonshea/config-files/tree/master

0

soluciones Niza. Gracias por esos. El Ctrl + R era exactamente lo que estaba buscando, aunque las opciones de acceso son complementos realmente útiles.

Saludos.

0

Si usa el modo de entrada vi (establece -o vi en bash o mediante el modo de edición establecido vi en .inputrc), puede usar comandos vi normales para buscar el historial (/). Esto también le proporciona expresiones regulares completas, que pueden ser útiles para encontrar un comando complejo.