Nyolc kevéssé ismert Bash opció

Néhány Bash opció jól ismert és gyakran használt. Például sokan írnak a forgatókönyv elejére

set -o xtrace

hibakereséshez,

set -o emelt

tévedésből kilépni ill

set -o errunset

kilépéshez, ha a hívott változó nincs beállítva.

De sok más lehetőség is van. Néha túl zavaróan vannak leírva a manasban, ezért összegyűjtöttem a leghasznosabbakat, magyarázattal együtt.

Megjegyzés: A Mac-eken előfordulhat, hogy a bash régebbi verziója (3.x helyett 4.x), ahol ezek a lehetőségek nem állnak rendelkezésre. Ebben az esetben lásd itt vagy itt.

set vagy shopt?

A bash beállítások kétféleképpen állíthatók be: szkriptből vagy parancssorból. Használhat beépített parancsokat set и shopt. Mindkettő megváltoztatja a héj viselkedését, nagyjából ugyanazt csinálják (különböző érvekkel), de különböznek egymástól eredet... Lehetőségek set öröklődnek vagy kölcsönzöttek más shell paramétereiből, míg a paraméterek shopt bashban jött létre.

Ha meg szeretné tekinteni az aktuális beállításokat, futtassa:

$ set -o
$ shopt

Az opció aktiválásához in set Hosszú vagy rövid szintaxis használatos:

$ set -o errunset
$ set -e

A hatás ugyanaz.

Az opció letiltásához mínusz helyett pluszt kell megadnia:

$ set +e

Sokáig nem emlékeztem erre a szintaxisra, mert rossznak tűnt a logika (a mínusz jel engedélyezi, a pluszjel pedig letiltja).

В shopt (logikusabb) zászlókat használnak az opciók engedélyezésére és letiltására -s (készlet) és -u (beállítatlan):

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

Könyvtárak módosítása

Számos lehetőség segíti a könyvtárakkal való munkát.

1.cdspell

Ezzel a beállítással a bash elkezdi megérteni az elírásokat, és abba a mappába viszi, amelynek a nevét rosszul írta.

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

Sok éve használom ezt a lehetőséget, és nagyon ritkán (talán évente egyszer) hoz nagyon furcsa döntést. De más napokon cdspell időt takarít meg, szó szerint minden nap.

2. autocd

Ha nem vagy hajlandó elfogadni a többszörös bejegyzés hatástalanságát cd, akkor beállíthatja, hogy ez a beállítás az X mappába kerüljön, ha az X parancs nem létezik.

$ shopt -s autocd
$ abcdefg
$ cd ..

Az automatikus kiegészítéssel kombinálva ez lehetővé teszi, hogy gyorsan ugorjon a mappák között:

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

Csak ne adjon nevet a mappának rm -rf * (igen, egyébként ez lehetséges).

3.direxpand

Ez egy nagyszerű lehetőség, amely kibővíti a környezeti változókat a Tab megnyomásával:

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

tiszta kimenet

4. checkjobs

Ez a beállítás leállítja a munkamenetből való kijelentkezést, ha a háttérben még futnak feladatok.

A kilépés helyett a befejezetlen feladatok listája jelenik meg. Ha továbbra is ki szeretne lépni, lépjen be újra 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 процесса  изменился

Helyettesítő szuperhatalmak

5.globstar

Ez az opció helyettesítő szuperképességeket biztosít! Ha beírod:

$ shopt -s globstar
$ ls **

akkor a shell minden könyvtárat és alkönyvtárat rekurzívan megjelenít.

Kombinálva direxpand Gyorsan megtekinthet mindent, ami alacsonyabb a hierarchiában:

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

6.extglob

Ez a beállítás engedélyezi a reguláris kifejezésekhez gyakrabban társított funkciókat. Néha ez nagyon hasznos:

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

Itt a minták zárójelben vannak, és függőleges sáv választja el őket. Íme az elérhető operátorok:

? = a megadott minták nullára vagy egy előfordulására illeszkedik! = mutat mindent, ami nem egyezik a megadott mintákkal * = nulla vagy több előfordulás + = egy vagy több előfordulás @ = pontosan egy előfordulás

Balesetvédelem

7. histverify

Először kissé ijesztő lehet a rövidítések történetéből származó gyorsindítási parancsok használata !! и !$.

választási lehetőség histverify először megnézheti, hogyan értelmezi a Bash a parancsot, mielőtt ténylegesen lefutna:

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

8. Noclobber

Ismét a balesetek elleni védelem érdekében, nevezetesen az átirányítási operátorral már létező fájl felülírásától (>). Ez katasztrófa lehet, ha nincs tartalék.

választási lehetőség set -С tiltja az ilyen felülírást. Szükség esetén a védelmet a kezelő segítségével megkerülheti >|:

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

Forrás: will.com

Hozzászólás