Kahdeksan vähän tunnettua bash-vaihtoehtoa

Jotkut Bash-vaihtoehdot ovat hyvin tunnettuja ja usein käytettyjä. Esimerkiksi monet ihmiset kirjoittavat käsikirjoituksen alkuun

aseta -o xtrace

virheenkorjausta varten,

aseta -o errexit

poistuaksesi vahingossa tai

set -o errunset

poistuaksesi, jos kutsuttua muuttujaa ei ole asetettu.

Mutta on monia muitakin vaihtoehtoja. Joskus ne kuvataan manasissa liian hämmentävästi, joten olen koonnut tähän joitain hyödyllisimpiä selityksineen.

Huomautus: Maceissa voi olla vanhempi bash-versio (3.x 4.x:n sijaan), jossa kaikki nämä vaihtoehdot eivät ole käytettävissä. Tässä tapauksessa katso täällä tai täällä.

set tai shopt?

Bash-asetukset voidaan asettaa kahdella tavalla: komentosarjasta tai komentoriviltä. Voit käyttää sisäänrakennettuja komentoja set и shopt. Molemmat muuttavat kuoren käyttäytymistä, tekevät paljolti saman asian (eri argumenteilla), mutta eroavat toisistaan alkuperä. Vaihtoehdot set ovat peritty tai lainattu muiden kuorien parametreista, kun taas parametrit shopt luotu bashissa.

Jos haluat nähdä nykyiset vaihtoehdot, suorita:

$ set -o
$ shopt

Aktivoidaksesi vaihtoehdon sisään set Pitkää tai lyhyttä syntaksia käytetään:

$ set -o errunset
$ set -e

Vaikutus on sama.

Voit poistaa vaihtoehdon käytöstä lisäämällä plusmerkin miinuksen sijaan:

$ set +e

Pitkään aikaan en muistanut tätä syntaksia, koska logiikka vaikutti väärältä (miinusmerkki ottaa vaihtoehdon käyttöön ja plusmerkki poistaa sen käytöstä).

В shopt (loogisempia) lippuja käytetään ottamaan käyttöön ja poistamaan asetukset -s (sarja) ja -u (ei asetettu):

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

Hakemistojen vaihtaminen

On olemassa useita vaihtoehtoja, jotka auttavat sinua työskentelemään hakemistojen kanssa.

1.cdspell

Tällä asetuksella bash alkaa ymmärtää kirjoitusvirheet ja vie sinut kansioon, jonka nimen kirjoitit väärin.

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

Olen käyttänyt tätä vaihtoehtoa monta vuotta ja hyvin harvoin (ehkä kerran vuodessa) se tekee hyvin outoa päätöstä. Mutta muina päivinä cdspell säästää aikaa, kirjaimellisesti joka päivä.

2. autocd

Jos et ole valmis hyväksymään useiden merkintöjen tehottomuutta cd, voit asettaa tämän vaihtoehdon siirtymään X-kansioon, jos X-komentoa ei ole olemassa.

$ shopt -s autocd
$ abcdefg
$ cd ..

Yhdessä automaattisen täydennyksen kanssa voit siirtyä nopeasti kansioiden välillä:

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

Älä vain nimeä kansiota rm -rf * (kyllä, tämä on muuten mahdollista).

3.suuntaa laajentaa

Tämä on hieno vaihtoehto, joka laajentaa ympäristömuuttujia painamalla sarkainta:

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

puhdas lähtö

4. Tarkista työt

Tämä vaihtoehto lopettaa istunnosta uloskirjautumisen, jos taustalla on vielä töitä käynnissä.

Poistumisen sijaan näytetään luettelo keskeneräisistä tehtävistä. Jos haluat silti poistua, syötä uudelleen 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 процесса  изменился

Korvaussupervoimat

5.globstar

Tämä vaihtoehto antaa sinulle korvaavia supervoimia! Jos syötät:

$ shopt -s globstar
$ ls **

sitten komentotulkki näyttää kaikki hakemistot ja alihakemistot rekursiivisesti.

Yhdessä direxpand Voit nopeasti tarkastella kaikkea hierarkian alempana:

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

6.extglob

Tämä vaihtoehto ottaa käyttöön ominaisuuksia, jotka liittyvät yleisemmin säännöllisiin lausekkeisiin. Joskus tämä on erittäin hyödyllistä:

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

Tässä kuviot on sijoitettu sulkeisiin ja erotettu toisistaan ​​pystypalkilla. Tässä ovat käytettävissä olevat operaattorit:

? = vastaa nollaa tai yhtä esiintymää annetuista kuvioista! = näytä kaikki mikä ei vastaa annettuja malleja * = nolla tai useampi esiintyminen + = yksi tai useampi esiintyminen @ = täsmälleen yksi esiintyminen

Onnettomuussuoja

7. histverify

Aluksi voi olla hieman pelottavaa käyttää pikakäynnistyskomentoja lyhenteiden historiasta !! и !$.

Vaihtoehto histverify voit ensin nähdä kuinka Bash tulkitsee komennon ennen kuin se todella suoritetaan:

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

8. Noclobber

Jälleen suojautuaksesi onnettomuuksilta, nimittäin jo olemassa olevan tiedoston korvaamiselta uudelleenohjausoperaattorilla (>). Tämä voi olla katastrofi, jos sinulla ei ole varmuuskopiota.

Vaihtoehto set -С kieltää tällaisen päällekirjoituksen. Tarvittaessa voit ohittaa suojauksen operaattorin avulla >|:

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

Lähde: will.com

Lisää kommentti