Sekiz Az Bilinen Bash Seçeneği

Bazı Bash seçenekleri iyi bilinir ve sıklıkla kullanılır. Örneğin birçok kişi senaryonun başında yazıyor

-o xtrace ayarla

hata ayıklama için,

set -o hata

yanlışlıkla çıkmak veya

set -o errunset

Çağrılan değişken ayarlanmamışsa çıkmak için.

Ancak başka birçok seçenek var. Bazen manaslarda çok kafa karıştırıcı bir şekilde anlatılırlar, bu yüzden en yararlı olanlardan bazılarını açıklamalarıyla birlikte burada topladım.

Not: Mac'lerde bu seçeneklerin hepsinin mevcut olmadığı daha eski bir bash sürümü (3.x yerine 4.x) bulunabilir. Bu durumda bkz. burada veya burada.

set veya shopt?

Bash seçeneklerini ayarlamanın iki yolu vardır: bir komut dosyasından veya komut satırından. Yerleşik komutları kullanabilirsiniz set и shopt. Her ikisi de kabuğun davranışını değiştirir, hemen hemen aynı şeyi yapar (farklı argümanlarla), ancak Menşei... Seçenekler set parametreler diğer kabukların parametrelerinden miras alınır veya ödünç alınır. shopt bash'ta oluşturuldu.

Mevcut seçenekleri görmek istiyorsanız şunu çalıştırın:

$ set -o
$ shopt

Seçeneği etkinleştirmek için set Uzun veya kısa sözdizimi kullanılır:

$ set -o errunset
$ set -e

Etki aynıdır.

Seçeneği devre dışı bırakmak için eksi yerine artı koymanız gerekir:

$ set +e

Uzun bir süre bu sözdizimini hatırlayamadım çünkü mantık yanlış görünüyordu (eksi işareti seçeneği etkinleştirir ve artı işareti onu devre dışı bırakır).

В shopt (daha mantıklı) bayraklar seçenekleri etkinleştirmek ve devre dışı bırakmak için kullanılır -s (ayarlayın) ve -u (ayarlanmadı):

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

Dizinleri değiştirme

Dizinlerle çalışmanıza yardımcı olacak çeşitli seçenekler vardır.

1.cd büyüsü

Bu ayarla bash yazım hatalarını anlamaya başlayacak ve sizi adını yanlış yazdığınız klasöre götürecektir.

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

Bu seçeneği uzun yıllardır kullanıyorum ve çok nadiren (belki yılda bir kez) çok garip bir karar veriyor. Ama diğer günlerde cdspell Kelimenin tam anlamıyla her gün zaman kazandırır.

2. otomatik CD

Çoklu girişlerin verimsizliğini kabul etmeye istekli değilseniz cd, ardından X komutu yoksa bu seçeneği X klasörüne taşınacak şekilde ayarlayabilirsiniz.

$ shopt -s autocd
$ abcdefg
$ cd ..

Otomatik tamamlamayla birlikte bu, klasörler arasında hızlı bir şekilde geçiş yapmanızı sağlar:

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

Sadece klasöre isim vermeyin rm -rf * (evet, bu arada, bu mümkün).

3.dirgenişlet

Bu, Tab tuşuna basıldığında ortam değişkenlerini genişleten harika bir seçenektir:

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

temiz çıktı

4. kontrol işleri

Bu seçenek, arka planda hala çalışan işler varsa oturumdan çıkış yapılmasını durdurur.

Çıkmak yerine tamamlanmamış görevlerin bir listesi görüntülenir. Hala çıkmak istiyorsanız tekrar girin 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 процесса  изменился

İkame süper güçleri

5.küresel yıldız

Bu seçenek size ikame süper güçler verir! Eğer girerseniz:

$ shopt -s globstar
$ ls **

daha sonra kabuk tüm dizinleri ve alt dizinleri yinelemeli olarak gösterecektir.

В сочетании с direxpand Hiyerarşide daha düşük olan her şeyi hızlı bir şekilde görüntüleyebilirsiniz:

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

6. dış dünya

Bu seçenek, normal ifadelerle daha yaygın olarak ilişkilendirilen özellikleri etkinleştirir. Bazen bu çok faydalıdır:

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

Burada desenler parantez içine alınmış ve dikey bir çubukla ayrılmıştır. Mevcut operatörler şunlardır:

? = verilen kalıpların sıfır veya bir oluşumuyla eşleşir! = verilen kalıplarla eşleşmeyen her şeyi göster * = sıfır veya daha fazla olay + = bir veya daha fazla olay @ = tam olarak bir olay

Kaza koruması

7. geçmiş doğrulama

Kısaltmalar geçmişindeki hızlı başlatma komutlarını kullanmak ilk başta biraz korkutucu olabilir. !! и !$.

Seçenek histverify Bash'in komutu gerçekten çalıştırmadan önce nasıl yorumladığını görmenizi sağlar:

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

8. Noclobber

Yine kazalara karşı, yani yönlendirme operatörüyle zaten var olan bir dosyanın üzerine yazılmasına karşı koruma sağlamak için (>). Yedeklemeniz yoksa bu bir felaket olabilir.

Seçenek set -С bu tür üzerine yazmayı yasaklar. Gerekirse operatörü kullanarak korumayı atlayabilirsiniz >|:

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

Kaynak: habr.com

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster