Historia bash może zrobić wiele pomocnych rzeczy, a poszukiwanie, o Strg-rktó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, !1był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 !-3jest 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 !-3i naciśniesz, ENTERa 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 shoptpoleceniu. Przy histverifyustawieniu wywołanie takie jak !-3zapisuje tylko zastąpienie z historii do linii poleceń, ale nie wykonuje go bezpośrednio. Musisz, że tak powiem, ENTERsamemu wcisnąć kluczowe - lub powstrzymać się od tego, jeśli zdecydujesz.