Kategorie | Linux

  

Interakcje z historią poleceń w Bashu – przydatne triki

Opublikowano 16 kwietnia 2012 przez Franek

Z pewnością wiele osób słyszało o tym, że powłoka Linuxa jest potężnym narzędziem. Dla wielu z nich “magiczne” polecenia są niezrozumiałe i zagmatwane, chociaż przy bliższym poznaniu wcale tak nie jest. Oczywistą oczywistością jest fakt, iż znajomość chociażby podstawowych poleceń i programów w znacznym stopniu ułatwia i przyśpiesza korzystanie z komputera.

Postaram się przedstawić kilka funkcji Bash które znacząco umilają i przyśpieszają pracę w powłoce. O to kilka funkcji Bash pozwalających na interakcje z historią wykonywanych poleceń.

Odnoszenie się do poprzedniego polecenia

Ile razy zdarzało się, że wpisując jakieś polecenie, na przykład chcąc zainstalować jakiś pakiet zapominało się o magicznym sudo? Nie trzeba się martwić w takim przypadku o ponowne wklepywanie listy pakietów do zainstalowania, wystarczy użyć !!:

apt-get install hakunamatata
sudo !!
sudo apt-get install hakunamatata

!! odnosi się do poprzedniego polecenia.

Zastąpienie ciągu znaków w poprzednim poleceniu

Literówki przy wpisywaniu poleceń wydają się normą, szczególnie gdy samo polecenie jest dłuższe. Tutaj również z pomocą przychodzi Bash, więc nie trzeba się martwić o ponowne wprowadzenie całego polecenia. Dla przykładu kolejny raz posłużę się aptem.

sudo apt-get install opera postler chromium-browser pcmanfm gajim friefox geany mpd ncmpcpp
(...)
E: Nie udało się odnaleźć pakietu friefox

^friefox^firefox^

I już wszystko instaluje się, oczywiście można zastąpić każdy ciąg znaków, nie tylko w apcie, wystarczy użyć składni ^zły_ciąg_znaków^dobry_ciąg_znaków^

Odnoszenie się do X linii w historii

Tak jak !! odnosi się do poprzedniego polecenia, tak !-X odnosi się do ‘iksnego’ polecenia zachowanego w historii Basha.

history
1 htop
2 cd ~/
3 dig nibyblog.pl

!-2

Zgodnie z tym co pokazał wynik polecenia history, użycie polecenia !-2 przeniesie użytkownika do swojego katalogu domowego. Mam nadzieję, że przykład jasny. ;-)

Wywoływanie polecenia z jakimś przedrostkiem

Ten trik używany jest przez moją osobę chyba najczęściej. Jeśli często używane jest jakieś polecenie, dla przykładu:

ssh -p 666 root@nibyblog.pl

To następnym razem gdy istnieje potrzeba użycia tej samej komendy wystarczy użyć:

!ssh

Oczywiście to tylko przykład i można użyć !jakiegokolwiek przedrostka.

Pobieranie argumentu polecenia

Załóżmy, że znajdujemy się w katalogu domowym, oraz że istnieje potrzeba wyświetlenia zawartości jakiegoś katalogu:

ls /var/www/nibyblog.pl/wp-content/premiumnews/images

Teraz gdy potrzeba przejść do wyżej wymienionego katalogu nie istnieje potrzeba przepisywania całej ścieżki na nowo, wystarczy użyć:

cd !!:1

Szybko i przyjemnie ;-)

Wszystkie wymienione w tym poście triki są tylko przykładowe, zastosowanie interakcji z historią poleceń niesie ze sobą o wiele więcej, wystarczy tylko potrzeba.

  

5 Comments For This Post

  1. myname Says:

    Operacja z przedroskiem (w przykładzie !ssh) – powtarza ostatnio wykonane polecenie zaczynające się wskazanym ciągiem znaków, niekoniecznie najczęściej.

    W przykładzie z ls … i zmianą katalogu: sporo krótszą formą byłoby cd $_ – jeśli katalog byłby ostatnim argumentem ostatniej komendy.

  2. kamil Says:

    jeśli chodzi o ostatni przykład to nie prościej wpisać cd i wcisnąć (alt+.)

  3. xor Says:

    Warto też wspomnieć o ctr+r

  4. Piotrek Says:

    A co to daje !?

  5. Franek Says:

    "Kombinacja Ctrl-R w bashu uruchamia zachętę do wpisania łańcucha, który chcemy wyszukać i od momentu wpisania pierwszego znaku szuka w tył (czyli zaczynając od ostatnio wpisanego polecenia). Jeśli wyszukany wynik to jeszcze nie ten, którego szukamy, to wciskamy Ctrl-R aż do znalezienia lub wyczerpania historii.

    Mówiąc dokładniej: bash, dostając Ctrl-R, wykonuje polecenie biblioteki readline o nazwie reverse-search-history.

    Jeśli rozpędzimy się w tym wciskaniu i przeleci nam wynik, to warto mieć możliwość cofnięcia zamiast wyjścia (ESC) i szukania od nowa. Do tego w bashu służy polecenie z readline forward-search-history, które, według man bash, domyślnie uruchamiane jest po wciśnięciu Ctrl-S."

Leave a Reply

Polityka komentarzy

     
     
Green Dog Says

MiniBlog

Przeczytaj poprzedni wpis:
SteamBox jeszcze w tym roku

O konsoli do gier której producentem ma być Valve plotkuje się w internetach już od dłuższego czasu. Co raz więcej...

Zamknij