Naciśnięcie przycisku w górę jest uciążliwe i mogę przegapić polecenie, którego szukałem. Więc podczas pisania history
na terminalu otrzymuję wszystkie polecenia, które wcześniej wprowadziłem, indeksowane do liczby. Czy jest jakiś sposób, aby zadzwonić pod numer powiązany z poleceniem?
20
Odpowiedzi:
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 polecenianie musisz tego wszystkiego ponownie wpisywać. Zamiast tego po prostu zadzwoń
Jeśli chcesz ponownie wykonać polecenie w określonej pozycji z historii, możesz również użyć
!
na przykładaby 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ładwykonałby ponownie ostatnie polecenie.
Możesz także ponownie wykonać ostatnią komendę, która rozpoczęła się od łańcucha takiego jak
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
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
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łols ~
, 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ć oshopt
poleceniu. Przyhistverify
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.źródło
!
jest cholernie niebezpieczne ... Chciałbym wiedzieć, co!-4
dokładnie zrobiłem przed uruchomieniem. Czy to pokazuje ci pierwszy? Fajne podsumowanie!!-238
. Nie powinno być trudne zapamiętanie twojego drugiego ostatniego, trzeciego ostatniego, może piątego ostatniego polecenia;) Tak często jak w Linuksie (i tak naprawdę w przypadku komputerów w ogóle), oczekuje się, że wiesz, co robisz. A jeśli naprawdę chcesz dodatkowej siatki bezpieczeństwa, to jest jednashopt
;)Tak jest. Jeśli na przykład chcesz wykonać polecenie, które ma obok niego numer 1234, wykonaj:
!1234
Inne przydatne rzeczy:
Jeśli chcesz uruchomić ostatnie uruchomione polecenie, wykonaj:
Jeśli chcesz uruchomić ostatnie uruchomione
ls
polecenie, wykonaj:Jeśli właśnie pobiegłeś
ls /some/long/path
i chceszcd
to zrobić:Po więcej informacji:
źródło
Użyj kombinacji klawiszy
Ctrl
-r
będziesz mógł użyć słowa kluczowego do przeszukiwania historii bash.Informacje na temat powiązania szybkiego klucza bash: http://ss64.com/bash/syntax-keyboard.html
źródło
Jeśli znalazłeś numer historii polecenia i chcesz go wykonać ponownie, wpisz,
!
a następnie numer, np.!1234
I naciśnij Enter. To część ekspansji historii ; możesz przypiąć do niego modyfikatory .Jeśli chcesz edytować polecenie przed jego uruchomieniem,
fc 1234
wywołuje edytor zewnętrzny.Ale jak już wspomniano Terry Wang, zwykle istnieją szybsze sposoby zlokalizowania polecenia w historii niż określenie jego numeru historii, w tym Ctrl+, Raby wywołać wyszukiwanie przyrostowe (naciśnij, Entergdy znajdziesz polecenie, które chcesz wykonać) lub
fc PREFIX
wykonać poprzednie polecenie zaczynające się odPREFIX
.źródło
history
Komenda pokaże wszystkie polecenia i towarzyszące im numery. Jeśli chcesz po prostu wykonać szybkie sprawdzenie przed uruchomieniem linii poleceń # 135, możesz wpisać:To pokaże ci, co zostanie wykonane.
źródło