Wie kann ich mich an das Argument des vorherigen Bash-Befehls erinnern?


Antworten:


562

Sie können das letzte Argument des vorherigen Befehls verwenden $_oder !$abrufen.

Auch Alt + .kann verwendet werden , um das letzte Argument von einem der vorhergehenden Befehle wieder zu verwenden .


121
Auch, wenn Sie ein beliebiges Argument möchten, können Sie verwenden !!:1, !!:2usw. ( !!:0wird der vorherige Befehl selbst.) Siehe gnu.org/software/bash/manual/bashref.html#History-Interaction
janmoesen

41
Ähnlich !$verwenden Sie !^für das erste Argument.
Will

13
ahh ... * nix ... du bist eine Sache der Schönheit ... jeden Tag liebe ich dich mehr
jx12345

Wie können wir uns auf das vorletzte Argument des vorherigen Befehls beziehen? Wenn ich zum Beispiel gegeben habe echo tiger rabbit, wie kann ich auf tigerden folgenden Befehl verweisen ?
Chan Kim

3
Alt + .funktioniert nicht im vi-Modus. Nur zu Ihrer Information, für andere, die hier verwirrt waren.
Brian McCutchon

160

Wenn der vorherige Befehl zwei Argumente hatte, wie folgt

ls a.txt b.txt

und du wolltest den ersten, den du tippen könntest

!:1

geben

a.txt

Oder wenn Sie beides möchten, können Sie tippen

!:1-2

geben

a.txt b.txt

Sie können dies auf eine beliebige Anzahl von Argumenten erweitern, z.

!:10-12

@RNA, ich habe es nur noch einmal versucht, um sicherzustellen, dass ich keinen Tippfehler eingefügt habe. Können Sie etwas mehr Details angeben (z. B. Ubuntu-Befehlszeile, Cygwin für Windows? Fehlermeldung? Vorherige Zeile?)
Robert Gowland

Ich verwende GNU Bash, Version 3.2.51 (1) -Veröffentlichung (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. Die Fehlermeldung lautet-bash: :1-2: bad word specifier
RNA

2
Ich bekomme das Gleiche, wenn es in der vorherigen Zeile nicht zwei Argumente gab. Z.B. Zeile 1 ls a.txtZeile 2ll !:1-2
Robert Gowland

Du hast recht. Das ist ein dummer Fehler, den ich gemacht habe. Vielen Dank!
RNA

Auch um alle Argumente zu erhalten, !:^-$kann verwendet werden oder natürlich ähnlicher Code in Kombination mit Zahlen.
816-8055

88

!!:nWo nist die 0-basierte Position des gewünschten Arguments?

Zum Beispiel:

echo 'one' 'two'
# "one two"

echo !!:2
# "two"

Das !Präfix wird verwendet, um auf vorherige Befehle zuzugreifen.

Andere nützliche Befehle:

  • !$ - letztes Argument vom vorherigen Befehl
  • !^ - erstes Argument (nach dem Programm / eingebauten / Skript) aus dem vorherigen Befehl
  • !! - vorheriger Befehl (oft ausgesprochen "Bang Bang")
  • !n- Befehlsnummer nvonhistory
  • !pattern - Letzte Befehlsübereinstimmung pattern
  • !!:s/find/replace- letzter Befehl, ersetzen finddurchreplace

Weitere Informationen zum Befehlsverlauf


7
Stattdessen !!:s/find/replacekönnen Sie auch ^find^replace.
Big McLargeHuge

Außerdem: !* - alle Argumente aus dem vorherigen Befehl (nach dem Programm / integriert / Skript). zB: ls *.tmp *.cache rm !*
Aphoid

68

In der Kommandozeile können Sie esc- .oder alt+ drücken.

Es durchläuft das letzte Argument Ihrer vorherigen Befehle.


Ich habe immer die und Schlüssel gefunden, um auch zu funktionieren.
Bucket

@ Bucket Schlüssel gehen durch vorherige Befehle, während die von Antonio bereitgestellte Lösung erlaubt, vorherige Argumente durchzugehen (letztes Argument jedes vorherigen Befehls nur)
everyonesdesign

30

Wenn Sie die im Verlauf für einen bestimmten Befehl angegebene Nummer kennen, können Sie so ziemlich jedes Argument in diesem Befehl mit den folgenden Begriffen verwenden.

Verwenden Sie Folgendes, um das zweite Argument aus dem dritten Befehl im Verlauf zu übernehmen:

!3:2

Verwenden Sie Folgendes, um das dritte Argument aus dem fünftletzten Befehl in der Historie zu übernehmen:

!-5:3

Mit einem Minuszeichen fordern Sie es auf, vom letzten Befehl des Verlaufs zu wechseln.


19

! * führt einen neuen Befehl mit allen vorherigen Argumenten aus.

ls /tmp
cd !*
#you are now in /tmp

Dies funktionierte bei OSX nicht - musste $_stattdessen verwendet werden.
Mike W

16

Ja, Sie können !$das letzte Argument des vorhergehenden Befehls abrufen.


Beachten Sie das Schlüsselwort "last", insbesondere wenn Ihr Befehl mehrere Argumente enthielt.
Bucket
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.