Heft guhêrbarên Bash yên nediyar

Berdewamiya rêze notên li ser kêm tê zanîn fonksiyonên bash, ez ê heft guherbarên ku hûn pê nizanin nîşanî we bidim.

1) PROMPT_COMMAND

Dibe ku hûn jixwe dizanin ka meriv çawa bilêvkirinê manîpule dike da ku agahdariya cihêreng bikêr nîşan bide, lê ne her kes pê nizane ku hûn dikarin her gava ku tavilê têne xuyang kirin fermanek şêlê bimeşînin.

Di rastiyê de, gelek manipulatorên bilez ên tevlihev vê guhêrbar bikar tînin da ku fermanan bi cih bînin da ku agahdariya ku di tavilê de têne xuyang kirin berhev bikin.

Biceribînin ku vê di şêlekek nû de bimeşînin û bibînin ka bi danişînê re çi dibe:

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

2) HISTTIMEFORMAT

Ger hûn birevin history di konsolê de, hûn ê navnîşek fermanên ku berê di binê hesabê we de hatine bicîh kirin bistînin.

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

Dema ku ev guhêrbar were danîn, navnîşên nû dem bi fermanê re tomar dikin, ji ber vê yekê encam dê wiha xuya bike:

1871 Min ev baz da: 01/05/19 13:38:07 pisîk /etc/resolv.conf 1872 Min ev baz da: 01/05/19 13:38:19 curl bbc.co.uk 1873 : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Min ev baz da: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Min ev li: 01 bezî /05/19 13:39:25 sudo su -

Formatkirin tîpan ji hev digre man date.

3) CDPATH

Ji bo ku hûn wextê li ser rêzika fermanê hilînin, hûn dikarin vê guhêrbar bikar bînin ku bi hêsanî wekî ku hûn fermanan derdixin pelrêçan biguhezînin.

Her wiha PATH, guherbar CDPATH navnîşek rêgezên ji hev veqetandî ye. Dema ku hûn fermanê dimeşînin cd bi rêgezek têkildar (ango bê şiklê sereke), ji hêla xwerû ve şêl ji bo navên lihevhatî li peldanka weya herêmî dinihêre. CDPATH dê di rêyên ku we dane pelrêça ku hûn dixwazin biçin de bigerin.

Heke hûn saz bikin CDPATH Ji ber vê yekê:

$ CDPATH=/:/lib

û paşê têkevin:

$ cd /home
$ cd tmp

wê hingê hûn ê her dem biqedin hundur /tmp tu li ku yî.

Lêbelê, hişyar bimînin, ji ber ku heke hûn di navnîşê de ya herêmî diyar nekin (.) peldanka, wê hingê hûn ê nikaribin peldankek din biafirînin tmp û wek hercar here ser wê:

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

Oops!

Ev dişibihe tevliheviya ku min hîs kir dema ku min fêhm kir ku peldanka herêmî di guhêrbara naskirî de ne tê de ye. PATH... lê divê hûn wiya di guhêrbara PATH-a xwe de bikin ji ber ku dibe ku hûn werin xapandin ku hûn fermanek sexte ji hin kodên dakêşandî bimeşînin.

Ya min ji hêla xala destpêkê ve hatî destnîşan kirin:

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

4) SHLVL

Ma tu qet meraq kir, nivîsandinê exit ew ê we ji şêlê bash-a weya heyî derxîne ber şêlekek din a "dêûbav", an ew ê tenê pencereya konsolê bi tevahî bigire?

Ev guhêrbar bişopîne ka hûn çiqasî kûr di şêlê bash de hêlîn in. Ger hûn termînalek nû biafirînin, ew li 1 tête danîn:

$ echo $SHLVL
1

Dûv re, heke hûn pêvajoyek şêlê din dest pê bikin, hejmar zêde dibe:

$ bash
$ echo $SHLVL
2

Ev dikare di skrîptên ku hûn pê ne bawer in ku derkevin an na, an li cîhê ku hûn hêlîn bişopînin de pir bikêrhatî be.

5) LINENO

Guherbar di heman demê de ji bo analîzkirina rewşa heyî û xeletkirinê jî bikêr e LINENO, ku hejmara fermanên ku heya niha di danişînê de hatine bicîh kirin radigihîne:

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

Ev pirî caran dema ku skrîptan debugging tê bikaranîn. Têxistina xetên mîna echo DEBUG:$LINENO, hûn dikarin zû diyar bikin ku hûn li ku derê nivîsarê ne (an na).

6) REPLY

Heke, mîna min, hûn bi gelemperî kodek weha dinivîsin:

$ read input
echo do something with $input

Dibe ku surprîz be ku hûn ne hewce ne ku ji çêkirina guhêrbar qet xem bikin:

$ read
echo do something with $REPLY

Ev heman tiştî dike.

7) TMOUT

Ji bo ku ji ber sedemên ewlehiyê pir dirêj li ser serverên hilberînê nemînin an bi xeletî tiştek xeternak di termînala xelet de bimeşînin, danîna vê guhêrbar wekî parastinê tevdigere.

Ger ji bo çend hûrdeman tiştek nekeve, şêl derdikeve.

Yanî ev alternatîfek e sleep 1 && exit:

$ TMOUT=1

Source: www.habr.com

Add a comment