Seba 'varjabbli Bash mhux mistennija

Tkompli s-sensiela ta’ noti dwar inqas magħrufa funzjonijiet bash, ser nuruk seba' varjabbli li forsi ma tafx bihom.

1) PROMPT_COMMAND

Inti tista 'diġà tkun taf kif timmanipula l-pront biex turi informazzjoni utli varji, iżda mhux kulħadd jaf li inti tista' tmexxi kmand tal-qoxra kull darba li l-pront jintwera.

Fil-fatt, ħafna manipulaturi kumplessi fil-pront jużaw din il-varjabbli biex jesegwixxu kmandi biex jiġbru informazzjoni li tintwera fil-pront.

Ipprova mexxi dan f'qoxra ġdida u ara x'jiġri mis-sessjoni:

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

2) HISTTIMEFORMAT

Jekk tmexxi history fil-console, inti tirċievi lista ta 'kmandi esegwiti qabel taħt il-kont tiegħek.

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

Ladarba din il-varjabbli tiġi ssettjata, entrati ġodda jirreġistraw il-ħin flimkien mal-kmand, għalhekk l-output se jidher bħal dan:

1871 Ħadejt dan fi: 01/05/19 13:38:07 qattus /etc/resolv.conf
1872 I dam dan fi: 01/05/19 13:38:19 curl bbc.co.uk
1873 Ħadejt dan fi: 01/05/19 13:38:41 sudo vi /etc/resolv.conf
1874 I dam dan fi: 01/05/19 13:39:18 curl -vvv bbc.co.uk
1876 ​​għamilt dan fi: 01/05/19 13:39:25 sudo su -

L-ifformattjar jaqbel ma' karattri minn man date.

3) CDPATH

Biex tiffranka l-ħin fuq il-linja tal-kmand, tista 'tuża din il-varjabbli biex tibdel id-direttorji faċilment daqs kemm toħroġ kmandi.

Bħal PATH, varjabbli CDPATH hija lista ta' mogħdijiet separati mill-kolon. Meta tmexxi l-kmand cd b'passaġġ relattiv (jiġifieri l-ebda mmejla ewlenija), b'mod awtomatiku l-qoxra tidher fil-folder lokali tiegħek għal ismijiet li jaqblu. CDPATH se tfittex fil-mogħdijiet li tajt għad-direttorju li trid tmur fih.

Jekk tinstalla CDPATH b'dan il-mod:

$ CDPATH=/:/lib

u mbagħad daħħal:

$ cd /home
$ cd tmp

allura inti dejjem tispiċċa fi /tmp irrispettivament minn fejn int.

Madankollu, oqgħod attent, għax jekk ma tispeċifikax dik lokali fil-lista (.) folder, allura ma tkunx tista' toħloq xi folder ieħor tmp u mur fiha bħas-soltu:

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

Oops!

Dan huwa simili għall-konfużjoni li ħassejt meta rrealizzajt li l-folder lokali ma kienx inkluż fil-varjabbli aktar familjari PATH... imma trid tagħmel dan fil-varjabbli PATH tiegħek għax tista' tkun imqarraq biex tmexxi kmand falz minn xi kodiċi mniżżel.

Mine huwa stabbilit mill-punt tat-tluq:

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

4) SHLVL

Qatt ħsibt, ittajpjar exit se tieħdok mill-qoxra tal-bash attwali tiegħek għal qoxra "ġenitur" oħra, jew se tagħlaq it-tieqa tal-console kompletament?

Din il-varjabbli żżomm rekord ta' kemm int imbejjet fil-fond fil-qoxra tal-bash. Jekk toħloq terminal ġdid, huwa ssettjat għal 1:

$ echo $SHLVL
1

Imbagħad, jekk tibda proċess ieħor tal-qoxra, in-numru jiżdied:

$ bash
$ echo $SHLVL
2

Dan jista 'jkun utli ħafna fl-iskripts fejn m'intix ċert jekk toħroġx jew le, jew iżżomm kont ta' fejn tkun imbejjet.

5) LINENO

Il-varjabbli hija utli wkoll għall-analiżi tal-istat attwali u d-debugging LINENO, li tirrapporta n-numru ta 'kmandi esegwiti fis-sessjoni s'issa:

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

Dan huwa l-aktar spiss użat meta debugging skripts. Daħħal linji simili echo DEBUG:$LINENO, tista' malajr tiddetermina fejn int fl-iskrittura (jew le).

6) REPLY

Jekk, bħali, normalment tikteb kodiċi bħal dan:

$ read input
echo do something with $input

Jista 'jkun sorpriża li m'għandekx għalfejn tinkwieta dwar il-ħolqien tal-varjabbli xejn:

$ read
echo do something with $REPLY

Dan jagħmel l-istess ħaġa.

7) TMOUT

Biex tevita li toqgħod fuq servers ta 'produzzjoni għal żmien twil wisq għal raġunijiet ta' sigurtà jew aċċidentalment taħdem xi ħaġa perikoluża fit-terminal ħażin, l-issettjar ta 'din il-varjabbli taġixxi bħala protezzjoni.

Jekk ma jiddaħħal xejn għal numru stabbilit ta' sekondi, il-qoxra toħroġ.

Jiġifieri, din hija alternattiva sleep 1 && exit:

$ TMOUT=1

Sors: www.habr.com

Żid kumment