Gibt es in Bash eine Möglichkeit, sich an das Argument des vorherigen Befehls zu erinnern?
Normalerweise vi file.c
folge ich gefolgt von gcc file.c
.
Gibt es in Bash eine Möglichkeit, sich an das Argument des vorherigen Befehls zu erinnern?
Gibt es in Bash eine Möglichkeit, sich an das Argument des vorherigen Befehls zu erinnern?
Normalerweise vi file.c
folge ich gefolgt von gcc file.c
.
Gibt es in Bash eine Möglichkeit, sich an das Argument des vorherigen Befehls zu erinnern?
Antworten:
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 .
!!:1
, !!:2
usw. ( !!:0
wird der vorherige Befehl selbst.) Siehe gnu.org/software/bash/manual/bashref.html#History-Interaction
!$
verwenden Sie !^
für das erste Argument.
echo tiger rabbit
, wie kann ich auf tiger
den folgenden Befehl verweisen ?
Alt + .
funktioniert nicht im vi-Modus. Nur zu Ihrer Information, für andere, die hier verwirrt waren.
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
-bash: :1-2: bad word specifier
ls a.txt
Zeile 2ll !:1-2
!:^-$
kann verwendet werden oder natürlich ähnlicher Code in Kombination mit Zahlen.
!!:n
Wo n
ist 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 n
vonhistory
!pattern
- Letzte Befehlsübereinstimmung pattern
!!:s/find/replace
- letzter Befehl, ersetzen find
durchreplace
!!:s/find/replace
können Sie auch ^find^replace
.
!*
- alle Argumente aus dem vorherigen Befehl (nach dem Programm / integriert / Skript). zB: ls *.tmp *.cache rm !*
In der Kommandozeile können Sie esc- .oder alt+ drücken.
Es durchläuft das letzte Argument Ihrer vorherigen Befehle.
↑
und ↓
Schlüssel gefunden, um auch zu funktionieren.
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.
! * führt einen neuen Befehl mit allen vorherigen Argumenten aus.
ls /tmp
cd !*
#you are now in /tmp
$_
stattdessen verwendet werden.
Ja, Sie können !$
das letzte Argument des vorhergehenden Befehls abrufen.