Շարունակելով գրառումների շարքը
1) PROMPT_COMMAND
Հնարավոր է, որ դուք արդեն գիտեք, թե ինչպես պետք է շահարկել հուշումը տարբեր օգտակար տեղեկություններ ցուցադրելու համար, բայց ոչ բոլորը գիտեն, որ դուք կարող եք գործարկել shell հրամանը ամեն անգամ, երբ հուշումը ցուցադրվում է:
Իրականում, շատ բարդ հուշումների մանիպուլյատորներ օգտագործում են այս փոփոխականը՝ հրամաններ կատարելու համար, որպեսզի հավաքեն տեղեկատվություն, որը ցուցադրվում է հուշում:
Փորձեք սա գործարկել նոր պատյանով և տեսեք, թե ինչ է տեղի ունենում նիստի հետ.
$ 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:39 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 shell-ից դեպի մեկ այլ «ծնող» պատյան, թե՞ այն պարզապես ամբողջությամբ կփակի վահանակի պատուհանը:
Այս փոփոխականը հետևում է, թե որքան խորն եք բույն դրված բաշի պատյանում: Եթե ստեղծեք նոր տերմինալ, այն սահմանվում է 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
Source: www.habr.com