OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

مشغلي

حتى مع كل الاختبارات جد يوفر ، قد لا نزال بحاجة إلى طريقة أفضل لوصف العلاقات المنطقية بين الاختبارات. على سبيل المثال ، ماذا لو احتجنا إلى تحديد ما إذا كانت جميع الملفات والأدلة الفرعية في دليل ما لها أذونات آمنة؟ سنبحث عن جميع الملفات التي لها أذونات ليست 0600 والأدلة التي لها أذونات ليست 0700. لحسن الحظ ، جد يوفر طريقة للجمع بين الاختبارات باستخدام العوامل المنطقية


لخلق علاقات منطقية أكثر تعقيدًا. للتعبير عن الاختبار المذكور أعلاه ، يمكننا القيام بذلك:



[me @ linuxbox ~] $ أوجد ~ \ (-type f -not -perm 0600 \) -or \ (-type d

- ليس - 0700 \)

[me @ linuxbox ~] $ أوجد ~ \ (-type f -not -perm 0600 \) -or \ (-type d

- ليس - 0700 \)


ييكيس! هذا بالتأكيد يبدو غريبا. ما هو كل هذه الأشياء؟ في الواقع ، لن يصبح المشغلون بهذه التعقيد بمجرد التعرف عليهم. هنا القائمة:


جدول 17-4: أوجد العوامل المنطقية


وصف المشغل

وصف المشغل

تطابق إذا كانت الاختبارات على جانبي المشغل صحيحة. يمكن تقصيرها إلى -a. لاحظ أنه في حالة عدم وجود عامل ، بشكل افتراضي.


صورة

أو تطابق إذا كان الاختبار على أي من جانبي المشغل صحيحًا. يمكن تقصيرها إلى -o.


صورة

-لاt تطابق إذا كان الاختبار التالي للمشغل خاطئًا. يمكن اختصارها بعلامة تعجب (!).


صورة

() قم بتجميع الاختبارات والمشغلين معًا لتكوين تعبيرات أكبر. يستخدم هذا للتحكم في أسبقية التقييمات المنطقية. بشكل افتراضي، جد بتقييم من اليسار إلى اليمين. غالبًا ما يكون من الضروري تجاوز أمر التقييم الافتراضي للحصول على النتيجة المرجوة. حتى لو لم تكن هناك حاجة ، فمن المفيد أحيانًا تضمين أحرف التجميع لتحسين إمكانية قراءة الأمر. لاحظ أنه نظرًا لأن أحرف الأقواس لها معنى خاص في الغلاف ، فيجب نقلها عند استخدامها في سطر الأوامر للسماح بتمريرها كوسيطات إلى جد. عادةً ما يتم استخدام حرف الخط المائل العكسي للهروب منها.


صورة


مع وجود قائمة العوامل هذه ، دعنا نفكك جد أمر. عند المشاهدة من المستوى الأعلى ، نرى أن اختباراتنا مرتبة كمجموعتين مفصولة بامتداد أو المشغل أو العامل:

( التعبير 1 ) -أو ( التعبير 2 )

هذا أمر منطقي ، لأننا نبحث عن الملفات بمجموعة معينة من الأذونات والأدلة بمجموعة مختلفة. إذا كنا نبحث عن كل من الملفات والأدلة ، فلماذا نقوم بذلك


نحن نستخدم أو بدلا من ؟ لأنه كما جد يمسح من خلال الملفات والأدلة ، يتم تقييم كل منها لمعرفة ما إذا كان يتطابق مع الاختبارات المحددة. نريد أن نعرف ما إذا كان كذلك إما ملف ذو أذونات سيئة or دليل بأذونات سيئة. لا يمكن أن يكون كلاهما في نفس الوقت. لذلك إذا قمنا بتوسيع التعبيرات المجمعة ، فيمكننا رؤيتها بهذه الطريقة:

(ملف مع التصاريح السيئة) - أو (دليل مع التصاريح السيئة)

يتمثل التحدي التالي في كيفية اختبار "الأذونات السيئة". كيف نفعل ذلك؟ في الواقع نحن لا نفعل ذلك. ما سنختبره هو "الأذونات غير الجيدة" ، لأننا نعرف ما هي "المهام الجيدة". في حالة الملفات ، نعرّف جيدة كـ 0600 وللأدلة ، كـ 0700. التعبير الذي سيختبر الملفات للأذونات "غير الجيدة" هو:

- النوع و - وليس - البذور 0600

وللأدلة:

-النوع د- وليس- البذور 0700

كما هو مذكور في جدول المشغلين أعلاه ، فإن يمكن إزالة العامل بأمان ، لأنه ضمني بشكل افتراضي. لذلك إذا أعدنا كل هذا معًا ، فسنحصل على أمرنا النهائي:

اعثر على ~ (-type f -not -perms 0600) -or (-type d -not

-النبير 0700)

ومع ذلك ، نظرًا لأن الأقواس لها معنى خاص للقشرة ، يجب علينا الهروب منها لمنع الغلاف من محاولة تفسيرها. تؤدي الحيلة قبل كل حرف بخط مائل عكسي.

هناك ميزة أخرى من العوامل المنطقية التي من المهم أن نفهمها. لنفترض أن لدينا تعبيرين يفصل بينهما عامل منطقي:

إكسبر 1 -المشغل أو العامل إكسبر 2

في جميع الحالات، إكسبر 1 سيتم تنفيذها دائمًا ؛ ومع ذلك ، سيحدد المشغل ما إذا كان

يتم تنفيذ expr2. وإليك كيف يعمل:


جدول 17-5: ابحث عن منطق AND / OR


نتائج إكسبر 1

المُشغل

إكسبر 2 هو ...

صواب

يؤدى دائما

خطأ

لم يتم أداؤها

صواب

أو

لم يتم أداؤها

خطأ

أو

يؤدى دائما


لماذا يحدث هذا؟ تم القيام به لتحسين الأداء. يأخذ ، على سبيل المثال. نحن نعلم أن التعبير إكسبر 1 إكسبر 2 لا يمكن أن يكون صحيحًا إذا كانت النتيجة إكسبر 1 is


خطأ ، لذلك ليس هناك فائدة من أداء expr2. وبالمثل ، إذا كان لدينا التعبير expr1 أو expr2 ونتيجة expr1 صحيحة ، فلا جدوى من أداء expr2, كما نعلم بالفعل أن التعبير expr1 أو expr2 صحيح.

حسنًا ، فهي تساعد في زيادة سرعتها. لماذا هذا مهم؟ إنه أمر مهم لأنه يمكننا الاعتماد على هذا السلوك للتحكم في كيفية تنفيذ الإجراءات ، كما سنرى قريبًا.


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: