Uruchom polecenie z argumentem z ostatniego polecenia


34

Podczas uruchamiania poleceń czasami może być konieczne uruchomienie polecenia z argumentem z ostatniego polecenia. Jak możesz to robić?

Oczywiście, z wyjątkiem użycia klawiszy strzałek i Delklawiszy: ... DelDelDel... Del<new_command>.

Odpowiedzi:


45

Na przykład, jeśli uruchomisz to polecenie:

mkdir long_path_here/new_dir

najprawdopodobniej chcesz przejść do niedawno utworzonego katalogu. Możesz to zrobić, używając następnych „skrótów”:

  • cd Esc.- wpisz cdi po wciśnięciu, Esca następnie .(nie w tym samym czasie). Jeśli poprzednie polecenie nie ma argumentów, otrzymasz samo poprzednie polecenie.
  • cd !*- w tym przypadku otrzymasz wszystkie argumenty z komendy previuos. Jeśli poprzednie polecenie nie zawiera argumentów, nic nie otrzymasz.
  • cd Alt+ .- wpisz cdi po naciśnięciu Alti .(w tym samym czasie). W rzeczywistości, używając tej metody i kontynuując naciskanie .(bez zwalniania Alt), otrzymasz ostatni argument dla każdego polecenia z historii. Jeśli polecenie nie ma argumentów, otrzymasz samo polecenie.

Ogólnie: <command> Esc.lub <command> !*lub <command> Alt+ ..


wow, oszczędziłeś mi setki godzin, które skończyłyby się marnowaniem w ciągu następnych kilku lat
pranavk

32

Istnieje kilka skrótów, jeśli chcesz uzyskać wszystkie argumenty z poprzedniego polecenia lub tylko ostatni argument.

  • Dla wszystkich argumentów: <command> !*
  • Dla ostatniego argumentu: <command> !$

Przykłady:

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

Jeśli chcesz jednego argumentu z listy argumentów z poprzedniego polecenia, możesz użyć <command> !!:<argNumber>

Przykład:

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/

2
Potrzebujesz tylko jednego !w pojedynczej wersji arg, np !:2.. Zakładając domyślne bash.
belacqua

3
Możesz także użyć !^zamiast !:1.
Paddy Landau,

7

Wspomniany !*i!$ jest to dobra rzecz, ale kiedy musisz zrobić małą edycję, skorzystaj ze skrótów readline!

Na przykład zamiast niezliczonej ... DelDelDel... Delmożesz po prostu nacisnąć Ctrl-a(przeskoczyć na początek linii) Alt+d (usunąć na koniec słowa)

Aby uzyskać więcej informacji man readlinei wyszukaj Default key bindings.


4

Aby pobrać nargument th z poprzedniego polecenia, wpisz Alt+ n+ Alt_. Na przykład po:

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

Wpisanie, echoa następnie Alt2Alt_da ci to w następnym monicie:

$ echo 2

„Zrzut ekranu” po trafieniu Alt2to:

(arg: 2) echo

Możesz powtórzyć Alt_wiele razy, aby uzyskaćn argument th z poprzednich poleceń.

Innym przydatnym pomysłem jest zdefiniowanie aliasu r="fc -s". Następnie możesz wykonać zamianę poleceń:

$ echo 1
1
$ r echo=history
history 1
27755  history 1
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.