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.
@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
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.
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 .quelle
!!: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 auftiger
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
und du wolltest den ersten, den du tippen könntest
geben
Oder wenn Sie beides möchten, können Sie tippen
geben
Sie können dies auf eine beliebige Anzahl von Argumenten erweitern, z.
quelle
-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
Won
ist die 0-basierte Position des gewünschten Arguments?Zum Beispiel:
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
- Befehlsnummern
vonhistory
!pattern
- Letzte Befehlsübereinstimmungpattern
!!:s/find/replace
- letzter Befehl, ersetzenfind
durchreplace
Weitere Informationen zum Befehlsverlauf
quelle
!!: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.
quelle
↑
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.
quelle
! * führt einen neuen Befehl mit allen vorherigen Argumenten aus.
quelle
$_
stattdessen verwendet werden.Ja, Sie können
!$
das letzte Argument des vorhergehenden Befehls abrufen.quelle