Jak wspominasz ostatni (n-ty?) Argument poprzedniej komendy użytej w bash?


9

Często wydaje różne polecenia w tym samym pliku. Na przykład:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

Czy istnieje sposób ponownego wykorzystania argumentów z poprzedniego polecenia w bieżącym, aby nie musiałem go przepisywać?

Odpowiedzi:


15

alt-.jest z pewnością miło, ale jeśli zdarzy ci się już wiedzieć, którego argumentu numerycznego chcesz, możesz być szybszy: !:njest to nargument poprzedniego polecenia.

Często pomocne jest połączenie tego z magiczną przestrzenią. Aby to włączyć, wpisz .inputrc Space: magic-space. Po włączeniu tej opcji po wpisaniu spacji !:2zostanie ona natychmiast powiększona do wartości zamiast czekać na naciśnięcie klawisza Enter. Chroni Cię przed przypadkowym złapaniem niewłaściwego argumentu.


9

W bash możesz użyć skrótu Alt+ ..
Jednokrotne trafienie da ci ostatni argument. Naciśnięcie go więcej spowoduje przejście przez ostatnie argumenty.


4

W bash desygnat „ostatniego słowa w poprzednim wierszu poleceń” to !!$:

$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world

Możesz także użyć „składni karetki”, aby zastąpić początkową część wiersza poleceń; przydaje się to, jeśli chcesz wykonać kilka poleceń w tym samym pliku:

file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`

Istnieje wiele innych możliwości; zobacz „Podstawianie historii” na stronie podręcznika bash (1), aby poznać szczegóły.


Ta składnia karetki jest w rzeczywistości wolniejsza niż samodzielne naciskanie strzałki i edytowanie wiersza poleceń ...
badp

1
!!$można też napisać !$.
Mikel

3

W bash możesz również użyć $ _ dla ostatniego argumentu wiersza poleceń ostatniego wpisanego polecenia:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv

staje się:

$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv $_ kittens.flv
$ vlc $_
$ rm $_

0

Jednym stosunkowo powolnym sposobem jest przywołanie poprzedniego polecenia i zastąpienie poprzedniego polecenia nowym.


Liczę na coś szybszego :)
badp
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.