OnWorks Linux و Windows Online WorkStations

الشعار

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

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

تدريب المشغلين والتقنيين

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


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



[me @ linuxbox ~] $ ابحث عن ~ \( -type f -not -perm 0600 \) -or \( -type d

-ليس -perm 0700 \)

[me @ linuxbox ~] $ ابحث عن ~ \( -type f -not -perm 0600 \) -or \( -type d

-ليس -perm 0700 \)


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


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


وصف المشغل

وصف المشغل

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


صورة

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


صورة

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


صورة

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


صورة


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

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

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


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

(ملف ذو أذونات سيئة) -أو (دليل ذو أذونات سيئة)

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

-النوع f -و-لا-الأذونات 0600

وللدلائل:

-النوع d -و-لا-الأذونات 0700

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

ابحث عن ~ (-type f -not -perms 0600) -أو (-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: