Saith newidyn Bash annisgwyl

Gan barhau Γ’'r gyfres o nodiadau am llai hysbys swyddogaethau bash, byddaf yn dangos i chi saith newidyn efallai nad ydych yn gwybod am.

1) PROMPT_COMMAND

Efallai eich bod eisoes yn gwybod sut i drin yr anogwr i ddangos gwybodaeth ddefnyddiol amrywiol, ond nid yw pawb yn gwybod y gallwch chi redeg gorchymyn cragen bob tro y dangosir yr anogwr.

Mewn gwirionedd, mae llawer o drinwyr prydlon cymhleth yn defnyddio'r newidyn hwn i weithredu gorchmynion i gasglu gwybodaeth a ddangosir yn yr anogwr.

Ceisiwch redeg hwn mewn cragen newydd a gweld beth sy'n digwydd i'r sesiwn:

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

2) HISTTIMEFORMAT

Os rhedeg history yn y consol, byddwch yn derbyn rhestr o orchmynion a weithredwyd yn flaenorol o dan eich cyfrif.

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

Unwaith y bydd y newidyn hwn wedi'i osod, mae cofnodion newydd yn cofnodi'r amser ynghyd Γ’'r gorchymyn, felly bydd yr allbwn yn edrych fel hyn:

1871 Rhedais hwn yn: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Rhedais hwn yn: 01/05/19 13:38:19 curl bbc.co.uk 1873 Rhedais hwn yn : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Rhedais hwn yn: 01/05/19 13:39:18 cyrl -vvv bbc.co.uk 1876 Rhedais hwn yn: 01 /05/19 13:39:25 sudo su -

Mae fformatio yn cyfateb i nodau o man date.

3) CDPATH

I arbed amser ar y llinell orchymyn, gallwch ddefnyddio'r newidyn hwn i newid cyfeiriaduron mor hawdd ag y byddwch yn cyhoeddi gorchmynion.

Fel PATH, newidyn CDPATH yn rhestr o lwybrau wedi'u gwahanu gan colon. Pan fyddwch chi'n rhedeg y gorchymyn cd gyda llwybr cymharol (h.y. dim slaes arweiniol), yn ddiofyn mae'r gragen yn edrych yn eich ffolder leol ar gyfer cyfateb enwau. CDPATH yn chwilio yn y llwybrau a roesoch am y cyfeiriadur yr ydych am fynd iddo.

Os ydych chi'n gosod CDPATH fel hyn:

$ CDPATH=/:/lib

ac yna nodwch:

$ cd /home
$ cd tmp

yna byddwch chi bob amser yn y diwedd /tmp ni waeth ble rydych chi.

Fodd bynnag, byddwch yn ofalus, oherwydd os na fyddwch yn nodi'r un lleol yn y rhestr (.) ffolder, yna ni fyddwch yn gallu creu unrhyw ffolder arall tmp ac ewch ati fel arfer:

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

Wps!

Mae hyn yn debyg i'r dryswch a deimlais pan sylweddolais nad oedd y ffolder leol wedi'i chynnwys yn y newidyn mwy cyfarwydd PATH... ond mae'n rhaid i chi ei wneud yn eich newidyn PATH oherwydd efallai y cewch eich twyllo i redeg gorchymyn ffug o rai cod wedi'i lawrlwytho.

Mae fy un i yn cael ei osod gan y man cychwyn:

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

4) SHLVL

Ydych chi erioed wedi meddwl, teipio exit a fydd yn mynd Γ’ chi allan o'ch cragen bash presennol i gragen "rhiant" arall, neu a fydd yn cau ffenestr y consol yn gyfan gwbl?

Mae'r newidyn hwn yn cadw golwg ar ba mor ddwfn ydych chi yn y gragen bash. Os ydych chi'n creu terfynell newydd, mae wedi'i osod i 1:

$ echo $SHLVL
1

Yna, os byddwch chi'n dechrau proses gragen arall, mae'r nifer yn cynyddu:

$ bash
$ echo $SHLVL
2

Gall hyn fod yn ddefnyddiol iawn mewn sgriptiau lle nad ydych chi'n siΕ΅r a ddylech chi adael ai peidio, neu gadw golwg ar ble rydych chi wedi nythu.

5) LINENO

Mae'r newidyn hefyd yn ddefnyddiol ar gyfer dadansoddi'r cyflwr presennol a dadfygio LINENO, sy'n adrodd nifer y gorchmynion a weithredwyd yn y sesiwn hyd yn hyn:

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

Defnyddir hwn amlaf wrth ddadfygio sgriptiau. Mewnosod llinellau fel echo DEBUG:$LINENO, gallwch chi benderfynu'n gyflym ble yn y sgript rydych chi (neu beidio).

6) REPLY

Os, fel fi, rydych chi fel arfer yn ysgrifennu cod fel hyn:

$ read input
echo do something with $input

Efallai y bydd yn syndod nad oes angen i chi boeni am greu'r newidyn o gwbl:

$ read
echo do something with $REPLY

Mae hyn yn gwneud yr un peth.

7) TMOUT

Er mwyn osgoi aros ar weinyddion cynhyrchu yn rhy hir am resymau diogelwch neu redeg rhywbeth peryglus yn ddamweiniol yn y derfynell anghywir, mae gosod y newidyn hwn yn amddiffyniad.

Os nad oes dim yn cael ei gofnodi am nifer penodol o eiliadau, mae'r plisgyn yn gadael.

Hynny yw, mae hwn yn ddewis arall sleep 1 && exit:

$ TMOUT=1

Ffynhonnell: hab.com

Ychwanegu sylw