Así como M-.(meta-dot o esc-dot o alt-dot) es la función readline yank-last-arg, M-C-y(meta-control-y o esc-ctrl-y o ctrl-alt-y) es la función readline yank-nth-arg. Sin especificar n, tira del primer argumento del comando anterior.
Para especificar un argumento, presione Escape y un número o mantenga presionada la tecla Alt y presione un número. Puede hacerlo Alt: -para comenzar a especificar un número negativo, luego suelte Alt y presione el dígito (esto contará desde el final de la lista de argumentos.
Ejemplo:
Ingrese el siguiente comando
$ echo a b c d e f g
a b c d e f g
Ahora en el siguiente indicador, escriba echo(con el siguiente espacio), luego
Prensa Alt- Ctrl- yy ahora verá:
$ echo a
sin presionar Enteraún, haga lo siguiente
Presione Alt- 3 Alt- Ctrl-y
Presione Alt- - 2 Alt- Ctrl-y
Ahora verás:
$ echo ace
Por cierto, podría haber puesto el echoen la línea seleccionando el argumento 0:
Presione Alt- 0 Alt- Ctrl-y
Editar:
Para responder la pregunta que agregó a su original:
Puede presionar Alt, 0luego presionar repetidamente Alt, .para recorrer los comandos anteriores (arg 0). Del mismo modo Alt, -luego repetir Alt, .le permitiría pasar por los anteriores y anteriores argumentos.
Si no hay un argumento apropiado en una línea particular en la historia, se tocará la campana.
Si hay una combinación particular que usa con frecuencia, puede definir una macro para que una pulsación de tecla la realice. Este ejemplo recordará el segundo argumento de los comandos anteriores presionando Alt- Shift- Y. Puede elegir cualquier pulsación de tecla disponible que prefiera en lugar de esta. Puede presionarlo repetidamente para pasar por los anteriores.
Para probarlo, ingrese la macro en un indicador de Bash:
bind '"\eY": "\e2\e."'
Para hacerlo persistente, agregue esta línea a su ~/.inputrcarchivo:
"\eY": "\e2\e."
Desafortunadamente, esto no parece funcionar para arg 0 o números de argumentos negativos.
bind -lpy mirar los enlaces actuales.-s(nuevo en Bash 4) enumera las macros creadas con-x.M-.:Alt-3Alt-Ctrl-ypor ejemplo, es igual a mantenerAlty escribir3.. Si escribe3.eso varias veces sin soltarloAlt, revise los terceros argumentos de sus líneas de comando anteriores.!$obtiene el último elemento del argumento anterior de la línea de comando.fuente
!:3te consigue el tercero!!te da todo el último comando. Útil si olvidó usarsudo.!:1-2te da todo menos el último de 3 argumentosecho foo{,bar} baz, el comando se registra como impreso y luego se expande. Con lo anterior, el uso deecho !:1after se resuelveecho foo{,bar}y luego se expande aecho foo foobarPara usar el primer argumento, puede usar
!^o!:1Ejemplo:
Como su pregunta es sobre el uso de cualquier otro argumento, aquí hay algunos útiles:
Las primeras cuatro formas se usan con más frecuencia. El formulario
!:2-es algo contrario a la intuición, ya que no incluye el último argumento.fuente
file3demv file1 file2 file3 target/?Me gustó tanto la respuesta de @larsmans que tuve que aprender más. Agregar esta respuesta para ayudar a otros a encontrar la sección de la página de manual y saber para qué buscar en Google:
fuente
! ^ puede ser el comando para el primer argumento. No estoy seguro de si hay una manera de obtener el enésimo.
fuente
!:n, pero contando desde el final en lugar del principio?¡También puede obtener argumentos de cualquier comando en su historial!
fuente
Probado en Ubuntu 18.04
Para insertar argumentos anteriores:
En Linux puedes repetir comandos para volver al historial
Ejemplo:
El último comando es:
mvfoomv fooAtajos generales
Para iterar a través de los argumentos en un comando anterior
solo funciona en zsh
ejecutar o agregar esto a su
~/.zshrcAhora use Alt+ .para ir tan atrás como desee, luego use Alt+: para recorrer los argumentos
Asumiendo que el último comando es
54321echofuente: https://stackoverflow.com/a/34861762/3163120
Para ver todos los atajos disponibles
bind -lpbindkey -LEstoy manteniendo esto actualizado en esta esencia https://gist.github.com/madacol/da38e42d7e45c2949a9f425cc20543e9
fuente
Alt .en Zsh en Mac está escribiendo≥🤔bindkey -Len zsh para ver todos los accesos directos vinculados, tal vez ayude a identificar el problema o incluso encontrar otros comandos útiles. En mi caso, por ejemplo: el enlaceAlt .se define comobindkey "^[." insert-last-word.Ctrl L(para borrar la pantalla) ->bindkey "^L" clear-screen.Alt+Ctrl h->bindkey "^[^H" backward-kill-word(igual queCtrl wpara eliminar la última palabra)bindkey "^[^_" copy-prev-wordBásicamente tiene un uso en arrancar argumentos anteriores (del comando) .
Por ejemplo, si se emite el siguiente comando:
entonces,
Hello,será el primer argumento, ytoday?el sexto , ese es el último; lo que significa que se puede hacer referencia al escribir:Alt+6 seguido por Ctrl-Alt-6
Ctrltradicionalmente se denota como un carácter de sombrero
^antepuesto a los nombres de las teclas, y AltcomoM-ese es el prefijo M eta .Por lo tanto, el acceso directo anterior se puede redefinir
^Mypara tirar.Además, hay un acceso directo de sustitución de sombreros en la línea de comando:
para sustituir la primera cadena coincidente del comando anterior , lo que significa:
daría como resultado:
dejando el segundo partido (
hello) sin cambios.Lo anterior es solo un atajo para:
La sustitución de nivel de evento (*) para la primera cadena encontrada (coincidente) en el comando anterior, mientras que el prefijo de la primera parte con el
ginterruptor se aplicará a toda la línea g lobally :como se suele hacer en otros comandos relacionados, como
sed,viy enregex(expresión regular), una forma estándar de búsqueda ( cadena de coincidencias ).Eso es lo que entendí al usarlo yo mismo y probar cosas por mi cuenta a partir de lo que leí de varias fuentes, incluidas páginas de manual, blogs y foros.
Espero que arroje algo de luz sobre formas misteriosas del
bashshell Bourne-Again (un juego enshshell, que se llama Bourne shell después del apellido de su inventor), que es el shell predeterminado en muchas distribuciones, incluidos los servidores ( SO de servidor ).fuente
! ^ te dará el primer parámetro,! $ te dará el último parámetro,!: n te dará el enésimo elemento.
fuente
El método descrito al final de la respuesta aceptada también funciona con el argumento cero para mí. Tengo estas líneas en mi
~/.inputrc:\e2\e.tiene la ventaja de\e2\e\C-yque recorre los comandos anteriores si se presiona repetidamente en lugar de insertar el segundo argumento del comando anterior varias veces.Para insertar todo el comando anterior, puede escribir
!!\e^.\e^eshistory-expand-line.fuente
Si está en una Mac, tenderá a obtener caracteres extendidos con Ctrl + letra. Tengo mi clave de opción de barra de espacio derecho definida como meta en mi terminal (iTerm2) configurada. Esto significa que uso la tecla para navegar por palabra y extraer parámetros de comandos anteriores.
fuente