If-Koubou

Jak korzystać z historii Bash w Linux lub MacOS Terminal

Jak korzystać z historii Bash w Linux lub MacOS Terminal (Jak)

Powłoka bash jest standardowym środowiskiem terminala dołączonym do większości dystrybucji Linuksa, zawartym w macOSie i dostępnym do instalacji w systemie Windows 10. Zapamiętuje polecenia, które wpisujesz i przechowuje je w pliku historii. Prawdopodobnie znasz kilka podstaw historii basha, ale jest o wiele potężniejsza, niż możesz sobie wyobrazić.

Skróty klawiszowe

Aby przeglądać historię basha, możesz użyć kilku przydatnych skrótów klawiaturowych basha. Naciśnij skróty, a polecenia, których używałeś poprzednio, pojawią się w monicie.

  • Strzałka w górę lub Ctrl + P: Przejdź do poprzedniego polecenia w historii. Naciśnij klawisz kilka razy, aby przejść wstecz za pomocą poleceń, których używałeś.
  • Strzałka w dół lub Ctrl + N: Przejdź do następnego polecenia w historii. Naciśnij klawisz kilka razy, aby przejść dalej przez polecenia, których używałeś.
  • Alt + R: Przywróć wszelkie zmiany w poleceniu, które wyciągnąłeś z historii, jeśli edytowałeś je w bieżącym wierszu.

Bash ma również specjalny tryb "przypomnienia", którego możesz użyć do wyszukiwania wcześniej wykonanych poleceń zamiast przewijać je jeden po drugim.

  • Ctrl + R: Przywołaj ostatnie polecenie pasujące do podanych znaków. Naciśnij ten skrót i zacznij pisać, aby wyszukać historię basha dla polecenia.
  • Ctrl + O: Uruchom polecenie znalezione za pomocą Ctrl + R.
  • Ctrl + G: Opuść tryb wyszukiwania historii bez uruchamiania polecenia.

Wyświetl historię swojego basha

Możesz wydrukować całą historię basha na ekranie, wykonując pojedyncze polecenie:

historia

Zobaczysz listę wszystkich poleceń w historii bash wraz z liczbą po lewej stronie każdego z nich. Polecenie z "1" obok niego jest najstarszym poleceniem w historii basha, natomiast polecenie o najwyższym numerze jest najnowszym.

Z wyjściem możesz zrobić cokolwiek chcesz. Na przykład możesz go potokować do pliku greppolecenie, aby przeszukać historię poleceń.

historia grep your_search

Możesz również potokować go do ogon Polecenie, aby wyświetlić tylko niewielką liczbę ostatnio wykonanych poleceń. Na przykład poniższe polecenie wyświetli 5 ostatnich wpisów w historii.

historia ogon -5

Uruchamiaj polecenia ze swojej historii

Bash może szybko "rozwinąć" poprzednie polecenia lub rozwinąć je i zmodyfikować. Ta funkcja jest znana jako "rozszerzenie historii" i używa wykrzyknika, znanego jako "bang". Po prostu wpisz je w monicie i naciśnij Enter, aby uruchomić je tak, jakbyś uruchamiał inne polecenie.

Aby uruchomić określone polecenie z historii według jego numeru, użyj następującego polecenia:

!#

Na przykład, powiedzmy, że chcesz uruchomić 12. polecenie z historii bash. To polecenie z "12" po lewej stronie, gdy uruchomisz historia dowództwo. Możesz wpisać następujące polecenie.

!12

Aby ponownie uruchomić ostatnie uruchomione polecenie, wpisz następujące polecenie. Ma to taki sam efekt, jak naciśnięcie strzałki w górę raz, aby wyświetlić poprzednie polecenie, a następnie naciśnięcie klawisza Enter.

!!

Możesz również odwołać się do polecenia z określoną liczbą linii. Na przykład, !-2 uruchomi drugie, ostatnie polecenie, które uruchomiłeś. !! oznacza to samo co !-1 .

