Je commence à apprendre quelques Regex, donc j'utilise cette commande à plusieurs reprises:
grep pattern /usr/share/dict/american-english
Seule la partie avec le modèle change, donc je dois écrire encore et encore l'expression longue " / usr / share / dict / american-english ".
Quelqu'un a fait remarquer qu'il est possible de développer un argument d'une commande à partir de l'historique des commandes en tapant des combinaisons de caractères cryptiques au lieu de l'expression complète. Pourriez-vous me dire ces combinaisons de caractères cryptiques?
bash
command-line
command-history
history-expansion
Abdul Al Hazred
la source
la source
bash
,dash
,zsh
,mksh
etksh
coquilles (au moins, que je sais) reconnaîtrons tous le$_
dernier paramètre spécial arg (certains le font uniquement en mode interactif, cependant) . Il se développe comme une variable:grep somepattern filename; grep otherpattern "$_"
. Vous pouvez généralement voir son contenu dans la sortie deset
.Réponses:
Vous pouvez utiliser
<M-.>
(ou<Esc>.
si votre touche Meta est utilisée pour autre chose), c'est-à-dire Meta-dot (ou <esc> dot), où Meta est généralement la touche Alt, pour rappeler le dernier argument de la commande précédente. Donc, vous devez d'abord taperEt puis si vous vouliez chercher autre chose, vous taperiez
Après avoir tapé un espace puis Esc.(c'est-à-dire en appuyant d'abord sur la touche d'échappement, puis sur la touche point):
Vous pouvez également utiliser l'une des options suivantes:
Où
!:2
et!$
signifient respectivement "deuxième argument" et "dernier argument".la source
editing-mode vi
set vous devez ajouter une liaison pour~/.inputrc
foryank-last-arg
et pour Zsh vous devez lierinsert-last-word
...zsh
,bash
,ksh
,mksh
oudash
coquilles vous pouvez simplement utiliser$_
. POSIXLY que la liaison est déjà définie, cependant,ESC _
quandset -o vi
est en vigueur._letter
liaison d'alias - mais seulement parce que je ne sais toujours pas comment le faire fonctionner avec bsdeditline
.En général (avec Bash)
<Esc> N <Esc> .
rappellera l'argument N'th de la commande précédente dans la ligne de commande actuelle (où N est basé sur 0).Pour le deuxième argument de la dernière commande, ce serait:
<Esc> 1 <Esc> .
Si vous vouliez le troisième argument, alors
<Esc> 2 <Esc> .
... etc.
Comme d'autres l'ont mentionné, si vous voulez le dernier argument de la commande précédente, il y a un raccourci spécifique pour cela juste:
<Esc> .
la source