Disa disa më të njohura të Bash janë të njohura dhe shpesh përdoren. Për shembull, shumë fillojnë skriptin me
set -o xtrace
për debuggim,
set -o errexit
për daljen në mënyrë të gabuar ose
set -o errunset
për daljen, nëse variabla e thirrur nuk është e vendosur.
Por ka shumë mundësi të tjera. Ndonjëherë ato përshkruhen shumë ngatërruar në man, prandaj kam mbledhur këtu disa nga më të dobishmet, me shpjegim.
Shënim: në Mac mund të ketë një version më të vjetër të bash (3.x, jo 4.x), ku nuk janë të gjitha këto mundësi të disponueshme. Në këtë rast shihni ose .
set ose shopt?
Ka dy mënyra për të vendosur parametrat e bash: nga skripti ose nga linja e komandës. Mund të përdorni komanda të ndërtuara set dhe shopt. Të dyja ndryshojnë sjelljen e shell-it, bëjnë pothuajse të njëjtën gjë (me argumente të ndryshme), dhe dallohen nga . Parametrat set trashëgohen ose huazohen nga parametrat e shell-eve të tjera, ndërsa parametrat shopt janë krijuar në bash.
Nëse dëshironi të shihni mundësitë aktuale, ekzekutoni:
$ set -o
$ shopt Për të aktivizuar një mundësi në set përdor syntaksin e gjatë ose të shkurtër:
$ set -o errunset
$ set -eEfekti është i njëjtë.
Për të çaktivizuar mundësinë, duhet të vendosni një plus në vend të një minus:
$ set +ePër një kohë të gjatë nuk mund t'i mbaja mend këto sintaksa, pasi logjika duket e papërshtatshme (minus aktivizon mundësinë, dhe plusi e çaktivizon).
Në shopt për aktivizimin dhe çaktivizimin e mundësive përdoren (më të logjikshme) flamuj -s (set) dhe -u (unset):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= offNdryshimi i katalogëve
Ka disa mundësi që ndihmojnë për të punuar me katalogët.
1. cdspell
Me këtë konfigurim, bash do të fillojë të kuptojë gabimet dhe do t'ju çojë në dosjen që keni shkruar gabim.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd .. Kam përdorur këtë mundësi për shumë vite, dhe shumë rrallë (ndoshta një herë në vit) ajo merr një vendim shumë të çuditshëm. Por në ditët e tjera cdspell kursen kohë, pothuajse çdo ditë.
2. autocd
Nëse nuk jeni të gatshëm të pranoni pafuqishmërinë e shkruar disa herë cd, mund të vendosni këtë mundësi për të kaluar në dosjen X, nëse komanda X nuk ekziston.
$ shopt -s autocd
$ abcdefg
$ cd ..Në kombinim me autocompletion, kjo lejon të kalosh shpejt nëpër katalogë:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg Vetëm mos e quani dosjen rm -rf * (po, përshëndetje, kjo është e mundur).
3. direxpand
Kjo është një mundësi e shkëlqyer, e cila zgjerohet variablat e mjedisit përmes shtypjes së Tab:
$ shopt -s direxpand
$ ./[TAB] # zëvendësohet me...
$ /full/path/to/current_working_folder
$ ~/[TAB] # zëvendësohet me...
$ /full/path/to/home/folder
$ $HOME/[TAB] # zëvendësohet me...
$ /full/path/to/home/folderDali i pastër
4. checkjobs
Ky parametr ndalon daljen nga seanca, nëse ka ende detyra që kryhen në sfond.
Në vend të daljes është një listë e detyrave të papërfunduara. Nëse ende dëshironi të dilni, shkruani përsëri exit.
$ shopt -s checkjobs
$ echo $$
68125 # <= ID e procesit për shell
$ sleep 999 &
$ exit
Ka detyra që po kryhen.
[1]+ Po kryhet sleep 999 &
$ echo $$
68125 # <= ID e procesit për shell të njëjtë
$ exit
Ka detyra që po kryhen.
[1]+ Po kryhet sleep 999 &
$ exit
$ echo $$
$ 59316 # <= këtë herë ID e procesit ndryshoiSuperfuqit e zëvendësimit
5. globstar
Kjo mundësi t'ju japë superfuqi për përputhshmëri! Nëse shkruani:
$ shopt -s globstar
$ ls **atëherë shell-i do të tregojë të gjitha katalogët dhe nënkatalogët në mënyrë rekursive.
Në kombinim me direxpand mund të shfletoni shpejt gjithçka që është poshtë në hierarki:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Tregon të gjitha 2033 mundësitë? (y ose n) 6. extglob
Kjo mundësi aktivizon funksione që shpesh lidhen me shprehjet e rregullta. Ndonjëherë është shumë e dobishme:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfileKëtu shabllonet vendosen në kllapa dhe ndahen me një vijë të vertikalisht. Ja operatorët e disponueshëm:
? = соответствует нулю или одному вхождению заданных шаблонов ! = показать всё, что не соответствует заданным шаблонам * = ноль или более вхождений + = одно или более вхождений @ = ровно одно вхождение
Mbrojtja nga aksidentet
7. histverify
Në fillim mund të duket pak frikësuese të përdorësh nisjen e shpejtë të komandeve nga historia me shkurtesa !! dhe !$.
Opcioni histverify lejon së pari të shihni se si bash interpreton komandën, para se të vërtetojë se ajo do të ekzekutohet:
$ shopt -s histverify
$ echo !$ # <= Me shtypjen e Enter, komanda nuk ekzekutohet
$ echo histverify # <= Ajo shfaqet fillimisht në ekran,
histverify # <= dhe pastaj ekzekutohet 8. Noclobber
Edhe një herë, për mbrojtjen nga aksidentet, veçanërisht nga mbishkrimi i një skedari që tashmë ekziston me operatorin e redirektimit (>). Kjo mund të bëhet katastrofike nëse nuk keni një kopje rezervë.
Opcioni set -C ndalon një mbishkrim të tillë. Nëse është e nevojshme, mund të shmangni mbrojtjen me operatorin >|:
$ touch afile
$ set -C
$ echo diçka > afile
-bash: afile: nuk mund të mbishkruaj një skedar ekzistues
$ echo diçka >| afile
$Burimi: habr.com
