Otte lidet kendte Bash-muligheder

Nogle Bash-muligheder er velkendte og ofte brugt. For eksempel skriver mange mennesker i begyndelsen af ​​manuskriptet

sæt -o xtrace

til fejlretning,

sæt -o errexit

at forlade ved en fejl eller

sæt -o errunset

for at afslutte, hvis den kaldte variabel ikke er indstillet.

Men der er mange andre muligheder. Nogle gange er de beskrevet for forvirrende i manas, så jeg har samlet nogle af de mest nyttige her, med forklaring.

Bemærk: Mac'er kan have en ældre version af bash (3.x i stedet for 4.x), hvor ikke alle disse muligheder er tilgængelige. I dette tilfælde, se her eller her.

set eller shopt?

Der er to måder at indstille bash-indstillinger på: fra et script eller fra kommandolinjen. Du kan bruge indbyggede kommandoer set и shopt. Begge ændrer skallens adfærd, gør stort set det samme (med forskellige argumenter), men adskiller sig i deres oprindelse. Muligheder set er arvet eller lånt fra parametre for andre skaller, mens parametre shopt skabt i bash.

Hvis du vil se de aktuelle muligheder, skal du køre:

$ set -o
$ shopt

For at aktivere muligheden i set Lang eller kort syntaks bruges:

$ set -o errunset
$ set -e

Effekten er den samme.

For at deaktivere muligheden skal du sætte et plus i stedet for et minus:

$ set +e

I lang tid kunne jeg ikke huske denne syntaks, fordi logikken virkede forkert (et minustegn aktiverer muligheden, og et plustegn deaktiverer det).

В shopt (mere logiske) flag bruges til at aktivere og deaktivere muligheder -s (sæt) og -u (frakoblet):

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

Ændring af mapper

Der er flere muligheder, der hjælper dig med at arbejde med mapper.

1.cdspell

Med denne indstilling begynder bash at forstå stavefejl og fører dig til den mappe, hvis navn du har stavet forkert.

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

Jeg har brugt denne mulighed i mange år og meget sjældent (måske en gang om året) tager den en meget mærkelig beslutning. Men på andre dage cdspell sparer tid, bogstaveligt talt hver dag.

2. autocd

Hvis du ikke er villig til at acceptere ineffektiviteten af ​​flere poster cd, så kan du indstille denne mulighed til at flytte til X-mappen, hvis X-kommandoen ikke eksisterer.

$ shopt -s autocd
$ abcdefg
$ cd ..

Kombineret med autofuldførelse giver dette dig mulighed for hurtigt at hoppe mellem mapper:

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

Bare lad være med at navngive mappen rm -rf * (ja, det er i øvrigt muligt).

3.direxpand

Dette er en cool mulighed, der udvider miljøvariabler ved at trykke på Tab:

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

rent output

4. checkjobs

Denne mulighed stopper med at logge ud af sessionen, hvis der stadig kører job i baggrunden.

I stedet for at afslutte, vises en liste over ufærdige opgaver. Hvis du stadig ønsker at afslutte, så indtast igen 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 процесса  изменился

Substitutionssupermagter

5.globstar

Denne mulighed giver dig substitutionssuperkræfter! Hvis du indtaster:

$ shopt -s globstar
$ ls **

så vil skallen vise alle mapper og undermapper rekursivt.

I kombination med direxpand Du kan hurtigt se alt lavere i hierarkiet:

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

6.extglob

Denne indstilling aktiverer funktioner, der er mere almindeligt forbundet med regulære udtryk. Nogle gange er dette meget nyttigt:

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

Her er mønstrene sat i parentes og adskilt af en lodret streg. Her er de tilgængelige operatører:

? = matcher nul eller én forekomst af de givne mønstre
! = vis alt, der ikke stemmer overens med de givne mønstre
* = nul eller flere forekomster
+ = en eller flere forekomster
@ = nøjagtig én forekomst

Ulykkesbeskyttelse

7. histverificere

Det kan være lidt skræmmende i starten at bruge hurtigstartkommandoer fra forkortelsernes historie !! и !$.

valgmulighed histverify lader dig først se, hvordan Bash fortolker kommandoen, før den rent faktisk kører:

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

8. Noclobber

Igen, for at beskytte mod ulykker, nemlig mod at overskrive en fil, der allerede eksisterer hos omdirigeringsoperatøren (>). Dette kan være en katastrofe, hvis du ikke har en backup.

valgmulighed set -С forbyder sådan overskrivning. Hvis det er nødvendigt, kan du omgå beskyttelsen ved hjælp af operatøren >|:

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

Kilde: www.habr.com

Tilføj en kommentar