Tetë opsione Bash pak të njohura

Disa opsione të Bash janë të njohura dhe përdoren shpesh. Për shembull, shumë njerëz shkruajnë në fillim të skenarit

vendosur -o xtrace

për korrigjimin e gabimeve,

vendosur -o errexit

për të dalë gabimisht ose

vendosur -o errunset

për të dalë nëse ndryshorja e thirrur nuk është vendosur.

Por ka shumë opsione të tjera. Ndonjëherë ato përshkruhen në mënyrë shumë konfuze në mana, kështu që unë kam mbledhur disa nga më të dobishmet këtu, me shpjegime.

Shënim: Mac mund të kenë një version më të vjetër të bash (3.x dhe jo 4.x) ku jo të gjitha këto opsione janë të disponueshme. Në këtë rast, shih këtu ose këtu.

set ose shopt?

Ka dy mënyra për të vendosur opsionet bash: nga një skript ose nga linja e komandës. Ju mund të përdorni komanda të integruara set и shopt. Të dy ndryshojnë sjelljen e guaskës, bëjnë pothuajse të njëjtën gjë (me argumente të ndryshme), por ndryshojnë në të origjinën. Opsione set janë të trashëguara ose të huazuara nga parametrat e predhave të tjera, ndërsa parametrat shopt krijuar në bash.

Nëse dëshironi të shihni opsionet aktuale, ekzekutoni:

$ set -o
$ shopt

Për të aktivizuar opsionin në set Përdoret sintaksa e gjatë ose e shkurtër:

$ set -o errunset
$ set -e

Efekti është i njëjtë.

Për të çaktivizuar opsionin, duhet të vendosni një plus në vend të një minus:

$ set +e

Për një kohë të gjatë nuk e mbaja mend këtë sintaksë sepse logjika më dukej e gabuar (një shenjë minus mundëson opsionin dhe një shenjë plus e çaktivizon atë).

В shopt Flamujt (më logjikë) përdoren për të aktivizuar dhe çaktivizuar opsionet -s (të vendosur) dhe -u (i pacaktuar):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Ndryshimi i drejtorive

Ka disa opsione që ju ndihmojnë të punoni me drejtoritë.

1.cdspell

Me këtë cilësim, bash do të fillojë të kuptojë gabimet e shtypit dhe do t'ju çojë te dosja, emrin e së cilës e keni shkruar gabim.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Unë e përdor këtë opsion për shumë vite dhe shumë rrallë (ndoshta një herë në vit) merr një vendim shumë të çuditshëm. Por në ditët e tjera cdspell kursen kohë, fjalë për fjalë çdo ditë.

2. autocd

Nëse nuk jeni të gatshëm të pranoni joefikasitetin e hyrjeve të shumta cd, atëherë mund ta vendosni këtë opsion që të kalojë në dosjen X nëse komanda X nuk ekziston.

$ shopt -s autocd
$ abcdefg
$ cd ..

E kombinuar me plotësimin automatik, kjo ju lejon të kaloni shpejt midis dosjeve:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Thjesht mos e emërto dosjen rm -rf * (po, nga rruga, kjo është e mundur).

3.dizgjerohem

Ky është një opsion i lezetshëm që zgjeron variablat e mjedisit duke shtypur Tab:

$ shopt -s direxpand
$ ./[TAB]     # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  заменяется на...
$ /full/path/to/home/folder

Prodhimi i pastër

4. punë kontrolli

Ky opsion ndalon daljen nga sesioni nëse ka ende punë që funksionojnë në sfond.

Në vend që të dilni, shfaqet një listë e detyrave të papërfunduara. Nëse ende dëshironi të dilni, atëherë hyni përsëri exit.

$ shopt -s checkjobs
$ echo $$
68125             # <= ID процесса для оболочки
$ sleep 999 &
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ echo $$
68125             # <= ID процесса для оболочки тот же
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ exit
$ echo $$
$ 59316           # <= на этот раз ID процесса  изменился

Superfuqitë zëvendësuese

5.globstar

Ky opsion ju jep superfuqi zëvendësuese! Nëse futni:

$ shopt -s globstar
$ ls **

atëherë shell do t'i shfaqë të gjitha drejtoritë dhe nëndirektoritë në mënyrë rekursive.

Në s direxpand Ju mund të shikoni shpejt gjithçka më poshtë në hierarki:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6.extglob

Ky opsion mundëson veçori që lidhen më shpesh me shprehje të 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*)
cfile

Këtu modelet vendosen në kllapa dhe ndahen nga një shirit vertikal. Këtu janë operatorët në dispozicion:

? = përputhet me zero ose një dukuri të modeleve të dhëna
! = trego gjithçka që nuk përputhet me modelet e dhëna
* = zero ose më shumë dukuri
+ = një ose më shumë dukuri
@ = saktësisht një dukuri

Mbrojtja nga aksidentet

7. histverify

Mund të jetë pak e frikshme në fillim të përdorësh komandat e nisjes së shpejtë nga historia e shkurtesave !! и !$.

Opsioni histverify ju lejon së pari të shihni se si Bash e interpreton komandën përpara se të ekzekutohet në të vërtetë:

$ shopt -s histverify
$ echo !$          # <= По нажатию Enter команда не запускается
$ echo histverify  # <= Она сначала демонстрируется на экране,
histverify         # <= а потом запускается 

8. Noklobber

Përsëri, për t'u mbrojtur nga aksidentet, domethënë nga mbishkrimi i një skedari që ekziston tashmë me operatorin e ridrejtimit (>). Kjo mund të jetë një fatkeqësi nëse nuk keni një kopje rezervë.

Opsioni set -С ndalon një mbishkrim të tillë. Nëse është e nevojshme, mund të anashkaloni mbrojtjen duke përdorur operatorin >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

Burimi: www.habr.com

Shto një koment