Uzupełnianie poleceń w bash (bash completion)

Spis treści

Bash nie nadaje się dla nieco bardziej zaawansowanych użytkowników linux'a. Najbardziej odczuwalnym elementem bash'a jest brak uzupełniania poleceń za pomocą klawisza Tab . Nie mówimy tutaj o przeszukiwaniu zmiennej $PATH pod kątem dopasowań pliku wykonywalnego do tego co wpisujemy aktualnie w terminalu. Nie chodzi też o uzupełnianiu ścieżek podawanych do cd ale o opcje, które jakiś program może przyjąć jako argument. Zwykle musimy się uczyć ich na pamięć lub zaglądać do help'a czy manuala. Możliwe jest jednak skorzystanie z dodatku zwanego bash completion, który w sporej części przypadków potrafi dostarczyć dość zaawansowane uzupełnianie poleceń, którymi się posługujemy na co dzień. Ten wpis ma na celu pokazanie jak włączyć ten cały mechanizm i uprościć sobie nieco życie podczas pracy w terminalu.

Parę słów o bash completion

Obecnie chyba niemal każdy shell ma wbudowane uzupełnienie poleceń, a to z tego względu, że ta funkcjonalność drastycznie poprawia szybkość i płynność operacji przeprowadzanych w trybie tekstowym. Niemniej jednak, te zdolności są dość mocno ograniczone w przypadku domyślnego shell'a w debianie, jakim jest bash. Dlatego też powstał projekt bash completion , który ma na celu znaczne rozbudowanie możliwości tego shell'a jeśli chodzi o uzupełnianie poleceń.

Generalnie rzecz biorąc, mechanizm uzupełniania sprowadza się do przyciśnięcia klawisza Tab dwukrotnie w momencie wpisywania jakiegoś polecenia do terminala. Jeśli wpiszemy kilka znaków, po czym wciśniemy Tab , to zostanie nam zwróconych szereg pozycji pasujących do tej wpisanej frazy. Jeśli chodzi o nieco bardziej zaawansowane uzupełnianie poleceń, to po wpisaniu nazwy polecenia i przyciśnięciu klawisza Tab , zostanie nam zwrócony szereg opcji, jakie możemy dopisać w argumencie dla tego polecenia. Wygląda to mniej więcej tak:

bash-completion-uzupelnianie-nazw-polecen

Mało tego, po określeniu parametru, możemy znów przycisnąć klawisz Tab dwa razy i w ten sposób będziemy wiedzieć jakiego formatu danych oczekuje konkretna opcja tego polecenia. W powyższym przypadku, po wybraniu opcji luksFormat i przyciśnięciu Tab , automatycznie pojawił się katalog /dev/ sugerujący by wybrać jakiś urządzenie, co wydaje się logiczne.

Jak włączyć uzupełnianie poleceń

By móc skorzystać z tego wynalazku uzupełniającego polecenia przy pomocy klawisza Tab , musimy posiadać zainstalowany w systemie pakiet bash-completion . Musimy także edytować plik .bashrc , który znajduje się w katalogu domowym użytkownika. Otwieramy zatem wspomniany plik i dodajemy do niego ten poniższy blok kodu:

if ! shopt -oq posix; then
      if [ -f /usr/share/bash-completion/bash_completion ]; then
            . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ]; then
            . /etc/bash_completion
      fi
fi

I to w zasadzie cała robota. Zmiany nie są natychmiastowe i wymagają przeładowania konfiguracji przy pomocy tego poniższego polecenia:

$ source ~/.bashrc
Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.