To rozszerzenie działa w dowolnym miejscu na linii. Możesz dodać wszystko, co chcesz przed lub po!! lub dowolne inne wyrażenia w tej sekcji. Na przykład możesz wpisać następujące polecenie, aby ponownie uruchomić ostatnie wykonane polecenie sudo, nadając mu uprawnienia root'a. Jest to szczególnie przydatne, jeśli zapomnisz dodaćsudo przed uruchomieniem polecenia.

sudo !!

Lub, na przykład, możesz ponownie uruchomić poprzednie polecenie i potokować jego wynik do grep, aby wyszukać jakiś tekst.

!! | grep tekst

Aby wyszukać polecenie w historii i uruchomić je, wpisz następujące polecenie. Spowoduje to uruchomienie ostatniego polecenia pasującego do podanego tekstu:

!tekst

Tak więc, jeśli ostatnio uruchomiłeś polecenie, które zaczęło się świst, możesz uruchomić następujące polecenie, aby go wyszukać. Spowoduje to przeszukanie wstecz w historii, zlokalizowanie najnowszego polecenia zaczynającego się od "Liczba Pi"I natychmiast uruchom go:

!Liczba Pi

Możesz dołączyć : p do dowolnego z powyższych rozszerzeń i bash wydrukuje polecenie do terminala bez jego uruchamiania. Jest to przydatne, jeśli chcesz potwierdzić, że wybierasz właściwe polecenie, zanim je uruchomisz.

! 12: p
!!: p
! text: p

Ponownie używaj argumentów z twojej historii

Bash pozwala również na uruchamianie nowego polecenia, ale użyj argumentów z poprzednich poleceń w historii.Może to pomóc w szybkim ponownym użyciu długich lub skomplikowanych argumentów bez konieczności ponownego wpisywania ich.

polecenie! $

Na przykład powiedzmy, że uruchomiłeś polecenie touch / home / chris / some_long_file_name_you_dont_want_to_type_again . Teraz chcesz uruchomić polecenie nano / home / chris / some_long_file_name_you_dont_want_to_type_again. Zamiast pisać wszystko od zera, możesz uruchomić:

nano! $

The !$ sprawi, że bash automatycznie uzupełni ostatni argument z poprzedniego polecenia.

To tylko wypełnia ostatni argument. Tak więc, jeśli uciekasz ping google.com -c 4 a następnie uciekać ping! $ , to po prostu rozszerzy się do "ping 4“.

Aby naprawić tę sytuację, możesz użyć poniższej sztuczki, aby rozwinąć pierwszy argument na linii, a nie ostatni:

polecenie! ^

Więc jeśli biegasz ping google.com -c 4 a następnie uciekł ping! ^ bash rozszerzy to na "ping google.com ".

Aby wypełnić wszystkie argumenty użyte w poprzednim poleceniu, zamiast tylko jednego argumentu, użyjesz następującego:

dowództwo !*

Więc jeśli biegasz ping! * zamiast tego bash automatycznie wypełni wszystkie argumenty użyte w poprzednim poleceniu.

Możesz użyć tej samej sztuczki, której używasz do uruchamiania poleceń z historii, aby uzyskać od nich argumenty. Po prostu skorzystaj z poniższego formularza.

polecenie! abc: #

Na przykład uruchomiliśmy polecenie sudo nazwa hosta ubuntu wcześniej. Jeśli uruchomimy następujące polecenie, bash będzie wyszukiwać wstecz w historii, aby znaleźć ostatnie polecenie zaczynające się od liter, które wpisujemy, i wpisać argument, który określamy. Tak więc, jeśli uciekniemy echo! su: 2 , bash rozpocznie wyszukiwanie, aby znaleźć ostatnie polecenie zaczynające się od "su"I wypełnij drugi argument, którym jest"ubuntu“.

