Jak dostosować powłokę Bash za pomocą shopt

Poprzez dostosowanie ustawień powłoki Bash za pomocą narzędzia shopt, masz możliwość zarządzania ponad 50 różnymi parametrami. W tym artykule przedstawimy, jak personalizować system Linux według własnych preferencji.

Wbudowane narzędzie shopt

Narzędzie shopt jest dostępne we wszystkich wersjach powłoki Bash, co oznacza, że nie ma potrzeby instalacji dodatkowych komponentów. Liczba opcji w shopt systematycznie rośnie z biegiem lat, dlatego starsze wersje Bash mogą mieć skróconą listę dostępnych opcji.

Jeśli napotkasz problemy z działaniem na swoim komputerze, warto sprawdzić dokumentację Bash, aby upewnić się, że szukana opcja jest dostępna w Twojej wersji shopt.

W dalszej części artykułu szczegółowo omówimy wszystkie dostępne opcje oraz sposób ich wykorzystania, a także podamy kilka praktycznych przykładów. Możesz również odwiedzić stronę podręcznika Bash lub Podręcznik referencyjny GNU Bash, aby sprawdzić, które opcje mogą być dla Ciebie przydatne.

Niektóre z opcji shopt są aktywowane domyślnie i stanowią integralną część standardowego zachowania Bash. Możesz wprowadzać zmiany jako tymczasowe ustawienia w Bash, które powrócą do wartości domyślnych po zamknięciu sesji powłoki.

Jeżeli chcesz, aby modyfikacje były zachowane po każdym uruchomieniu powłoki Bash, musisz wprowadzić trwałe zmiany.

Dostępne opcje shopt

W sumie dostępnych jest 53 opcji w shopt. Wykonując polecenie shopt bez żadnych argumentów, zobaczysz listę dostępnych opcji. Możesz także wykorzystać polecenie wc, aby policzyć linie, słowa i znaki w wyjściu, co pozwoli nam określić liczbę opcji.

Wpisujemy:

shopt | wc

Aby wyświetlić wszystkie opcje w bardziej przejrzystym formacie, możesz skorzystać z polecenia column, które wyświetli nazwy opcji w kolumnach.

Wpisujemy:

shopt | column

Jak znaleźć informacje o shopt w dokumentacji Linux

Informacje dotyczące shopt oraz jego opcji znajdują się w sekcji Bash dokumentacji Linux. Cała sekcja Bash liczy sobie ponad 6000 linii. Możesz przeszukać całą sekcję lub skupić się na wyszukiwaniu konkretnego hasła.

Aby otworzyć dokumentację, wpisz:

man bash

W dokumentacji naciśnij /, aby rozpocząć wyszukiwanie. Wprowadź poniższe polecenie i naciśnij klawisz Enter:

assoc_expand_once

Zobaczysz początek sekcji dotyczącej opcji shopt w dokumentacji.

Zarządzanie opcjami shopt

Aby aktywować lub dezaktywować opcje shopt, użyj następujących poleceń:

-s: Aktywuj lub włącz.
-u: Dezaktywuj lub wyłącz.

Warto również zweryfikować, które opcje są aktualnie włączone. Możesz to zrobić, używając opcji -s i -u bez podawania nazw opcji. Spowoduje to wyświetlenie listy aktywnych i nieaktywnych opcji.

Wpisz następujące polecenie:

shopt -s

shopt -u | column

Możesz także użyć shopt bez polecenia -s lub -u, aby sprawdzić, które z opcji są aktywne lub nieaktywne.

Na przykład, aby sprawdzić ustawienie opcji histverify, wpisz:

shopt histverify

Następnie możesz aktywować tę opcję, wpisując:

shopt -s histverify

Aby sprawdzić ponownie, wpisz:

shopt histverify

Opcja histverify zmienia sposób działania historii poleceń. Domyślnie, jeśli odwołujesz się do polecenia w historii za pomocą jego numeru, na przykład ! 245, polecenie zostanie natychmiast wykonane.

Aby przeglądać polecenie przed jego wykonaniem i, jeśli zajdzie taka potrzeba, je edytować, włącz opcję shopt histverify, a następnie wpisz:

!245

Powoduje to, że polecenie jest ładowane w wierszu poleceń, co umożliwia jego edytowanie lub wykonanie po naciśnięciu klawisza Enter.

Opcja autocd

Włączając opcję autocd, po wpisaniu nazwy katalogu i naciśnięciu klawisza Enter, powłoka zinterpretuje to jako polecenie cd.

Aby aktywować opcję autocd, wpisz:

shopt -s autocd

Następnie po prostu wpisz nazwę katalogu:

Documents

Opcja cdspell

Po włączeniu opcji cdspell, Bash automatycznie poprawi drobne błędy ortograficzne w nazwach katalogów.

Aby ustawić opcję cdspell, wpisz:

shopt -s cdspell

Następnie spróbuj przejść do katalogu, który powinien mieć wielką literę, wpisując:

cd documents

Aby przetestować nazwę katalogu z dodatkowym „t”, wpisz:

cd ../Picttures

Bash przejdzie do katalogu, pomijając wszystkie błędy ortograficzne.

Opcja xpg_echo

Aktywując opcję xpg_echo, polecenie echo zacznie interpretować znaki ucieczki, takie jak \n dla nowej linii i \t dla tabulacji.

Najpierw upewnij się, że opcja jest włączona:

shopt -s xpg_echo

Następnie użyj znaku \n w ciągu, który chcesz przekazać do polecenia echo:

echo "This is line one\nThis is line two"

Znak nowej linii spowoduje podział wiersza w wyjściu.

To zachowanie jest analogiczne do użycia opcji -e (pozwala na interpretację ucieczki) w poleceniu echo, z tą różnicą, że xpg_echo aktywuje to jako domyślne zachowanie.

Opcja dotglob

Opcja dotglob wymaga ostrożnego podejścia. Pozwala na włączenie do rozwijania nazw plików i katalogów tych, które zaczynają się od kropki (.), znanych jako pliki lub katalogi ukryte. Opcja ta ignoruje kropkę na początku ich nazwy.

Aby zobaczyć pliki lub katalogi, które kończą się na „maniaku”, wpisz:

ls *geek

Tylko jeden plik zostanie znaleziony i wymieniony. Następnie włącz opcję dotglob:

shopt -s dotglob

Następnie wydaj to samo polecenie ls, aby sprawdzić pliki i katalogi kończące się na „geek”:

ls *geek

W tym przypadku znajdziesz dwa pliki, w tym jeden ukryty. Należy zachować ostrożność przy używaniu poleceń rm i mv z włączoną opcją dotglob.

Opcja nocaseglob

Opcja nocaseglob działa podobnie do dotglob, ale w tym przypadku różnice w wielkości liter w nazwach plików i katalogów są ignorowane przy rozwijaniu ich nazw.

Wpisz poniższe polecenie, aby znaleźć pliki lub katalogi, które zaczynają się od „jak”:

ls how*

Jeden plik zostanie znaleziony i wymieniony. Aby aktywować opcję nocaseglob, wpisz:

shopt -s nocaseglob

Następnie powtórz polecenie ls:

ls how*

Dwa pliki zostaną znalezione, w tym jeden z dużymi literami.

Trwałe zmiany ustawień

Wprowadzone przez Ciebie zmiany obowiązują jedynie w bieżącej sesji powłoki Bash. Aby uczynić je trwałymi na różnych sesjach, musisz dodać je do pliku „.bashrc”.

W katalogu domowym otwórz plik „.bashrc” w preferowanym edytorze tekstu, na przykład Gedit, używając następującego polecenia:

gedit .bashrc

W edytorze Gedit otworzy się plik „.bashrc”, w którym możesz zauważyć już istniejące wpisy dotyczące shopt.

Możesz dodać swoje własne opcje shopt tutaj. Po zakończeniu edytowania zapisz zmiany i zamknij edytor. Od teraz, za każdym razem gdy otworzysz nową sesję powłoki Bash, Twoje opcje będą automatycznie ustawione.

Przegląd dostępnych opcji

Choć polecenie shopt oferuje wiele opcji, nie musisz zajmować się nimi wszystkimi naraz. Prawdopodobnie znajdziesz kilka, które nie będą Cię interesować.

Niektóre opcje są dostosowane do pracy z określonymi, starszymi wersjami Bash, co może być użyteczne, ale jest to dość wąski przypadek.

Możesz przeszukać stronę dokumentacji Bash lub Podręcznik referencyjny GNU Bash. Zdecyduj, które opcje są dla Ciebie istotne, a następnie eksperymentuj z nimi. Zachowaj ostrożność przy opcjach wpływających na rozwijanie nazw plików i katalogów i testuj je w mniej inwazyjnych poleceniach, takich jak ls, aż poczujesz się z nimi komfortowo.