Disa opsione të Bash-it janë mjaft të njohura dhe shpesh përdoren. Për shembull, shumë në fillim të skriptit shkruajnë
set -o xtrace
për debuggim,
set -o errexit
për të dalë në rast gabimi ose
set -o errunset
për të dalë, nëse variabla e thirrur nuk është e vendosur.
Por ka shumë opsione të tjera. Ndonjëherë ato përshkruhen mjaft ngatërrues në man pages, 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 të gjitha këto opsione janë të disponueshme. Në këtë rast shihni ose .
set ose shopt?
Ka dy mënyra për të vendosur parametrat e bash-it: nga skripti ose nga linja e komandës. Mund të përdoren komandat e ndërtuara set dhe shopt. Të dyja ndryshojnë sjelljen e shell-it, bëjnë në masë të madhe të njëjtën gjë (me argumente të ndryshme), dhe dallohen nga . Parametrat set trashëgohen ose huazohen nga parametrat e shell-ëve të tjerë, ndërsa parametrat shopt janë krijuar në bash.
Nëse dëshironi të shihni opsionet aktuale, ekzekutoni:
$ set -o
$ shopt Për aktivizimin e një opsioni në set në përdoret sintaksa e gjatë ose e shkurtër:
$ set -o errunset
$ set -eEfekti është i njëjtë.
Për të çaktivizuar opsionin, duhet të vendosni plus në vend të minusit:
$ set +ePër një kohë të gjatë nuk mund të mbaja mend këtë sintaksë, pasi logjika duket e gabuar (minus aktivizon opsionin, ndërsa plusi e çaktivizon).
Në shopt për aktivizimin dhe çaktivizimin e opsioneve përdoren (më logjikisht) flamuj -s (set) dhe -u (unset):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= offNdryshimi i katalogëve
Ka disa opsione që ndihmojnë në punën me katalogët.
1. cdspell
Me këtë cilësim bash do të fillojë të kuptojë gabimet dhe do t'ju çojë në folderin, emri i të cilit e keni shkruar gabim.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd .. E kam përdorur këtë opsion për shumë vite, dhe shumë rrallë (ndoshta një herë në vit) ai merr një vendim shumë të çuditshëm. Por gjatë ditëve të tjera cdspell kursen kohë, literal çdo ditë.
2. autocd
Nëse nuk jeni gati të toleroni efikasitetin e shumfish të hyrjes cd, mund të vendosni këtë opsion për të lëvizur në folderin X, nëse komanda X nuk ekziston.
$ shopt -s autocd
$ abcdefg
$ cd ..Në kombinim me autocomplete, kjo lejon të skakoni shpejt nëpër katalogë:
$ .\/abc[TAB][RETURN]
cd -- .\/abcdefg Vetëm mos e quani folderin rm -rf * (po, përndryshe, është e mundur).
3. direxpand
Kjo është një opsion super që zgjeron variablat e mjedisit me një prekje të 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\/folderDalja e pastër
4. checkjobs
Këto parametra ndalojnë daljen nga seanca nëse ka punë që po ekzekutohen në sfond.
Në vend të daljes, do të shfaqet një listë e punëve të papërfunduara. Nëse dëshiron të dalësh për një herë të dytë, shkruaj exit.
$ shopt -s checkjobs
$ echo $$
68125 # <= ID procesi për shell-in
$ sleep 999 &
$ exit
Ka punë që po ekzekutohen.
[1]+ Duke u Ekzekutuar sleep 999 &
$ echo $$
68125 # <= ID procesi për shell-in i njëjtë
$ exit
Ka punë që po ekzekutohen.
[1]+ Duke u Ekzekutuar sleep 999 &
$ exit
$ echo $$
$ 59316 # <= këtë herë ID procesi ka ndryshuarSuperfuqitë e zëvendësimit
5. globstar
Kjo opsion jep superfuqi për zëvendësimin! Nëse shkruan:
$ shopt -s globstar
$ ls **atëherë shell-i do të tregojë të gjitha dosjet dhe nën-dosjet në mënyrë rekursive.
Në kombinim me direxpand mund të shfletoni shpejt gjithçka që ndodhet më poshtë në hierarki:
$ shopt -s direxpand
$ ls **[TAB][TAB]
A e shfaqim të gjitha 2033 mundësi? (po ose jo) 6. extglob
Ky opsion aktivizon funksione që shpesh lidhen me shprehjet e rregullta. Ndonjëherë kjo ë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, skemat vendosen në dhe janë të ndara me shenjë vertikale.
? = соответствует нулю или одному вхождению заданных шаблонов ! = показать всё, что не соответствует заданным шаблонам * = ноль или более вхождений + = одно или более вхождений @ = ровно одно вхождение
Mbrojtja nga fatkeqësitë
7. histverify
Në fillim mund të duket pak e frikshme të përdorësh shpejtësinë e komandave nga historia me skuterin !! dhe !$.
Opcioni histverify lejon të shikosh fillimisht se si Bash interpreton komandën, para se të ekzekutohet në të vërtetë:
$ shopt -s histverify
$ echo !$ # <= Duke shtypur Enter, komanda nuk ekzekutohet
$ echo histverify # <= Ajo shfaqet fillimisht në ekran,
histverify # <= dhe pastaj ekzekutohet 8. Noclobber
Përsëri, për të mbrojtur nga fatkeqësitë, sidomos nga zëvendësimi i një dosjeje që tashmë ekziston me operatorin e redirektimit (>). Kjo mund të bëhet katastrofike, nëse nuk ke një kopje rezervë.
Opcioni set -C ndalon një zëvendësim të tillë. Në rast nevoje, mbrojtjen mund të anashkalosh me operatorin >|:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: nuk mund të mbivendosë dosjen ekzistuese
$ echo something >| afile
$Burimi: habr.com
