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á
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 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