Zaczynam się uczyć Regexa, dlatego wielokrotnie używam tego polecenia:
grep pattern /usr/share/dict/american-english
Tylko część ze zmianami wzorców, więc muszę wielokrotnie pisać długie wyrażenie „ / usr / share / dict / american-english ”.
Ktoś zauważył, że możliwe jest rozwinięcie argumentu polecenia z historii poleceń, wpisując tajemnicze kombinacje znaków zamiast pełnego wyrażenia. Czy możesz mi powiedzieć te tajemnicze kombinacje postaci?
bash
command-line
command-history
history-expansion
Abdul Al Hazred
źródło
źródło
bash
,dash
,zsh
,mksh
, iksh
muszle (co najmniej, że wiem o) będą wszyscy uznają$_
specjalny parametr ostatni arg (niektóre to zrobić tylko w trybie interaktywnym, choć) . To po prostu rozwija się jak zmiennej:grep somepattern filename; grep otherpattern "$_"
. Zazwyczaj można zobaczyć jego zawartość na wyjściuset
.Odpowiedzi:
Możesz użyć
<M-.>
(lub<Esc>.
jeśli twój klawisz Meta jest używany do czegoś innego), to znaczy Meta-kropka (lub <esc> kropka), gdzie Meta jest zwykle klawiszem Alt, aby przywołać ostatni argument poprzedniego polecenia. Najpierw napiszeszA jeśli chcesz grepować na coś innego, wpisz
Po wpisaniu spacji, a następnie Esc.(tj. Najpierw naciśnięciu klawisza Escape, a następnie klawisza kropki):
Możesz także użyć jednego z poniższych:
Gdzie
!:2
i!$
oznacza odpowiednio „drugi argument” i „ostatni argument”.źródło
editing-mode vi
zestawem musisz dodać powiązanie~/.inputrc
dlayank-last-arg
i dla Zsh musisz powiązaćinsert-last-word
...zsh
,bash
,ksh
,mksh
, lubdash
muszli można po prostu używać$_
. POSIXLY, że wiązanie jest już ustawione,ESC _
kiedyset -o vi
obowiązuje._letter
wiązania aliasu - ale tylko dlatego, że wciąż nie mogę wymyślić, jak to zrobić w / bsdeditline
.Ogólnie (z Bash)
<Esc> N <Esc> .
przywołuje N-ty argument z poprzedniego polecenia do bieżącego wiersza poleceń (gdzie N jest oparty na 0).W przypadku drugiego argumentu z ostatniego polecenia będzie to:
<Esc> 1 <Esc> .
Jeśli chcesz trzeci argument, to
<Esc> 2 <Esc> .
... i tak dalej.
Jak wspomnieli inni, jeśli chcesz ostatni argument z poprzedniego polecenia, istnieje specjalny skrót do tego po prostu:
<Esc> .
źródło