Жеті күтпеген Bash айнымалысы

туралы жазбалар қатарын жалғастыру азырақ белгілі функциялар bash, мен сізге сіз білмейтін жеті айнымалыны көрсетемін.

1) PROMPT_COMMAND

Сіз әртүрлі пайдалы ақпаратты көрсету үшін шақыруды қалай өңдеу керектігін бұрыннан білетін шығарсыз, бірақ шақыру көрсетілген сайын қабық пәрменін іске қосуға болатынын бәрі біле бермейді.

Шындығында, көптеген күрделі шақыру манипуляторлары бұл айнымалыны шақыруда көрсетілетін ақпаратты жинау пәрмендерін орындау үшін пайдаланады.

Мұны жаңа қабықшада іске қосып көріңіз және сеанста не болатынын көріңіз:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

Егер сіз жүгірсеңіз history консольде сіз тіркелгіңізде бұрын орындалған пәрмендер тізімін аласыз.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Бұл айнымалы мән орнатылғаннан кейін, жаңа жазбалар уақытты пәрменмен бірге жазады, осылайша шығыс келесідей болады:

1871 Мен мұны мына жерде іске қостым: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Мен мұны іске қостым: 01/05/19 13:38:19 curl bbc.co.uk 1873 Мен мұны іске қостым : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Мен мұны іске қостым: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Мен мұны мына жерде іске қостым: 01 /05:19:13 sudo su -

Пішімдеу келесі таңбаларға сәйкес келеді man date.

3) CDPATH

Пәрмен жолында уақытты үнемдеу үшін осы айнымалыны командаларды шығарған кезде каталогтарды оңай өзгерту үшін пайдалануға болады.

Сонымен қатар PATH, айнымалы CDPATH жолдардың қос нүктемен бөлінген тізімі болып табылады. Пәрменді іске қосқан кезде cd салыстырмалы жолымен (яғни алдыңғы қиғаш сызық жоқ), әдепкі бойынша қабық аттарды сәйкестендіру үшін жергілікті қалтада көрінеді. CDPATH барғыңыз келетін каталогты сіз берген жолдардан іздейді.

Егер сіз орнатсаңыз CDPATH Осылайша:

$ CDPATH=/:/lib

содан кейін енгізіңіз:

$ cd /home
$ cd tmp

сонда сіз әрқашан кіресіз /tmp қай жерде болсаңыз да.

Дегенмен, сақ болыңыз, себебі тізімде жергіліктісін көрсетпесеңіз (.) қалтасын таңдасаңыз, басқа қалта жасай алмайсыз tmp және оған әдеттегідей өтіңіз:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

Ой!

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

Мені бастапқы нүктемен белгілейді:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

Теру туралы ойланып көрдіңіз бе? exit ол сізді ағымдағы bash қабығынан басқа «ата-аналық» қабықшаға апарады ма, әлде консоль терезесін толығымен жабады ма?

Бұл айнымалы сіздің bash қабығында қаншалықты терең кірістірілгеніңізді бақылайды. Жаңа терминал жасасаңыз, ол 1-ге орнатылады:

$ echo $SHLVL
1

Содан кейін, егер сіз басқа қабық процесін бастасаңыз, олардың саны артады:

$ bash
$ echo $SHLVL
2

Бұл шығу-шықпау немесе кірістірілген жеріңізді қадағалап отыруды білмеген сценарийлерде өте пайдалы болуы мүмкін.

5) LINENO

Айнымалы мән ағымдағы күйді талдау және жөндеу үшін де пайдалы LINENO, ол сеанста осы уақытқа дейін орындалған командалар санын хабарлайды:

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

Бұл сценарийлерді жөндеу кезінде жиі пайдаланылады. сияқты жолдарды кірістіру echo DEBUG:$LINENO, сіз сценарийде қай жерде екеніңізді (немесе жоқ) жылдам анықтай аласыз.

6) REPLY

Егер мен сияқты, сіз әдетте келесідей код жазасыз:

$ read input
echo do something with $input

Айнымалы мәнді жасау туралы мүлде уайымдаудың қажеті жоқ екені таң қалдыруы мүмкін:

$ read
echo do something with $REPLY

Бұл бірдей нәрсені жасайды.

7) TMOUT

Қауіпсіздік мақсатында өндірістік серверлерде тым ұзақ қалмау немесе қате терминалда қауіпті нәрсені кездейсоқ іске қосуды болдырмау үшін бұл айнымалы мән қорғаныс ретінде әрекет етеді.

Белгіленген секунд ішінде ештеңе енгізілмесе, қабық шығады.

Яғни, бұл балама sleep 1 && exit:

$ TMOUT=1

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

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