Давом додани силсилаи ёддоштҳо дар бораи
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:25 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 то чӣ андоза амиқ ҷойгиред. Агар шумо терминали нав эҷод кунед, он ба 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
Манбаъ: will.com