Сегіз аз танымал Bash опциялары

Кейбір Bash опциялары жақсы белгілі және жиі пайдаланылады. Мысалы, көптеген адамдар сценарийдің басында жазады

-o xtrace орнатыңыз

жөндеу үшін,

орнату -o errexit

қателесіп шығу немесе

set -o қатесі

шақырылатын айнымалы орнатылмаған жағдайда шығу үшін.

Бірақ басқа да көптеген нұсқалар бар. Кейде олар манада тым түсініксіз сипатталады, сондықтан мен ең пайдалыларының кейбірін түсіндірмені осында жинадым.

Ескертпе: Mac компьютерлерінде бұл опциялардың барлығы қол жетімді емес bash нұсқасы (3.x орнына 4.x) болуы мүмкін. Бұл жағдайда қараңыз осында немесе осында.

set немесе shopt?

Bash опцияларын орнатудың екі жолы бар: сценарийден немесе пәрмен жолынан. Кірістірілген пәрмендерді пайдалануға болады set и shopt. Екеуі де қабықтың әрекетін өзгертеді, бірдей нәрсені жасайды (әр түрлі дәлелдермен), бірақ олардың айырмашылығы шығу тегі. Опциялар set басқа қабықшалардың параметрлерінен мұраланған немесе алынған, ал параметрлер shopt bash-те жасалған.

Ағымдағы опцияларды көргіңіз келсе, іске қосыңыз:

$ set -o
$ shopt

Опцияны іске қосу үшін set Ұзын немесе қысқа синтаксис қолданылады:

$ set -o errunset
$ set -e

Әсері бірдей.

Опцияны өшіру үшін минус орнына плюс қою керек:

$ set +e

Ұзақ уақыт бойы бұл синтаксисті есіме түсіре алмадым, себебі логика дұрыс емес болып көрінді (минус таңбасы опцияны қосады, ал қосу белгісі оны өшіреді).

В shopt (қисындырақ) жалаушалар опцияларды қосу және өшіру үшін пайдаланылады -s (жиынтық) және -u (орнатылмаған):

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

Каталогтарды өзгерту

Каталогтармен жұмыс істеуге көмектесетін бірнеше опциялар бар.

1.cdspell

Бұл параметрмен bash қателерді түсіне бастайды және сізді аты қате жазған қалтаға апарады.

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

Мен бұл опцияны көптеген жылдар бойы қолданып келемін және өте сирек (жылына бір рет болуы мүмкін) өте оғаш шешім қабылдайды. Бірақ басқа күндері cdspell уақытты үнемдейді, сөзбе күн сайын.

2. autocd

Бірнеше жазбаның тиімсіздігін қабылдағыңыз келмесе cd, содан кейін X пәрмені жоқ болса, X қалтасына жылжыту үшін осы опцияны орнатуға болады.

$ shopt -s autocd
$ abcdefg
$ cd ..

Автотолтырумен біріктірілген бұл қалталар арасында жылдам өтуге мүмкіндік береді:

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

Тек қалтаны атамаңыз rm -rf * (иә, айтпақшы, бұл мүмкін).

3.бағыт кеңейту

Бұл Tab пернесін басу арқылы орта айнымалыларын кеңейтетін тамаша опция:

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

Таза шығу

4. тексеру жұмыстары

Бұл опция фондық режимде әлі жұмыс істеп тұрған тапсырмалар болса, сеанстан шығуды тоқтатады.

Шығудың орнына аяқталмаған тапсырмалар тізімі көрсетіледі. Егер әлі де шыққыңыз келсе, қайта енгізіңіз 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 процесса  изменился

Ауыстырушы күштер

5.globstar

Бұл опция сізге ауыстырудың керемет күштерін береді! Егер сіз енгізсеңіз:

$ shopt -s globstar
$ ls **

содан кейін қабық барлық каталогтар мен ішкі каталогтарды рекурсивті түрде көрсетеді.

Сонымен бірге direxpand Иерархияның төменгі бөлігінде барлығын жылдам көруге болады:

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

6.extglob

Бұл опция әдеттегі өрнектермен жиі байланыстырылатын мүмкіндіктерді қосады. Кейде бұл өте пайдалы:

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

Мұнда өрнектер жақшаға алынып, тік жолақпен бөлінген. Мұнда қол жетімді операторлар:

? = берілген үлгілердің нөлге немесе бір кездесуіне сәйкес келеді ! = берілген үлгілерге сәйкес келмейтіндердің барлығын көрсетіңіз * = нөл немесе бірнеше көрініс + = бір немесе бірнеше көрініс @ = дәл бір оқиға

Апаттан қорғау

7. Histverify

Қысқартулар тарихынан жылдам іске қосу пәрмендерін пайдалану бастапқыда аздап қорқынышты болуы мүмкін !! и !$.

Опция histverify алдымен Bash пәрменді іске қоспас бұрын қалай түсіндіретінін көруге мүмкіндік береді:

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

8. Ноклоббер

Қайта бағыттау операторымен бұрыннан бар файлды қайта жазудан, жазатайым оқиғалардан қорғау үшін (>). Сақтық көшірме болмаса, бұл апат болуы мүмкін.

Опция set -С мұндай қайта жазуға тыйым салады. Қажет болса, операторды пайдаланып қорғанысты айналып өтуге болады >|:

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

Ақпарат көзі: www.habr.com

пікір қалдыру