Trochgean fan de rige oantekeningen oer
1) PROMPT_COMMAND
Jo kinne al witte hoe't jo de prompt manipulearje om ferskate nuttige ynformaasje te sjen, mar net elkenien wit dat jo elke kear in shell-kommando kinne útfiere as de prompt wurdt werjûn.
Yn feite brûke in protte komplekse promptmanipulators dizze fariabele om kommando's út te fieren om ynformaasje te sammeljen dy't werjûn wurdt yn 'e prompt.
Besykje dit yn in nije shell út te fieren en sjoch wat der bart mei de sesje:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
As jo rinne history
yn 'e konsole krije jo in list mei kommando's dy't earder útfierd binne ûnder jo akkount.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Sadree't dizze fariabele is ynsteld, registrearje nije yngongen de tiid tegearre mei it kommando, sadat de útfier der sa útsjen sil:
1871 Ik rûn dit op: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Ik rûn dit op: 01/05/19 13:38:19 curl bbc.co.uk 1873 Ik rûn dit op : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Ik rûn dit op: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Ik rûn dit op: 01 /05/19 13:39:25 sudo su -
Opmaak komt oerien mei tekens fan man date
.
3) CDPATH
Om tiid op 'e kommandorigel te besparjen, kinne jo dizze fariabele brûke om mappen sa maklik te feroarjen as jo kommando's útjaan.
Ek al PATH
, fariabele CDPATH
is in kolon-skieden list fan paden. As jo it kommando útfiere cd
mei in relatyf paad (dus gjin liedende slash), standert sjocht de shell yn jo lokale map foar oerienkommende nammen. CDPATH
sil sykje yn 'e paden dy't jo joegen foar de map wêr't jo nei wolle gean.
As jo ynstallearje CDPATH
dus:
$ CDPATH=/:/lib
en dan ynfiere:
$ cd /home
$ cd tmp
dan komme jo altyd yn /tmp
gjin saak wêr't jo binne.
Wês lykwols foarsichtich, want as jo de lokale net opjaan yn 'e list (.
) map, dan kinne jo gjin oare map oanmeitsje tmp
en gean nei it as gewoanlik:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Oops!
Dit is gelyk oan de betizing dy't ik fielde doe't ik realisearre dat de lokale map net opnommen wie yn 'e mear bekende fariabele PATH
... mar jo moatte it dwaan yn jo PATH-fariabele, om't jo miskien wurde ferrifelje om in falsk kommando út te fieren fan wat ynladen koade.
Myn wurdt ynsteld troch it begjinpunt:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Hawwe jo oait ôffrege, typen exit
sil it jo út jo hjoeddeistige bash-shell nei in oare "âlder"-shell bringe, of sil it it konsolefinster gewoan slute?
Dizze fariabele hâldt by hoe djip nêst jo binne yn 'e bash-shell. As jo in nije terminal oanmeitsje, is it ynsteld op 1:
$ echo $SHLVL
1
Dan, as jo in oar shellproses begjinne, nimt it oantal ta:
$ bash
$ echo $SHLVL
2
Dit kin heul nuttich wêze yn skripts wêr't jo net wis binne oft jo moatte ôfslute of net, of byhâlde wêr't jo binne nestele.
5) LINENO
De fariabele is ek nuttich foar it analysearjen fan de aktuele steat en debuggen LINENO
, dy't rapportearret it oantal kommando's útfierd yn 'e sesje oant no ta:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Dit wurdt meast brûkt by it debuggen fan skripts. Ynfoegje rigels lykas echo DEBUG:$LINENO
, kinne jo fluch bepale wêr yn it skript jo binne (of net).
6) REPLY
As jo, lykas ik, normaal koade sa skriuwe:
$ read input
echo do something with $input
It kin as in ferrassing komme dat jo hielendal gjin soargen hoege te meitsjen oer it meitsjen fan de fariabele:
$ read
echo do something with $REPLY
Dit docht itselde ding.
7) TMOUT
Om foar te kommen dat jo om feiligensredenen te lang op produksjeservers bliuwe of per ongelok wat gefaarliks útfiere yn 'e ferkearde terminal, fungearret it ynstellen fan dizze fariabele as beskerming.
As neat wurdt ynfierd foar in set oantal sekonden, de shell giet út.
Dat is, dit is in alternatyf sleep 1 && exit
:
$ TMOUT=1
Boarne: www.habr.com