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):
- Ctrl+ se amueve al comienzo de la línea (o Homesegún la configuración del terminal)
- Ctrl+ se emueve al final de la línea (o End...)
- Meta+ favanza una "palabra"
- Meta+ bretrocede una "palabra"
Puede usar estos para "matar" (también conocido como "cortar") texto de una línea:
- Ctrl+ kmata ("corta") texto desde la posición actual del cursor hasta el final de la línea
- Ctrl+ yyanks ("pega") el texto eliminado más recientemente en el búfer en el cursor
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 string
Los 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 quieres cd
entrar en ese camino:
$ cd !$
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:
$ tar czf ~/foo.tgz !mkdir:$