Inne sztuczki działają tak, jak można się spodziewać. Na przykład zastąpienie liczby gwiazdką, znaną jako symbol wieloznaczny, powoduje, że bash wypełnia wszystkie argumenty z polecenia:

polecenie! abc: *

Ponownie uruchom poprzednie polecenie i zmodyfikuj je

Bash pozwala również na powtórzenie poprzedniego polecenia i określenie czegoś, co powinno zostać zmienione. Może to być przydatne do korekty literówki w poleceniu. Na przykład następujące polecenie spowoduje ponowne uruchomienie poprzedniego polecenia, zastępując tekst "ABC"W nim z tekstem"xyz“.

^ abc ^ xyz

Na przykład, jeśli przypadkowo uciekłeś ping gogle.com, możesz wtedy uciekać ^ gog ^ goog a bash uruchomi polecenie ping google.com zamiast.

Gdzie jest przechowywana twoja historia i jak ją wyczyścić

Powłoka bash domyślnie przechowuje historię poleceń uruchomionych w pliku historii konta użytkownika w ~ / .bash_history. Na przykład, jeśli twoja nazwa użytkownika jest bob, znajdziesz ten plik w /home/bob/.bash_history.

Ponieważ twoja historia jest przechowywana w pliku, utrzymuje się pomiędzy sesjami. Możesz uruchomić niektóre polecenia, wylogować się, wrócić następnego dnia, a te polecenia będą nadal w pliku historii, gotowe do wyświetlenia i użycia. Każde konto użytkownika ma swój własny plik historii z osobną historią poleceń.

Aby wyczyścić historię bash, możesz uruchomić następujące polecenie. Spowoduje to skasowanie zawartości pliku .bash_history twojego konta użytkownika:

historia -c

Bash domyślnie zapamiętuje ograniczoną liczbę poleceń, co zapobiega zbyt dużemu powiększaniu się pliku historii. Liczba wpisów w historii wpisów bash jest kontrolowana przez HISTSIZEzmienna. Wartością domyślną jest zwykle 500 lub 1000 wpisów. Możesz uruchomić następujące polecenie, aby wyświetlić rozmiar historii bash w systemie.

echo $ HISTSIZE

Aby ustawić historię na zero, uruchom następujące polecenie.

HISTSIZE = 0

W bieżącej sesji bash nie przechowuje żadnych wpisów historii, chyba że uruchomisz takie polecenie jak HISTSIZE = 1000 aby przywrócić określoną liczbę wpisów.

Jak zignorować spacje i duplikaty

Bash pozwala ignorować wpisy historii, które zaczynają się spacją, jeśli ustawisz HISTCONTROLzmienna na ignorespace.

HISTCONTROL = ignorespace

Wpisz spację przed poleceniem przed uruchomieniem go w powłoce bash, a polecenie uruchomi się normalnie, ale nie pojawi się w historii, jeśli ta zmienna jest włączona. Dzięki temu możesz zachować nieco czystszą historię, wybierając opcję uruchamiania poleceń bez wyświetlania ich w historii.

Bash pozwala także ignorować zduplikowane polecenia, które mogą zaśmiecać twoją historię. Aby to zrobić, ustaw HISTCONTROLdo ignorowane.

HISTCONTROL = ignoredups

Aby użyć obu ignorespace i ignorowane funkcja, ustaw HISTCONTROL zmienna na ignoreboth.

HISTCONTROL = ignoreboth

Zauważ, że ustawione zmienne bash będą obowiązywały tylko dla bieżącej sesji. Musisz je dodać do pliku .bashrc Twojego konta użytkownika, aby te wartości były automatycznie ustawiane podczas każdej rozpoczętej sesji bash, jeśli wolisz.

Powłoka bash to złożone narzędzie z wieloma opcjami. Zapoznaj się z sekcjami Wbuduj historię i rozbudowę historii w oficjalnej instrukcji basha, aby uzyskać bardziej szczegółowe informacje i inne zaawansowane triki, których możesz użyć.