OnWorks Linux ve Windows Çevrimiçi İş İstasyonları

Logo

İş İstasyonları için Çevrimiçi Ücretsiz Barındırma

<Önceki | İçerik | Sonraki>

Operatörler

Tüm testlere rağmen bulmak sağlar, yine de tanımlamanın daha iyi bir yoluna ihtiyacımız olabilir. mantıksal ilişkiler testler arasında. Örneğin, bir dizindeki tüm dosya ve alt dizinlerin güvenli izinlere sahip olup olmadığını belirlememiz gerekirse ne olur? 0600 olmayan izinlere sahip tüm dosyaları ve 0700 olmayan izinlere sahip dizinleri arardık. Neyse ki, bulmak kullanarak testleri birleştirmenin bir yolunu sağlar mantıksal operatörler


daha karmaşık mantıksal ilişkiler oluşturmak için. Yukarıda bahsedilen testi ifade etmek için şunu yapabiliriz:



[ben@linuxbox ~]$ bul ~ \( -type f -not -perm 0600 \) -veya \( -type d

-değil -perm 0700 \)

[ben@linuxbox ~]$ bul ~ \( -type f -not -perm 0600 \) -veya \( -type d

-değil -perm 0700 \)


Evet! Bu kesinlikle garip görünüyor. Bütün bu şeyler nedir? Aslında, operatörler onları tanıdıktan sonra o kadar karmaşık değil. İşte liste:


Tablo 17-4: Mantıksal Operatörleri bulun


Operatör Açıklaması

Operatör Açıklaması

-ve Operatörün her iki tarafındaki testler doğruysa eşleştirin. kısaltılabilir -a. Hiçbir operatör bulunmadığında, -ve varsayılan olarak ima edilir.


görüntü

Ya da Operatörün her iki tarafındaki bir test doğruysa eşleştirin. kısaltılabilir -o.


görüntü

-Hayırt Operatörü takip eden test yanlışsa eşleştirin. Ünlem işareti (!) ile kısaltılabilir.


görüntü

() Daha büyük ifadeler oluşturmak için testleri ve operatörleri birlikte gruplandırır. Bu, mantıksal değerlendirmelerin önceliğini kontrol etmek için kullanılır. Varsayılan olarak, bulmak soldan sağa doğru değerlendirir. İstenen sonucu elde etmek için genellikle varsayılan değerlendirme sırasını geçersiz kılmak gerekir. Gerekmese bile, komutun okunabilirliğini artırmak için bazen gruplama karakterlerini dahil etmek yararlıdır. Parantez karakterlerinin kabuk için özel bir anlamı olduğundan, komut satırında argüman olarak iletilebilmeleri için bunları kullanırken alıntılanmaları gerektiğini unutmayın. bulmak. Genellikle ters eğik çizgi karakteri onlardan kaçmak için kullanılır.


görüntü


Bu operatör listesi elimizdeyken, bulmak emretmek. En üst seviyeden bakıldığında testlerimizin birer nokta ile ayrılmış iki grup halinde düzenlendiğini görmekteyiz. Ya da Şebeke:

( ifade 1 ) -veya ( ifade 2 )

Bu mantıklı, çünkü belirli bir dizi izine sahip dosyaları ve farklı bir diziye sahip dizinleri arıyoruz. Hem dosya hem de dizin arıyorsak, neden


kullanırız Ya da yerine -ve? Çünkü çünkü bulmak dosyaları ve dizinleri tarar, her biri belirtilen testlerle eşleşip eşleşmediğini görmek için değerlendirilir. olup olmadığını bilmek istiyoruz herhangi biri kötü izinlere sahip bir dosya or kötü izinlere sahip bir dizin. İkisi aynı anda olamaz. Gruplandırılmış ifadeleri genişletirsek, bunu şu şekilde görebiliriz:

(kötü izinlere sahip dosya) -veya (kötü izinlere sahip dizin)

Sıradaki görevimiz, "kötü izinleri" nasıl test edeceğimizdir. Bunu nasıl yaparız? Aslında yapmıyoruz. “İyi izinlerin” ne olduğunu bildiğimiz için test edeceğimiz şey “iyi izinler değil” olacaktır. Dosyalar için iyi 0600 ve dizinler için 0700 olarak tanımlıyoruz. Dosyaları “iyi değil” izinleri için test edecek ifade:

-type f -ve -izin verme 0600

ve dizinler için:

-type d -ve -not -izin verir 0700

Yukarıdaki operatörler tablosunda belirtildiği gibi, -ve Operatör, varsayılan olarak ima edildiğinden güvenle kaldırılabilir. Yani hepsini bir araya getirirsek, son komutumuzu alırız:

find ~ ( -type f -not -perms 0600 ) -veya ( -type d -not

-perm 0700 )

Ancak, parantezlerin kabuk için özel bir anlamı olduğundan, kabuğun onları yorumlamaya çalışmasını önlemek için onlardan kaçmalıyız. Her birinin önüne bir ters eğik çizgi karakteri koymak hile yapar.

Mantıksal operatörlerin anlaşılması gereken başka bir özelliği daha vardır. Mantıksal bir operatörle ayrılmış iki ifademiz olduğunu varsayalım:

ifade1 -Şebeke ifade2

Her durumda, ifade1 her zaman gerçekleştirilecektir; bununla birlikte, operatör,

ifade2 gerçekleştirilir. İşte nasıl çalıştığı:


Tablo 17-5: VE/VEYA Mantığını bulun


Sonuçları ifade1

Kullanım

ifade2 olduğunu ...

Gerçek

-ve

Her zaman gerçekleştirildi

Yanlış

-ve

hiç performans göstermedi

Gerçek

Ya da

hiç performans göstermedi

Yanlış

Ya da

Her zaman gerçekleştirildi


Bu neden oluyor? Performansı artırmak için yapılır. Almak -ve, Örneğin. ifadesinin olduğunu biliyoruz. ifade1 -ve ifade2 sonucu doğru olamaz ifade1 is


false, bu nedenle ifade2 gerçekleştirmenin bir anlamı yoktur. Aynı şekilde, expr1 ifadesine sahipsek Ya da ifade2 ve ifade1'in sonucu doğru, ifade2 gerçekleştirmenin bir anlamı yok, expr1 ifadesinin zaten bildiğimiz gibi Ya da ifade2 doğrudur.

Tamam, bu yüzden daha hızlı gitmesine yardımcı olur. Bu neden önemli? Bu önemlidir, çünkü yakında göreceğimiz gibi, eylemlerin nasıl gerçekleştirildiğini kontrol etmek için bu davranışa güvenebiliriz.


OnWorks'te En İyi OS Bulut Bilişimi: