Historia bash może zrobić wiele pomocnych rzeczy, a poszukiwanie, o Strg-r
którym wspomniał Terry Wang, jest wśród nich ważne. Ale można również zrobić dokładnie to, o co prosiłeś.
Możesz ponownie wykonać poprzednie polecenie za pomocą !!
. Dzięki temu możesz również edytować poprzednie polecenie. Jeśli na przykład zapomniałeś uzyskać uprawnienia roota do polecenia
apt-get install a-long-list-of-packages
nie musisz tego wszystkiego ponownie wpisywać. Zamiast tego po prostu zadzwoń
sudo !!
Jeśli chcesz ponownie wykonać polecenie w określonej pozycji z historii, możesz również użyć !
na przykład
!3
aby ponownie wykonać polecenie w pozycji 3. Pamiętaj, że liczy się to od góry. Więc jeśli przechowujesz 500 poleceń w swojej historii, !1
byłoby to „500 poleceń temu”. Możesz także użyć liczb ujemnych. Na przykład
!-2
wykonałby ponownie ostatnie polecenie.
Możesz także ponownie wykonać ostatnią komendę, która rozpoczęła się od łańcucha takiego jak
!apt-
który powtórzyłby ostatnią linię zaczynającą się od „apt-”. Jeśli chcesz ostatnie polecenie, w którym ciąg pojawił się w dowolnym miejscu w linii, możesz użyć czegoś takiego
!?pt-ge
Jest jeszcze więcej interesujących rzeczy, które może zrobić historia bash. Aby sprawić wrażenie szerokiego zakresu możliwości, możesz uzyskać konkretny dostęp do parametru polecenia z historii. Więc
!-5:3:p
wypisze trzeci parametr na piąty z ostatniego polecenia.
EDYCJA: Jeśli chodzi o komentarz Rudiego poniżej, przy standardowych ustawieniach rozszerzenia historii bash są wykonywane bezpośrednio. Prawdopodobnie najlepiej to opisuje się następująco: wywołanie podobne !-3
jest zastępowane przez powłokę z trzecim ostatnim poleceniem z twojej historii, a następnie wykonywane dane wejściowe (z zastąpieniem). Więc jeśli wpiszesz !-3
i naciśniesz, ENTER
a twoje trzecie ostatnie polecenie było ls ~
, to tak samo, jakbyś pisał ls ~
ponownie i naciskał ENTER
„sam”.
Jeśli tego nie chcesz, możesz ustawić opcję powłoki histverify
. Aby ustawić i wyłączyć opcje powłoki, możesz przeczytać o shopt
poleceniu. Przy histverify
ustawieniu wywołanie takie jak !-3
zapisuje tylko zastąpienie z historii do linii poleceń, ale nie wykonuje go bezpośrednio. Musisz, że tak powiem, ENTER
samemu wcisnąć kluczowe - lub powstrzymać się od tego, jeśli zdecydujesz.