Átta lítt þekktir Bash valkostir

Sumir Bash valkostir eru vel þekktir og oft notaðir. Til dæmis skrifa margir í upphafi handritsins

setja -o xtrace

fyrir villuleit,

setja -o errexit

að hætta fyrir mistök eða

setja -o villusett

til að hætta ef kölluð breytan er ekki stillt.

En það eru margir aðrir valkostir. Stundum er þeim lýst of ruglingslega í manas, svo ég hef safnað saman nokkrum af þeim gagnlegustu hér, með skýringum.

Athugið: Mac-tölvur gætu verið með eldri útgáfu af bash (3.x frekar en 4.x) þar sem ekki allir þessir valkostir eru í boði. Í þessu tilviki, sjá hér eða hér.

set eða shopt?

Það eru tvær leiðir til að stilla bash valkosti: frá handriti eða frá skipanalínunni. Þú getur notað innbyggðar skipanir set и shopt. Báðir breyta hegðun skelarinnar, gera mikið af því sama (með mismunandi rökum), en eru ólíkar í sínum uppruna... Færibreytur set eru erfðir eða fengnir að láni frá breytum annarra skelja, en færibreytur shopt búin til í bash.

Ef þú vilt sjá núverandi valkosti skaltu keyra:

$ set -o
$ shopt

Til að virkja valkostinn í set Löng eða stutt setningafræði er notuð:

$ set -o errunset
$ set -e

Áhrifin eru þau sömu.

Til að slökkva á valkostinum þarftu að setja plús í stað mínus:

$ set +e

Í langan tíma gat ég ekki munað þessa setningafræði vegna þess að rökfræðin virtist vera röng (mínusmerki gerir valmöguleikann kleift og plúsmerki gerir hann óvirkan).

В shopt (rökréttari) fánar eru notaðir til að virkja og slökkva á valkostum -s (sett) og -u (óstillt):

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

Skipt um möppur

Það eru nokkrir möguleikar sem hjálpa þér að vinna með möppur.

1.cdspell

Með þessari stillingu mun bash byrja að skilja innsláttarvillur og fara með þig í möppuna sem þú stafsettir nafnið á.

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

Ég hef notað þennan möguleika í mörg ár og mjög sjaldan (kannski einu sinni á ári) tekur hann mjög undarlega ákvörðun. En á öðrum dögum cdspell sparar tíma, bókstaflega á hverjum degi.

2. autocd

Ef þú ert ekki tilbúinn að samþykkja óhagkvæmni margra færslur cd, þá geturðu stillt þennan valmöguleika til að fara í X möppuna ef X skipunin er ekki til.

$ shopt -s autocd
$ abcdefg
$ cd ..

Ásamt sjálfvirkri útfyllingu gerir þetta þér kleift að hoppa fljótt á milli möppna:

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

Bara ekki nefna möppuna rm -rf * (já, við the vegur, þetta er hægt).

3.direxpand

Þetta er flottur valkostur sem stækkar umhverfisbreytur með því að ýta á Tab:

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

hrein framleiðsla

4. tékkstörf

Þessi valkostur hættir að skrá þig út úr lotunni ef enn eru störf í gangi í bakgrunni.

Í stað þess að hætta birtist listi yfir ólokið verkefni. Ef þú vilt samt hætta skaltu slá inn aftur 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 процесса  изменился

Afleysingarstórveldi

5.globstar

Þessi valkostur gefur þér afleysingastórveldi! Ef þú slærð inn:

$ shopt -s globstar
$ ls **

þá mun skelin sýna allar möppur og undirmöppur endurtekið.

Í samsetningu með direxpand Þú getur fljótt skoðað allt neðarlega í stigveldinu:

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

6.extglob

Þessi valkostur virkjar eiginleika sem eru oftar tengdir reglulegum tjáningum. Stundum er þetta mjög gagnlegt:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Hér eru mynstrin sett innan sviga og aðskilin með lóðréttri strik. Hér eru tiltækir rekstraraðilar:

? = passar við núll eða eitt tilvik af tilteknum mynstrum! = sýna allt sem passar ekki við uppgefið mynstur * = núll eða fleiri tilvik + = eitt eða fleiri tilvik @ = nákvæmlega eitt tilvik

Slysavarnir

7. histreyna

Það getur verið svolítið skelfilegt í fyrstu að nota skyndiræsingarskipanirnar úr sögu skammstafana !! и !$.

Valkostur histverify leyfir þér fyrst að sjá hvernig Bash túlkar skipunina áður en hún keyrir í raun:

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

8. Noclobber

Aftur, til að verjast slysum, þ.e. frá því að skrifa yfir skrá sem þegar er til hjá tilvísunarfyrirtækinu (>). Þetta getur verið hörmung ef þú ert ekki með öryggisafrit.

Valkostur set -С bannar slíka yfirskrift. Ef nauðsyn krefur geturðu farið framhjá vörninni með símafyrirtækinu >|:

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

Heimild: www.habr.com

Bæta við athugasemd