Tujuh variabel Bash anu teu kaduga

Nuluykeun runtuyan catetan ngeunaan kirang dipikawanoh fungsi bash, kuring bakal nunjukkeun anjeun tujuh variabel anu anjeun henteu terang.

1) PROMPT_COMMAND

Anjeun meureun geus nyaho kumaha carana ngamanipulasi ajakan pikeun nembongkeun rupa informasi mangpaat, tapi teu sadaya jelema weruh yén anjeun bisa ngajalankeun paréntah cangkang unggal waktos ajakan ditémbongkeun.

Kanyataanna, loba manipulator ajakan kompléks make variabel ieu ngajalankeun paréntah pikeun ngumpulkeun informasi nu dipintonkeun dina ajakan.

Coba ngajalankeun ieu dina cangkang anyar tur tingal kumaha kajadian ka rintakan:

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

2) HISTTIMEFORMAT

Lamun lumpat history dina konsol nu, anjeun bakal nampa daptar paréntah saméméhna dieksekusi dina akun anjeun.

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

Sakali variabel ieu disetel, éntri anyar ngarékam waktos sareng paréntahna, janten kaluaranna bakal sapertos kieu:

1871 Kuring lumpat ieu di: 01/05/19 13:38:07 ucing /etc/resolv.conf 1872 Kuring lumpat ieu di: 01/05/19 13:38:19 curl bbc.co.uk 1873 Kuring lumpat ieu di: : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Kuring ngajalankeun ieu di: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Kuring ngajalankeun ieu di: 01 /05/19 13:39:25 sudo su -

Pormat cocog karakter ti man date.

3) CDPATH

Pikeun ngahemat waktos dina garis paréntah, anjeun tiasa nganggo variabel ieu pikeun ngarobih diréktori sagampil anjeun ngaluarkeun paréntah.

siga PATH, variabel CDPATH mangrupa daptar jalur anu dipisahkeun titik dua. Nalika anjeun ngajalankeun paréntah cd kalawan jalur relatif (i.e. euweuh slash ngarah), sacara standar cangkang kasampak dina folder lokal Anjeun pikeun ngaran cocog. CDPATH bakal milarian dina jalur anu anjeun bikeun pikeun diréktori anu anjeun hoyong angkat.

Upami anjeun masang CDPATH ku cara kieu:

$ CDPATH=/:/lib

teras lebetkeun:

$ cd /home
$ cd tmp

mangka anjeun bakal salawasna mungkas nepi di /tmp euweuh urusan dimana anjeun.

Nanging, ati-ati, sabab upami anjeun henteu netepkeun anu lokal dina daptar (.), mangka anjeun moal bisa nyieun polder séjén tmp sareng angkat sapertos biasa:

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

Aduh!

Ieu sami sareng kabingungan anu kuring karasa nalika kuring sadar yén folder lokal henteu kalebet kana variabel anu langkung akrab PATH... tapi anjeun kedah ngalakukeunana dina variabel PATH anjeun sabab anjeun tiasa ditipu pikeun ngajalankeun paréntah palsu tina sababaraha kode anu diunduh.

Tambang diatur ku titik awal:

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

4) SHLVL

Dupi anjeun kantos heran, ngetik exit bakal nyandak anjeun kaluar tina cangkang bash anjeun ayeuna ka cangkang "indungna" anu sanés, atanapi ngan ukur nutup jandela konsol lengkep?

Variabel ieu ngalacak kumaha jerona anjeun dina cangkang bash. Upami anjeun nyiptakeun terminal énggal, éta disetel ka 1:

$ echo $SHLVL
1

Teras, upami anjeun ngamimitian prosés cangkang anu sanés, jumlahna ningkat:

$ bash
$ echo $SHLVL
2

Ieu tiasa pisan mangpaat dina skrip dimana anjeun teu yakin naha kaluar atanapi henteu, atanapi ngalacak dimana anjeun nested.

5) LINENO

Variabel ogé kapaké pikeun nganalisis kaayaan ayeuna sareng debugging LINENO, anu ngalaporkeun jumlah paréntah anu dilaksanakeun dina sési sajauh ieu:

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

Ieu paling sering dianggo nalika nga-debug skrip. Inserting garis kawas echo DEBUG:$LINENO, Anjeun bisa gancang nangtukeun mana dina naskah anjeun (atanapi henteu).

6) REPLY

Upami, sapertos kuring, anjeun biasana nyerat kode sapertos kieu:

$ read input
echo do something with $input

Éta tiasa janten kejutan yén anjeun henteu kedah hariwang ngeunaan nyiptakeun variabel pisan:

$ read
echo do something with $REPLY

Ieu ngalakukeun hal anu sarua.

7) TMOUT

Pikeun ngahindarkeun tetep dina server produksi panjang teuing alesan kaamanan atawa ngahaja ngajalankeun hal bahaya di terminal salah, netepkeun variabel ieu tindakan minangka panyalindungan a.

Upami teu aya anu dilebetkeun salami sababaraha detik, cangkang bakal kaluar.

Hartina, ieu alternatif sleep 1 && exit:

$ TMOUT=1

sumber: www.habr.com

Tambahkeun komentar