Cum să personalizați Bash Shell cu shopt

Prin ajustarea fină a comportamentului shell-ului Bash cu ajutorul comenzii `shopt`, obții control asupra a peste 50 de setări diferite. Vom explora împreună cum să personalizezi sistemul tău Linux pentru a se potrivi preferințelor tale.

Funcția încorporată shopt

Funcția `shopt` este inclusă implicit în toate versiunile shell-ului Bash, ceea ce înseamnă că nu este necesară nicio instalare suplimentară. Numărul de opțiuni disponibile în `shopt` a crescut constant de-a lungul timpului. Prin urmare, cu cât versiunea ta de Bash este mai veche, cu atât lista de opțiuni `shopt` va fi mai scurtă.

Dacă observi că anumite funcționalități nu se comportă conform așteptărilor, verifică manualul Bash pentru a te asigura că opțiunea respectivă este disponibilă în versiunea ta de `shopt`.

În continuare, vom analiza toate opțiunile `shopt`, vom descrie modul lor de utilizare și vom oferi câteva exemple practice. Te poți referi și la manualul Bash sau la Manualul de Referință GNU Bash pentru a identifica opțiunile care ți se par utile sau interesante.

Unele opțiuni `shopt` sunt activate implicit și fac parte din comportamentul standard al Bash. Poți activa o opțiune `shopt` pentru a modifica temporar comportamentul Bash, care va reveni la valorile implicite la închiderea shell-ului.

Totuși, dacă dorești ca modificările să fie aplicate de fiecare dată când deschizi un shell Bash, poți face aceste modificări permanente.

Opțiunile disponibile în shopt

Există 53 de opțiuni `shopt`. Dacă rulezi comanda `shopt` fără niciun argument, aceasta va afișa lista completă. Pentru a număra opțiunile, putem redirecționa ieșirea către comanda `wc`, care numără liniile, cuvintele și caracterele. Deoarece fiecare opțiune `shopt` este afișată pe o singură linie, numărul de linii corespunde numărului de opțiuni.

Introdu următoarea comandă:

shopt | wc

Pentru a vizualiza opțiunile într-un format mai organizat, poți redirecționa ieșirea către comanda `column` pentru a afișa numele opțiunilor în coloane, sau o poți vizualiza cu ajutorul comenzii `less`.

Introdu următoarea comandă:

shopt | column

Cum găsești informații despre shopt în manualul Linux

Informații detaliate despre comanda `shopt` și opțiunile sale se găsesc în secțiunea Bash a manualului Linux. Secțiunea Bash conține peste 6000 de linii. Poți găsi descrierea `shopt` navigând manual sau o poți căuta direct.

Pentru a accesa manualul Bash, rulează comanda:

man bash

În manual, apasă tasta `/` pentru a iniția o căutare. Tastează următoarea expresie, apoi apasă Enter:

assoc_expand_once

Vei ajunge la începutul secțiunii care descrie opțiunile `shopt`.

Cum activezi și dezactivezi opțiunile

Pentru a seta (activa) sau a anula (dezactiva) opțiunile `shopt`, folosește următoarele comenzi:

-s: Activează opțiunea.
-u: Dezactivează opțiunea.

Deoarece unele opțiuni sunt active în mod implicit, este util să verifici ce opțiuni sunt activate. Poți face asta folosind opțiunile -s și -u fără a specifica un nume de opțiune, astfel `shopt` va lista opțiunile activate și dezactivate.

Introdu următoarea comandă:

shopt -s

shopt -u | column

Poți utiliza o opțiune `shopt` fără a folosi comenzile -s sau -u pentru a vizualiza starea (activat sau dezactivat) a acesteia.

De exemplu, introdu următoarea comandă pentru a verifica setarea opțiunii `histverify`:

shopt histverify

Pentru a activa această opțiune, introdu:

shopt -s histverify

Apoi, verifică din nou starea opțiunii cu:

shopt histverify

Opțiunea `histverify` modifică modul în care funcționează o componentă a comenzii `history`. În mod normal, dacă ceri istoricului să repete o comandă folosind numărul său (ex: `!245`), comanda este preluată din istoric și executată imediat.

Dacă preferi să revizuiești comanda pentru a te asigura că este corectă, și eventual să o modifici, activează opțiunea `histverify`:

!245

Comanda va fi preluată din istoric și afișată pe linia de comandă, permițându-ți să o ștergi, să o editezi sau să o execuți apăsând Enter.

Opțiunea autocd

