Səkkiz az tanınan Baş Seçimləri

Bəzi Bash variantları yaxşı bilinir və tez-tez istifadə olunur. Məsələn, bir çox insan ssenarinin əvvəlində yazır

set -o xtrace

ayıklama üçün,

düzəlt - yoxsa səhv

səhvən çıxmaq və ya

set -o xətası

çağırılan dəyişən təyin edilmədikdə çıxmaq üçün.

Ancaq bir çox başqa variant var. Bəzən onlar manada həddən artıq çaşqın şəkildə təsvir olunur, ona görə də ən faydalı olanlarından bəzilərini izahatla burada topladım.

Qeyd: Mac-larda bash-ın köhnə versiyası (3.x deyil, 4.x) ola bilər, burada bu seçimlərin hamısı mövcud deyil. Bu halda, baxın burada və ya burada.

set və ya shopt?

Bash seçimlərini təyin etməyin iki yolu var: skriptdən və ya komanda xəttindən. Daxili əmrlərdən istifadə edə bilərsiniz set и shopt. Hər ikisi qabığın davranışını dəyişir, eyni şeyi edir (müxtəlif arqumentlərlə), lakin öz xüsusiyyətlərinə görə fərqlənir. mənşəyi. Seçimlər set Parametrlər isə digər qabıqların parametrlərindən miras alınır və ya götürülür shopt bash-da yaradılmışdır.

Cari seçimləri görmək istəyirsinizsə, işə salın:

$ set -o
$ shopt

Seçimi aktivləşdirmək üçün set Uzun və ya qısa sintaksis istifadə olunur:

$ set -o errunset
$ set -e

Təsiri eynidir.

Seçimi aradan qaldırmaq üçün mənfi əvəzinə bir artı qoymalısınız:

$ set +e

Uzun müddət bu sintaksisi xatırlaya bilmədim, çünki məntiq səhv görünürdü (mənfi işarə seçimi aktivləşdirir, artı işarəsi isə onu söndürür).

В shopt (daha məntiqli) bayraqlar seçimləri aktivləşdirmək və söndürmək üçün istifadə olunur -s (dəst) və -u (quraşdırılmamış):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Kataloqların dəyişdirilməsi

Kataloqlarla işləməyinizə kömək edən bir neçə variant var.

1.cdspell

Bu parametrlə bash yazı səhvlərini başa düşməyə başlayacaq və sizi adını səhv yazdığınız qovluğa aparacaq.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Mən bu seçimdən uzun illərdir istifadə edirəm və çox nadir hallarda (bəlkə də ildə bir dəfə) çox qəribə bir qərar verir. Amma başqa günlərdə cdspell hər gün sözün əsl mənasında vaxta qənaət edir.

2. autocd

Birdən çox girişin səmərəsizliyini qəbul etmək istəmirsinizsə cd, onda X əmri mövcud deyilsə, bu seçimi X qovluğuna köçürmək üçün təyin edə bilərsiniz.

$ shopt -s autocd
$ abcdefg
$ cd ..

Avtomatik tamamlama ilə birlikdə bu, qovluqlar arasında sürətlə keçməyə imkan verir:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Sadəcə qovluğun adını çəkməyin rm -rf * (bəli, yeri gəlmişkən, bu mümkündür).

3.dirgenişləndirin

Bu, Tab düyməsini basaraq mühit dəyişənlərini genişləndirən əla seçimdir:

$ shopt -s direxpand
$ ./[TAB]     # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  заменяется на...
$ /full/path/to/home/folder

Təmiz çıxış

4. çek işləri

Bu seçim fonda hələ də işləyən işlər varsa, sessiyadan çıxmağı dayandırır.

Çıxmaq əvəzinə, tamamlanmamış tapşırıqların siyahısı göstərilir. Hələ də çıxmaq istəyirsinizsə, yenidən daxil olun exit.

$ shopt -s checkjobs
$ echo $$
68125             # <= ID процесса для оболочки
$ sleep 999 &
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ echo $$
68125             # <= ID процесса для оболочки тот же
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ exit
$ echo $$
$ 59316           # <= на этот раз ID процесса  изменился

Əvəzedici super güclər

5.globstar

Bu seçim sizə əvəzedici super güclər verir! Daxil etsəniz:

$ shopt -s globstar
$ ls **

sonra qabıq bütün qovluqları və alt kataloqları rekursiv şəkildə göstərəcək.

Birlikdə direxpand Siz iyerarxiyada daha aşağı olan hər şeyi tez görə bilərsiniz:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6. extglob

Bu seçim normal ifadələrlə daha çox əlaqəli olan xüsusiyyətləri işə salır. Bəzən bu çox faydalıdır:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Burada naxışlar mötərizədə yerləşdirilir və şaquli çubuqla ayrılır. Mövcud operatorlar bunlardır:

? = verilmiş nümunələrin sıfıra və ya bir hadisəsinə uyğun gəlir
! = verilmiş nümunələrə uyğun gəlməyən hər şeyi göstərin
* = sıfır və ya daha çox hadisə
+ = bir və ya bir neçə hadisə
@ = dəqiq bir hadisə

Qəzadan qorunma

7. tarixi yoxlayın

İxtisarlar tarixindən sürətli işə salma əmrlərindən istifadə etmək əvvəlcə bir az qorxulu ola bilər !! и !$.

Seçim histverify Bash-ın əmri işləməzdən əvvəl necə şərh etdiyini görməyə imkan verir:

$ shopt -s histverify
$ echo !$          # <= По нажатию Enter команда не запускается
$ echo histverify  # <= Она сначала демонстрируется на экране,
histverify         # <= а потом запускается 

8. Noclobber

Yenə də qəzalardan, yəni yönləndirmə operatoru ilə artıq mövcud olan faylın üzərinə yazmaqdan qorunmaq üçün (>). Əgər ehtiyat nüsxəniz yoxdursa, bu, fəlakət ola bilər.

Seçim set -С belə üstünə yazmağı qadağan edir. Lazım gələrsə, operatordan istifadə edərək qorunmadan keçə bilərsiniz >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

Mənbə: www.habr.com

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