Główna » jak » Jak korzystać z historii Bash w Linux lub MacOS Terminal

    Jak korzystać z historii Bash w Linux lub MacOS Terminal

    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 zapisuje 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 przejrzeć 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 wyciągniętym z historii, jeśli edytowałeś je w bieżącym wierszu.

    Bash ma również specjalny tryb "przypomnienia", którego możesz używać 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 z najwyższym numerem jest najnowszym.

    Możesz zrobić cokolwiek chcesz z wyjściem. 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 z twojej 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 po uruchomieniu historia dowództwo. Możesz wpisać następujące polecenie.

    !12

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

    !!

    Możesz także 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, dają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 przekierować 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 niedawno 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 rozpoczynającego się od "Liczba Pi"I od razu go uruchom:

    !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: str
    !!: p
    !tekst: p

    Wykorzystaj ponownie argumenty ze swojej 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 wykorzystaniu 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łoby to na "ping google.com ".

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

    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 rozpoczynające się od liter, które wpisujemy i wypełniając wskazany przez nas argument. Tak więc, jeśli uciekniemy echo! su: 2 , bash wyszuka ponownie, aby znaleźć ostatnie polecenie zaczynające się od "su"I wypełnij jego 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 ponowne uruchomienie 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 ponownie uruchom poprzednie polecenie, 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, trwa między sesjami. Możesz uruchamiać niektóre polecenia, wylogowywać się, wracać 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 również ignorować powtarzające się polecenia, które mogą zaśmiecać twoją historię. Aby to zrobić, ustaw HISTCONTROL do 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 swojego konta użytkownika, aby te wartości były automatycznie ustawiane podczas każdej rozpoczętej sesji bash, jeśli wolisz.

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