Cu opțiunea `autocd` activată, dacă introduci numele unui director pe linia de comandă și apeși Enter, comanda va fi tratată ca și cum ai fi tastat `cd` înaintea numelui directorului.

Pentru a activa opțiunea `autocd`, introdu:

shopt -s autocd

Apoi, introdu numele unui director:

Documents

Opțiunea cdspell

Când opțiunea `cdspell` este activă, Bash va corecta automat erorile simple de ortografie din numele directoarelor.

Pentru a activa opțiunea `cdspell`, introdu:

shopt -s cdspell

Pentru a schimba directorul într-unul cu litere mici, dar care ar trebui să înceapă cu majusculă, introdu:

cd documents

Apoi, pentru a încerca un nume de director cu un „t” în plus, introdu:

cd ../Picttures

Bash va schimba directorul, corectând erorile de scriere.

Opțiunea xpg_echo

Când opțiunea `xpg_echo` este activată, comanda `echo` va interpreta caracterele escape, cum ar fi `\n` pentru linie nouă și `\t` pentru tab orizontal.

Mai întâi, asigură-te că opțiunea este activată:

shopt -s xpg_echo

Apoi, include `\n` într-un șir transmis la `echo`:

echo "This is line onenThis is line two"

Caracterul escape pentru linie nouă forțează o întrerupere de linie în output.

Aceasta produce același rezultat ca și folosirea opțiunii `-e` ( permiterea interpretării secvențelor escape) la `echo`, dar `xpg_echo` stabilește interpretarea caracterelor escape ca acțiune implicită.

Opțiunea dotglob

Opțiunea `dotglob` trebuie utilizată cu precauție. Aceasta permite includerea fișierelor și directoarelor care încep cu un punct (`.`) în expansiunile de nume. Acestea sunt numite „fișiere punct” sau „directoare punct” și sunt în mod normal ascunse. Opțiunea `dotglob` ignoră punctul de la începutul numelor.

Mai întâi, caută fișierele și directoarele care se termină cu „geek”:

ls *geek

Un fișier este găsit și listat. Apoi activează opțiunea `dotglob`:

shopt -s dotglob

Execută din nou comanda `ls` pentru a căuta fișiere și directoare care se termină cu „geek”:

ls *geek

De data aceasta, sunt găsite două fișiere, unul dintre ele fiind un fișier punct. Trebuie să fii atent când folosești `rm` și `mv` cu opțiunea `dotglob` activată.

Opțiunea nocaseglob

Opțiunea `nocaseglob` este similară cu `dotglob`, cu excepția că `nocaseglob` face ca diferențele dintre majuscule și minuscule din numele fișierelor și directoarelor să fie ignorate în timpul expansiunilor de nume.

Introdu următoarea comandă pentru a căuta fișiere și directoare care încep cu „how”:

ls how*

Un fișier este găsit și afișat. Activează opțiunea `nocaseglob`:

shopt -s nocaseglob

Apoi, execută din nou comanda `ls`:

ls how*

Au fost găsite două fișiere, unul dintre ele conținând majuscule.

Cum să faci schimbările permanente

Modificările efectuate vor rămâne valabile doar în shell-ul Bash curent. Pentru a le face permanente și valabile în diverse sesiuni shell, trebuie să le adaugi în fișierul „.bashrc”.

În directorul tău home, deschide fișierul „.bashrc” cu editorul text Gedit (sau editorul text preferat):

gedit .bashrc

Editorul Gedit va deschide fișierul „.bashrc”. Vei observa că anumite opțiuni `shopt` sunt deja prezente.

Poți adăuga aici propriile opțiuni `shopt`. După ce le-ai adăugat, salvează modificările și închide editorul. De acum, de fiecare dată când deschizi un nou shell Bash, opțiunile vor fi setate automat.

Explorarea opțiunilor shopt

Este adevărat, comanda `shopt` oferă numeroase opțiuni, însă nu este necesar să le utilizezi pe toate. Datorită varietății, există, probabil, opțiuni care nu îți sunt relevante.

De exemplu, multe opțiuni forțează Bash să funcționeze în moduri compatibile cu versiuni mai vechi, specifice. Acestea pot fi utile în anumite cazuri, dar sunt cazuri destul de rare.

Poți consulta pagina de manual a Bash sau Manualul de referință GNU Bash. Alege opțiunile care te ajută și experimentează cu ele. Ai grijă mai ales la opțiunile care afectează modul în care sunt extinse numele fișierelor și directoarelor. Testează-le folosind o comandă inofensivă, cum ar fi `ls`, până când te simți confortabil cu ele.