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
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. 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