przekaż argumenty poprzedniego polecenia do bieżącego polecenia [duplikat]

1

To pytanie ma już odpowiedź tutaj:

Są chwile, kiedy chcę wziąć parametry poprzedniego polecenia i zastosować je do bieżącego polecenia.

Oto przykład

$ cat foo.txt
$ vim foo.txt

Chciałbym znaleźć skrót, aby nie musieć wpisywać vim foo.txt

spuder
źródło
3
To nie są argumenty , ale wynik , którego szukasz, ponieważ ~/foo.txtjest drukowany przez locate.
grawity
@grawity masz całkowitą rację. Zmodyfikowałem pytanie, ponieważ nie miało sensu, jak go zadałem.
spuder

Odpowiedzi:

4

Często używam polecenia Bash yank-last-arg, skrótu M-.lub Esc+ .. Spowoduje to skopiowanie ostatniego argumentu z poprzedniego wpisu historii do bieżącego wiersza w bieżącej pozycji, dzięki czemu można sprawdzić i edytować argument.

Dubu
źródło
Plus 1 za esc.
spuder
1

Rozwiązaniem jest użyć !$

przykład:

vim !$

Aby pobrać ostatni parametr z ostatniego polecenia, użyj `! Foo: $, jak pokazano poniżej

cp foo bar
!cp:$ foobar
#This will copy foo to bar, and then bar to foobar

Możesz alternatywnie użyć następującej składni

cp foo bar
!!:$

http://www.thegeekstuff.com/2011/08/bash-history-expansion/

spuder
źródło
3
Uważaj, !$rozwija się tylko do ostatniego argumentu, nie wszystkie. I to nie odpowiada na twoje pytanie, jak stwierdzono - czy chcesz zastąpić komendę jak w vim "$(locate foo.txt)"?
slhck 17.07.13
Dzięki za zwrócenie na to uwagi. Ponieważ nie ma jeszcze odpowiedzi, wyjaśnię to pytanie.
spuder
2
Aby wziąć wszystkie parametry, użyj !*- gnu.org/software/bash/manual/bashref.html#History-Interaction
glenn jackman