Санаанд оромгүй долоон Bash хувьсагч

тухай цуврал тэмдэглэлээ үргэлжлүүлж байна бага мэддэг функцууд bash, би чамд мэдэхгүй байж болох долоон хувьсагчийг харуулах болно.

1) PROMPT_COMMAND

Төрөл бүрийн хэрэгцээтэй мэдээллийг харуулахын тулд сануулгыг хэрхэн удирдахыг та аль хэдийн мэддэг байж болох ч, сануулга гарч ирэх бүрт бүрхүүлийн командыг ажиллуулж болно гэдгийг хүн бүр мэддэггүй.

Үнэн хэрэгтээ, олон нийлмэл prompt manipulators энэ хувьсагчийг командыг гүйцэтгэхэд ашигладаг.

Үүнийг шинэ бүрхүүлд ажиллуулж үзээд сессэд юу тохиолдохыг харна уу:

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

2) HISTTIMEFORMAT

Хэрэв та гүйвэл history консол дээр та өөрийн дансанд өмнө нь гүйцэтгэсэн командуудын жагсаалтыг хүлээн авах болно.

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

Энэ хувьсагчийг тохируулсны дараа шинэ оруулгууд тушаалын хамт цагийг бүртгэх тул гаралт нь дараах байдалтай харагдана.

1871 Би энийг: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Би үүнийг ажиллуулсан: 01/05/19 13:38:19 curl bbc.co.uk 1873 Би энийг ажиллуулсан : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Би үүнийг ажиллуулсан: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Би үүнийг: 01 /05/19 13:39:25 sudo su -

Формат нь тэмдэгтүүдтэй таарч байна man date.

3) CDPATH

Тушаалын мөрөнд цаг хэмнэхийн тулд та тушаал өгөхдөө энэ хувьсагчийг ашиглан сангуудыг хялбархан өөрчлөх боломжтой.

Мөн түүнчлэн PATH, хувьсагч CDPATH хоёр цэгээр тусгаарлагдсан замуудын жагсаалт юм. Та тушаалыг ажиллуулах үед cd харьцангуй замтай (жишээ нь тэргүүлэгч ташуу зураасгүй) анхдагч байдлаар бүрхүүл нь тохирох нэрийг хайж олохын тулд таны дотоод хавтсанд харагдана. CDPATH Таны очихыг хүссэн лавлахыг таны өгсөн замуудаас хайх болно.

Хэрэв та суулгавал CDPATH Энэ аргаар:

$ CDPATH=/:/lib

тэгээд оруулна уу:

$ cd /home
$ cd tmp

тэгвэл чи үргэлж дотор нь орох болно /tmp хаана ч байсан хамаагүй.

Гэсэн хэдий ч болгоомжтой байгаарай, учир нь хэрэв та жагсаалтад орон нутгийн нэрийг заагаагүй бол (.) фолдер байвал та өөр хавтас үүсгэх боломжгүй болно tmp мөн ердийнхөөрөө түүн рүү очно уу:

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

Өө!

Энэ нь локал фолдерыг илүү танил хувьсагчдад оруулаагүй гэдгийг мэдээд миний мэдэрсэн төөрөгдөлтэй төстэй юм. PATH... гэхдээ та үүнийг PATH хувьсагчдаа хийх ёстой, учир нь та зарим татаж авсан кодоос хуурамч тушаал ажиллуулна гэж хууртагдаж магадгүй.

Минийх нь эхлэх цэгээр тохируулагдсан:

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

4) SHLVL

Чи бичиж байна уу гэж бодож байсан уу exit Энэ нь таныг одоогийн bash бүрхүүлээс өөр "эцэг эх" бүрхүүл рүү шилжүүлэх үү эсвэл консолын цонхыг бүрэн хаах уу?

Энэ хувьсагч нь таныг bash shell-д хэр гүн үүрлэсэн болохыг бүртгэдэг. Хэрэв та шинэ терминал үүсгэвэл үүнийг 1 болгож тохируулна:

$ echo $SHLVL
1

Дараа нь, хэрэв та өөр бүрхүүлийн процессыг эхлүүлэх юм бол тоо нэмэгдэнэ:

$ bash
$ echo $SHLVL
2

Энэ нь гарах эсэхээ мэдэхгүй байгаа скриптүүдэд маш хэрэгтэй байж болох юм.

5) LINENO

Хувьсагч нь одоогийн төлөв байдалд дүн шинжилгээ хийх, дибаг хийхэд тустай LINENO, энэ нь сессэд одоогоор гүйцэтгэсэн командуудын тоог мэдээлдэг:

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

Энэ нь ихэвчлэн скриптийг дибаг хийх үед ашиглагддаг. гэх мэт мөрүүдийг оруулж байна echo DEBUG:$LINENO, та скриптийн хаана байгааг (эсвэл үгүй) хурдан тодорхойлох боломжтой.

6) REPLY

Хэрэв та над шиг ийм код бичдэг бол:

$ read input
echo do something with $input

Та хувьсагчийг үүсгэх талаар огт санаа зовох хэрэггүй болсон нь гайхмаар санагдаж магадгүй юм:

$ read
echo do something with $REPLY

Энэ нь ижил зүйлийг хийдэг.

7) TMOUT

Аюулгүй байдлын үүднээс үйлдвэрлэлийн серверүүд дээр удаан байх эсвэл буруу терминал дээр санамсаргүй байдлаар аюултай зүйл ажиллуулахгүйн тулд энэ хувьсагчийг тохируулах нь хамгаалалтын үүрэг гүйцэтгэдэг.

Тодорхой секундын турш юу ч оруулахгүй бол бүрхүүл гарна.

Өөрөөр хэлбэл, энэ бол өөр хувилбар юм sleep 1 && exit:

$ TMOUT=1

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх