Wenn Sie Befehle ausführen, müssen Sie manchmal einen Befehl mit dem Argument des letzten Befehls ausführen. Wie kannst du das tun?
Natürlich mit Ausnahme der Verwendung der Pfeiltasten und DelTasten: ↑←←←... ←→→DelDelDel... Del<new_command>
.
Wenn Sie Befehle ausführen, müssen Sie manchmal einen Befehl mit dem Argument des letzten Befehls ausführen. Wie kannst du das tun?
Natürlich mit Ausnahme der Verwendung der Pfeiltasten und DelTasten: ↑←←←... ←→→DelDelDel... Del<new_command>
.
Antworten:
Wenn Sie beispielsweise diesen Befehl ausführen:
mkdir long_path_here/new_dir
höchstwahrscheinlich möchten Sie in das kürzlich erstellte Verzeichnis wechseln. Sie können dies mit den folgenden "Verknüpfungen" tun:
cd
Esc.- Geben Sie cd
und nach dem Drücken Escgefolgt von ein .(nicht gleichzeitig). Wenn der vorherige Befehl keine Argumente enthält, erhalten Sie den vorherigen Befehl selbst.cd !*
- In diesem Fall erhalten Sie alle Argumente aus dem Befehl previuos. Wenn der vorherige Befehl keine Argumente enthält, erhalten Sie nichts.cd
Alt+ .- cd
und nach Altund .(gleichzeitig) drücken . Wenn Sie auf diese Weise weiter drücken .(ohne loszulassen Alt), erhalten Sie das letzte Argument für jeden Befehl aus dem Verlauf. Wenn ein Befehl keine Argumente enthält, erhalten Sie den Befehl selbst.Im Allgemeinen: <command>
Esc.oder <command> !*
oder <command>
Alt+ ..
Es gibt einige Verknüpfungen, wenn Sie alle Argumente des vorherigen Befehls oder nur das letzte Argument verwenden möchten.
<command> !*
<command> !$
Beispiele:
ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/
ls foo/ bar/
ls !$ # Gives the results of ls bar/
Wenn Sie ein einzelnes Argument aus einer Liste von Argumenten aus dem vorherigen Befehl verwenden möchten, können Sie verwenden <command> !!:<argNumber>
Beispiel:
ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
!
in der Single-Arg-Version, z !:2
. Angenommen, Standard-Bash.
!^
anstelle von auch verwenden !:1
.
Erwähnt !*
und !$
ist eine gute Sache, aber wenn Sie ein wenig bearbeiten müssen, kommen Readline-Verknüpfungen, um zu helfen!
Zum Beispiel können Sie anstelle der unzähligen ↑←←←... ←→→DelDelDel... Deleinfach drücken ↑ Ctrl-a(zum Anfang der Zeile springen) Alt+d(bis zum Ende des Wortes löschen)
Für mehr Infos man readline
und suchen Sie nach Default key bindings
.
Um das n
dritte Argument aus Ihrem vorherigen Befehl zu übernehmen, geben Sie Alt+ n
+ ein Alt_. Zum Beispiel nach:
$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
Wenn Sie echo
gefolgt von Alt2Alt_tippen, erhalten Sie dies bei der nächsten Eingabeaufforderung:
$ echo 2
Der "Screenshot" nach dem Treffer Alt2lautet:
(arg: 2) echo
Sie können Alt_mehrere Male wiederholen , um das n
Argument der vorherigen Befehle nacheinander abzurufen.
Eine weitere nützliche Idee ist das Definieren eines Alias r="fc -s"
. Dann können Sie Befehlsersetzungen durchführen:
$ echo 1
1
$ r echo=history
history 1
27755 history 1