Сегиз аз белгилүү Баш параметрлери

Кээ бир Bash параметрлери жакшы белгилүү жана көп колдонулат. Мисалы, сценарийдин башында көп адамдар жазат

-o xtrace орнотуу

мүчүлүштүктөрдү оңдоо үчүн,

коюлган -o көтөрүлгөн

жаңылыштык менен чыгуу же

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.дирexpand

Бул Табакты басуу менен чөйрө өзгөрмөлөрүн кеңейтүүчү сонун вариант:

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

Source: www.habr.com

Комментарий кошуу