Estoy empezando a aprender algo de Regex, por lo tanto, uso este comando repetidamente:
grep pattern /usr/share/dict/american-english
Solo cambia la parte con patrón, así que tengo que escribir la expresión larga " / usr / share / dict / american-english " una y otra vez.
Alguien hizo el comentario de que es posible expandir un argumento de un comando desde el historial de comandos escribiendo combinaciones de caracteres crípticos en lugar de la expresión completa. ¿Podrías decirme esas combinaciones de personajes crípticos?
bash
command-line
command-history
history-expansion
Abdul Al Hazred
fuente
fuente
bash
,dash
,zsh
,mksh
, yksh
conchas (por lo menos, que yo sepa) serán todos reconocer el$_
parámetro especial última arg (algunos lo hacen sólo en modo interactivo, sin embargo) . Sólo se expande como una variable:grep somepattern filename; grep otherpattern "$_"
. Por lo general, puede ver su contenido en la salida deset
.Respuestas:
Puede usar
<M-.>
(o<Esc>.
si su tecla Meta se está utilizando para otra cosa), es decir, Meta-punto (o <esc> punto), donde Meta suele ser la tecla Alt, para recuperar el último argumento del comando anterior. Entonces, primero escribiríasY luego, si quisieras buscar algo más, escribirías
Después de escribir un espacio y luego Esc.(es decir, primero presionar la tecla de escape, y luego la tecla de punto):
También puede usar cualquiera de los siguientes:
Donde
!:2
y!$
significa "segundo argumento" y "último argumento" respectivamente.fuente
editing-mode vi
set necesitas agregar un enlace para~/.inputrc
foryank-last-arg
y para Zsh debes vincularinsert-last-word
...zsh
,bash
,ksh
,mksh
, odash
conchas sólo puede utilizar$_
. POSIXLY que la unión está ya configurado, sin embargo, queESC _
cuandoset -o vi
está vigente._letter
enlace de alias, pero solo porque todavía no puedo encontrar la manera de hacerlo funcionar con bsdeditline
.En general (con Bash)
<Esc> N <Esc> .
recuperará el enésimo argumento del comando anterior en la línea de comando actual (donde N está basado en 0).Para el segundo argumento del último comando, sería:
<Esc> 1 <Esc> .
Si querías el tercer argumento, entonces
<Esc> 2 <Esc> .
... y así.
Como otros han mencionado, si desea el último argumento del comando anterior, hay un acceso directo específico para eso en solo:
<Esc> .
fuente