Así que uso el upen mi shell (Bash en OSX o Ubuntu, principalmente) pero a veces sé que quiero las cosas después de la ubicación actual del cursor. ¿Hay alguna manera de tener la línea en la que estoy completa con la línea de arriba? Golpear upy luego leftes molesto.
Cualquier otro truco también sería genial, excepto por tablo que todos hablamos ahora :)
Aquí hay un ejemplo (por solicitud de ~ quack):
Escribo mkdir /where/the/hell/is/that/thing
y luego quiero cd en el mismo directorio. Pero ahora sé sobre meta-b :)
keyboard-shortcuts
bash
Dan Rosenstark
fuente
fuente
Respuestas:
Prueba esto:
luego presione alt+.
dependiendo de su sistema operativo y terminal, es posible que deba escribir a esccontinuación.
También puede presionar alt+ 1+ .para elegir un argumento previo específico.
Esto es mucho mejor que !! o! $ porque realmente puedes ver lo que estás a punto de ejecutar, y de todas formas se necesitan menos pulsaciones de teclas.
editar: estrictamente hablando, metano lo es alt, por lo que también podría funcionar con la tecla "windows" dependiendo de cómo esté configurado su teclado.
fuente
Debería leer man bash en su sistema, particularmente la sección en Readline , ya que este es el mecanismo de entrada interactivo de bash. El manual de Bash en gnu.org tiene una buena sección sobre Edición de línea de comandos que ayudará a llenar algunos de los vacíos.
De manera predeterminada, puede usarlos para moverse en la línea de comandos (solo enumere algunos aquí; consulte el enlace para obtener una lista completa):
Puede usar estos para "matar" (también conocido como "cortar") texto de una línea:
Por lo tanto, puede combinarlos para seleccionar un fragmento de la línea de comandos que desea repetir, eliminarlo y luego pegarlo al final de su próximo comando.
Ahora, para hacerlo aún más divertido, consideremos la expansión de la historia de bash . Se trata de que
!!
de que la respuesta de Studer menciones . La expansión de la historia se divide en designadores de eventos , designadores de palabras y modificadores .Los designadores de eventos se ven así (nuevamente, vea los enlaces para la lista completa):
!
- comienza una sustitución de historial!n
- el comando n-ésimo en la lista de historial de bash, para algunos enteros n (también funciona para negativos)!!
- el comando anterior; equivalente a!-1
!string
- el comando más reciente que comienza con stringLos designadores de palabras seleccionan ciertas partes de un evento. Use
:
para separar el evento de la palabra designadora. Las palabras se numeran desde 0 comenzando al principio de la línea, y se insertan en la línea actual separadas por espacios individuales.$
- designa el último argumento (por ejemplo,!!:$
es el último argumento del último comando; se puede acortar a!$
)n
- designa la enésima palabra (por ejemplo,!str:2
es el segundo argumento del comando más reciente que comienza con str ;!!:0
es el comando del último comando)Entonces, para seguir su ejemplo, si su último comando es
mkdir /some/really/long/path
, solo ejecutar!!
volverá a ejecutar ese comando nuevamente. Pero en su lugar quierescd
entrar en ese camino:Ahora supongamos que ejecuta otros comandos y luego desea volver a consultar esa ruta nuevamente. Si ese fue el último comando mkdir que ejecutó, puede usar esto para repetir esa ruta:
fuente
bind -p
obind -P
imprimirá sus combinaciones de teclas actuales; esa es la referencia definitiva para lo que usa tu bash .Si eres un usuario vi, puedes poner el shell en modo vi escribiendo
set -o vi
.Luego puede hacer todo tipo de cosas poderosas en la línea de comando después de escribir
Esc + k
.El que más uso es
Esc+K
entonces/
cualquier texto escrito después de la barra se utilizará para buscar en el historial de la línea de comandos.por ejemplo,
Esc + k
/smbclient
le dará el último comando smbclient que escribió. Puede desplazarse por todas las búsquedas utilizando las teclas vi estándar (j
yk
hacia arriba y hacia abajo, pero creo que las flechas hacia arriba y hacia abajo también funcionarán).Ayuda adicional aquí , también hay algunas cosas incrustadas incorporadas en ese enlace que podrían ser más de lo que estás buscando.
Saludos, Stu.
fuente
Puede usar
!!
cuál representa el último comando:fuente
!!
es un sinónimo para!-1
: gnu.org/software/bash/manual/bashref.html#Event-DesignatorsEn el ejemplo que da, use! $ Para representar el último parámetro del comando anterior:
También puede usar variaciones numeradas para extraer parámetros específicos de comandos anteriores.
fuente
Recientemente encontré esta hoja de referencia de readline muy útil. Muchas cosas que no sabía. Solía usar
!$
todo el tiempo hasta que descubrí acerca de Alt+ ., que ahora uso todo el tiempo. :)fuente