Yeddi gözlənilməz Bash dəyişəni

Haqqında qeydlər silsiləsi davam edir az tanınır funksiyaları bash, mən sizə bilmədiyiniz yeddi dəyişəni göstərəcəyəm.

1) PROMPT_COMMAND

Siz müxtəlif faydalı məlumatları göstərmək üçün sorğu ilə necə manipulyasiya edəcəyinizi artıq bilirsiniz, lakin hamı bilmir ki, sorğu hər dəfə göstərildikdə shell əmrini işlədə bilərsiniz.

Əslində, bir çox mürəkkəb əmr manipulyatorları sorğuda göstərilən məlumatı toplamaq üçün əmrləri yerinə yetirmək üçün bu dəyişəndən istifadə edir.

Bunu yeni bir qabıqda işə salın və seansa nə baş verdiyinə baxın:

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

2) HISTTIMEFORMAT

Əgər qaçsan history konsolda, hesabınız altında əvvəllər yerinə yetirilən əmrlərin siyahısını alacaqsınız.

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

Bu dəyişən təyin edildikdən sonra, yeni girişlər əmrlə birlikdə vaxtı qeyd edir, beləliklə çıxış belə görünəcək:

1871 I run this at: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 I run this at: 01/05/19 13:38:19 curl bbc.co.uk 1873 I run this at : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 I runed this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 I run this at: 01 /05/19 13:39:25 sudo su -

Formatlama simvollara uyğun gəlir man date.

3) CDPATH

Komanda xəttində vaxta qənaət etmək üçün bu dəyişəndən istifadə edərək əmrlər verərkən qovluqları asanlıqla dəyişdirə bilərsiniz.

Kimi PATH, dəyişən CDPATH yolların iki nöqtə ilə ayrılmış siyahısıdır. Komandanı işlətdiyiniz zaman cd nisbi yol ilə (yəni, aparıcı slash yoxdur), standart olaraq, qabıq uyğun adlar üçün yerli qovluqda görünür. CDPATH getmək istədiyiniz kataloq üçün verdiyiniz yollarda axtarış edəcək.

Qurarsanız CDPATH bu şəkildə:

$ CDPATH=/:/lib

və sonra daxil edin:

$ cd /home
$ cd tmp

o zaman həmişə sona çatacaqsan /tmp harda olursan ol.

Bununla belə, ehtiyatlı olun, çünki siyahıda yerlini göstərməsəniz (.) qovluğundan istifadə etsəniz, başqa heç bir qovluq yarada bilməyəcəksiniz tmp və həmişəki kimi ona keçin:

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

Vay!

Bu, yerli qovluğun daha tanış dəyişənə daxil edilmədiyini anlayanda hiss etdiyim qarışıqlığa bənzəyir. PATH... lakin siz bunu PATH dəyişəninizdə etməlisiniz, çünki bəzi endirilmiş koddan saxta əmr işlətməyə aldana bilərsiniz.

Mine başlanğıc nöqtəsi ilə təyin olunur:

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

4) SHLVL

Heç düşünmüsünüzmü, yazaraq exit sizi cari bash shellinizdən başqa "ana" qabığa aparacaq, yoxsa o, sadəcə konsol pəncərəsini tamamilə bağlayacaq?

Bu dəyişən sizin bash qabığında nə qədər dərin yerləşdiyinizi izləyir. Yeni terminal yaratsanız, o, 1-ə təyin edilir:

$ echo $SHLVL
1

Sonra, başqa bir qabıq prosesinə başlasanız, sayı artır:

$ bash
$ echo $SHLVL
2

Çıxıb-çıxmayacağınıza əmin olmadığınız və ya yuva qurduğunuz yeri izlədiyiniz skriptlərdə bu çox faydalı ola bilər.

5) LINENO

Dəyişən cari vəziyyəti təhlil etmək və sazlamaq üçün də faydalıdır LINENO, bu günə qədər sessiyada yerinə yetirilən əmrlərin sayını bildirir:

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

Bu, ən çox skriptləri sazlayarkən istifadə olunur. kimi xətlərin daxil edilməsi echo DEBUG:$LINENO, skriptdə harada olduğunuzu (yaxud olmadığını) tez müəyyən edə bilərsiniz.

6) REPLY

Əgər mənim kimi kodu adətən belə yazırsan:

$ read input
echo do something with $input

Dəyişən yaratmaq üçün ümumiyyətlə narahat olmamağınız təəccüblü ola bilər:

$ read
echo do something with $REPLY

Bu eyni şeyi edir.

7) TMOUT

Təhlükəsizlik səbəbi ilə istehsal serverlərində çox uzun müddət qalmamaq və ya səhv terminalda təsadüfən təhlükəli bir şey işə salmamaq üçün bu dəyişən qoruma rolunu oynayır.

Müəyyən edilmiş bir neçə saniyə ərzində heç bir şey daxil edilməzsə, qabıq çıxır.

Yəni bu, alternativdir sleep 1 && exit:

$ TMOUT=1

Mənbə: www.habr.com

Добавить комментарий