Како прилагодити Басх Схелл помоћу схопта

Podešavanjem ponašanja vašeg Bash okruženja pomoću komande `shopt`, imate mogućnost da kontrolišete više od 50 različitih podešavanja. U ovom tekstu ćemo objasniti kako možete da prilagodite svoj Linux sistem baš onako kako vam odgovara.

Ugrađena komanda `shopt`

Ugrađena komanda `shopt` je sastavni deo svake verzije Bash shell, što znači da ne morate instalirati ništa dodatno. Količina opcija dostupnih u okviru ove komande se povećavala tokom godina. Stoga, starije verzije Bash-a mogu imati kraću listu `shopt` opcija.

Ukoliko primetite da određena funkcija ne radi na vašem sistemu, konsultujte manual stranicu za Bash da biste proverili da li je ta opcija dostupna u vašoj verziji `shopt`-a.

U nastavku ćemo pokriti sve `shopt` opcije, opisati način njihove upotrebe, i dati primere. Detaljnije informacije možete pronaći u Bash manual stranici ili GNU Bash Referentnom priručniku, kako biste istražili opcije koje vam se čine korisnim i privlačnim.

Neke od `shopt` opcija su aktivirane po default-u i čine deo standardnog ponašanja Bash-a. Možete aktivirati opcije privremeno, za trenutnu Bash sesiju. Kada zatvorite sesiju, te promene će se izgubiti.

Međutim, ako želite da izmenjeno ponašanje bude aktivno pri svakom pokretanju Bash-a, možete napraviti trajne izmene.

Opcije komande `shopt`

Postoji ukupno 53 `shopt` opcije. Ako koristite komandu `shopt` bez dodatnih argumenata, dobićete listu svih opcija. Ako rezultat prosledimo kroz komandu `wc`, dobićemo broj redova, reči i karaktera. S obzirom na to da je svaka opcija prikazana u zasebnom redu, broj redova odgovara broju opcija.

Unesite sledeće:

shopt | wc

Da biste pregledali sve opcije, možete proslediti rezultat kroz komandu `column` kako biste prikazali imena opcija u kolonama, ili kroz `less` za paginirani prikaz.

Unesite sledeće:

shopt | column

Pronalaženje `shopt` u Linux priručniku

Informacije o `shopt` komandi i njenim opcijama su smeštene u Bash sekciji Linux priručnika. Bash sekcija ima preko 6.000 redova. Možete pronaći opis komande `shopt` skrolovanjem, ili jednostavnije, korišćenjem pretrage unutar priručnika.

Da biste to uradili, otvorite priručnik za Bash:

man bash

U priručniku pritisnite `/` za početak pretrage. Ukucajte sledeće, i zatim pritisnite Enter:

assoc_expand_once

Početak sekcije `shopt` opcija će se prikazati u man prozoru.

Podešavanje i poništavanje opcija

Za podešavanje i poništavanje `shopt` opcija, koristite sledeće komande:

`-s`: Podešava ili aktivira opciju.
`-u`: Poništava ili deaktivira opciju.

S obzirom da su neke opcije podrazumevano aktivirane, korisno je proveriti koje su to opcije. To možete učiniti koristeći `-s` i `-u` opcije bez navođenja imena opcije. Na ovaj način, `shopt` će prikazati aktivirane i deaktivirane opcije.

Unesite sledeće:

shopt -s

shopt -u | column

Takođe, možete koristiti `shopt` bez `-s` ili `-u` da biste videli aktivno ili neaktivno stanje svake opcije pojedinačno.

Na primer, možemo uneti sledeće da proverimo status opcije `histverify`:

shopt histverify

Da bismo je aktivirali, unesite:

shopt -s histverify

Zatim možemo ponovo proveriti status opcije:

shopt histverify

Opcija `histverify` menja način na koji funkcioniše jedan aspekt komande istorije. Obično, ako zatražite od istorije da ponovi naredbu pozivajući se na njen broj, na primer `!245`, komanda se preuzima iz istorije i odmah izvršava.

Ako želite da pregledate naredbu kako biste bili sigurni da je to ona koju očekujete, i da je uredite po potrebi, ukucajte sledeće da biste aktivirali `shopt histverify`:

!245

Komanda se preuzima i prikazuje na komandnoj liniji. Možete je obrisati, izmeniti ili izvršiti pritiskom na Enter.

Opcija `autocd`

Kada je opcija `autocd` aktivirana, ako u komandnu liniju unesete ime direktorijuma i pritisnete Enter, Bash će to protumačiti kao da ste uneli `cd` ispred imena direktorijuma.

Unesite sledeće kako biste aktivirali `autocd`:

shopt -s autocd

Zatim ukucajte ime direktorijuma:

Documents

Opcija `cdspell`

Kada je opcija `cdspell` aktivirana, Bash će automatski ispraviti manje greške u kucanju ili pravopisu u imenima direktorijuma.

Unesite sledeće da biste aktivirali `cdspell` opciju:

shopt -s cdspell

Da biste pokušali da se prebacite u direktorijum sa malim slovima koji bi trebao imati veliko početno slovo, unesite sledeće:

cd documents

Zatim, možemo uneti sledeće da pokušamo sa imenom direktorijuma koji sadrži dodatno „t“:

cd ../Picttures

Bash se prebacuje u svaki direktorijum, bez obzira na pravopisne greške.

Opcija `xpg_echo`

Kada je opcija `xpg_echo` uključena, komanda `echo` će tumačiti specijalne karaktere, kao što su `\n` za novi red, i `\t` za horizontalni tab.

Prvo unesite sledeće kako biste bili sigurni da je opcija aktivirana:

shopt -s xpg_echo

Zatim uključujemo `\n` u string koji ćemo proslediti `echo`:

echo "This is line onenThis is line two"

Specijalni karakter za novi red (`\n`) prouzrokuje prelom reda u izlazu.

Ovo proizvodi isto ponašanje kao i `-e` (omogući tumačenje escape sekvenci) `echo` opcija, ali `xpg_echo` omogućava da ovo bude standardno ponašanje.

Opcija `dotglob`

Opciju `dotglob` treba koristiti sa oprezom. Ona omogućava da datoteke i direktorijumi koji počinju tačkom (`.`), budu uključeni u proširenja imena datoteka (globbing). Ove datoteke se nazivaju „skrivene“ datoteke i direktorijumi. Opcija `dotglob` ignoriše tačku na početku njihovih imena.

Prvo ćemo potražiti datoteke ili direktorijume koji se završavaju sa „geek“ kucajući sledeće:

ls *geek

Jedna datoteka je pronađena i prikazana. Zatim ćemo aktivirati opciju `dotglob` ukucavanjem sledećeg:

shopt -s dotglob

Ponovo izdajemo istu `ls` komandu:

ls *geek

Ovog puta su pronađene i prikazane dve datoteke, uključujući i skrivenu datoteku. Potrebno je biti oprezan sa komandama `rm` i `mv` kada je opcija `dotglob` aktivirana.

Opcija `nocaseglob`

Opcija `nocaseglob` je slična opciji `dotglob`, osim što `nocaseglob` uzrokuje da se razlike između velikih i malih slova u imenima datoteka i direktorijuma ignorišu tokom globbing-a.

Unesite sledeće da biste potražili datoteke ili direktorijume koji počinju sa „how“:

ls how*

Pronađena je jedna datoteka i prikazana. Unesite sledeće da biste aktivirali opciju `nocaseglob`:

shopt -s nocaseglob

Zatim ponovite `ls` komandu:

ls how*

Pronađene su dve datoteke, od kojih jedna sadrži velika slova u imenu.

Trajne promene

Promene koje smo napravili važe samo dok ne zatvorimo trenutnu Bash sesiju. Da bismo ih učinili trajnim, moramo ih dodati u našu „.bashrc“ datoteku.

U vašem matičnom direktorijumu, unesite sledeću komandu da biste otvorili „.bashrc“ datoteku u grafičkom tekst editoru Gedit (ili zamenite sa željenim editorom):

gedit .bashrc

Gedit editor će se otvoriti sa učitanom „.bashrc“ datotekom. Videćete da se već nalaze određeni `shopt` unosi u njoj.

Ovde možete dodati i vaše sopstvene `shopt` opcije. Kada ih dodate, sačuvajte promene i zatvorite editor. Sada, svaki put kada otvorite novu Bash sesiju, vaše opcije će biti aktivirane.

Opcije koliko god pogled seže

Istina je da komanda `shopt` ima veliki broj opcija, ali ne morate da ih sve istražite odjednom, ili ikada. S obzirom na to da ih ima toliko, moguće je da vas neke od njih neće zanimati.

Na primer, postoje mnoge opcije koje prisiljavaju Bash da se ponaša na način koji je kompatibilan sa specifičnim, starijim verzijama. To može biti korisno u nekim situacijama, ali generalno je to retka potreba.

Možete pregledati Bash manual stranicu ili GNU Bash Referentni priručnik. Odlučite koje opcije će vam biti korisne i eksperimentišite sa njima. Samo budite oprezni sa opcijama koje utiču na način na koji se imena datoteka i direktorijuma proširuju. Testirajte ih bezbednom komandom, kao što je `ls`, dok se ne budete osećali sigurno.