Ich fange an, Regex zu lernen, daher benutze ich diesen Befehl wiederholt:
grep pattern /usr/share/dict/american-english
Nur der Teil mit Muster ändert sich, daher muss ich immer wieder den langen Ausdruck " / usr / share / dict / american-english " schreiben .
Jemand machte die Bemerkung, dass es möglich ist, ein Argument eines Befehls aus dem Befehlsverlauf zu erweitern, indem anstelle des vollständigen Ausdrucks kryptische Zeichenkombinationen eingegeben werden. Können Sie mir diese kryptischen Zeichenkombinationen sagen?
bash
command-line
command-history
history-expansion
Abdul Al Hazred
quelle
quelle
bash
,dash
,zsh
,mksh
, undksh
Schalen (zumindest, dass ich weiß , über) werden alle erkennen ,$_
zuletzt arg spezielle Parameter (einige tun dies nur im interaktiven Modus, obwohl) . Es erweitert sich einfach wie eine Variable :grep somepattern filename; grep otherpattern "$_"
. Sie können seinen Inhalt normalerweise in der Ausgabe von sehenset
.Antworten:
Sie können
<M-.>
(oder<Esc>.
wenn Ihr Meta-Schlüssel für etwas anderes verwendet wird), dh Meta-Punkt (oder <esc> Punkt), wobei Meta normalerweise die Alt-Taste ist, verwenden, um das letzte Argument des vorherigen Befehls abzurufen. Also würden Sie zuerst tippenUnd wenn Sie dann nach etwas anderem suchen wollten, würden Sie tippen
Nach dem Eingeben eines Leerzeichens und dann Esc.(dh zuerst Drücken der Escape-Taste und dann der Punkt-Taste):
Sie können auch eine der folgenden Optionen verwenden:
Wo
!:2
und!$
bedeuten "zweites Argument" bzw. "letztes Argument".quelle
editing-mode vi
Set müssen Sie eine Bindung~/.inputrc
füryank-last-arg
for hinzufügen und für Zsh müssen Sie bindeninsert-last-word
...zsh
,bash
,ksh
,mksh
, oderdash
Muscheln können Sie einfach verwenden$_
. POSIXLY diese Bindung ist jedoch bereits aufESC _
wann gesetztset -o vi
ist wirksam._letter
Alias-Bindung erinnern - aber nur, weil ich immer noch nicht herausfinden kann, wie es mit bsd funktionierteditline
.Im Allgemeinen (mit Bash)
<Esc> N <Esc> .
wird das N-te Argument aus dem vorherigen Befehl in die aktuelle Befehlszeile zurückgerufen (wobei N auf 0 basiert).Für das zweite Argument aus dem letzten Befehl wäre das:
<Esc> 1 <Esc> .
Wenn Sie das dritte Argument wollten, dann
<Esc> 2 <Esc> .
... und so weiter.
Wie andere bereits erwähnt haben , gibt es eine spezielle Verknüpfung dafür , wenn Sie das letzte Argument aus dem vorherigen Befehl möchten :
<Esc> .
quelle