تعبيرات الملف
تستخدم التعبيرات التالية لتقييم حالة الملفات:
جدول 27-1: اختبار تعبيرات الملف
يكون التعبير صحيحًا إذا:
يكون التعبير صحيحًا إذا:
file1 -ef file2 file1 و file2 لهما نفس أرقام inode (الاثنان
أسماء الملفات تشير إلى نفس الملف عن طريق الربط الثابت).
file1 -لا file2 file1 أحدث من file2.
file1 -لا file2 file1 أقدم من file2.
-b ملف ملف موجود وهو ملف بلوك خاص (جهاز).
-c ملف ملف موجود وهو ملف خاص بالحرف (جهاز).
-d ملف ملف موجود وهو دليل.
-e ملف ملف موجودا.
-f ملف ملف موجود وهو ملف عادي.
-g ملف ملف موجود وهو set-group-ID.
-G ملف ملف موجود ويملكه معرف المجموعة الفعال.
-k ملف ملف موجود ولديه مجموعة "بت اللزجة".
-L ملف ملف موجود وهو رابط رمزي.
-O ملف ملف موجود ويملكه معرف المستخدم الفعال.
-p ملف ملف موجود وهو أنبوب مسمى.
-r ملف ملف موجود وقابل للقراءة (لديه إذن مقروء للمستخدم الفعال).
-s ملف ملف موجود وطوله أكبر من الصفر.
-S ملف ملف موجود وهو مقبس شبكة.
-t fd fd هو واصف ملف موجه إلى / من الجهاز. يمكن استخدام هذا لتحديد ما إذا كان يتم إعادة توجيه الإدخال / الإخراج / الخطأ القياسي.
-u ملف ملف موجود وهو محدد.
-w ملف ملف موجود وقابل للكتابة (لديه إذن كتابة للمستخدم الفعال).
-x ملف ملف موجود وقابل للتنفيذ (لديه إذن تنفيذ / بحث للمستخدم الفعال).
هنا لدينا برنامج نصي يوضح بعض تعبيرات الملف:
#! / بن / باش
# test-file: قم بتقييم حالة الملف FILE = ~ / .bashrc
إذا [-e "$ FILE"] ؛ من ثم
إذا [-f "$ FILE"] ؛ من ثم
صدى "$ FILE هو ملف عادي."
fi
إذا [-d "$ FILE"] ؛ من ثم
صدى "$ FILE هو دليل."
fi
إذا [-r "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للقراءة."
fi
إذا [-w "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للكتابة."
fi
إذا [-x "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للتنفيذ / قابل للبحث."
#! / بن / باش
# test-file: قم بتقييم حالة الملف FILE = ~ / .bashrc
إذا [-e "$ FILE"] ؛ من ثم
إذا [-f "$ FILE"] ؛ من ثم
صدى "$ FILE هو ملف عادي."
fi
إذا [-d "$ FILE"] ؛ من ثم
صدى "$ FILE هو دليل."
fi
إذا [-r "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للقراءة."
fi
إذا [-w "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للكتابة."
fi
إذا [-x "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للتنفيذ / قابل للبحث."
فاي آخر
صدى "$ FILE غير موجود" خروج 1
fi
خروج
فاي آخر
صدى "$ FILE غير موجود" خروج 1
fi
خروج
يقوم البرنامج النصي بتقييم الملف المخصص للثابت FILE ويعرض نتائجه أثناء إجراء التقييم. هناك شيئان مثيران للاهتمام يجب ملاحظتهما حول هذا البرنامج النصي. أولا ، لاحظ كيف المعلمة ملف دولار ونقلت ضمن التعبيرات. هذا ليس مطلوبًا لإكمال التعبير نحويًا ، بل هو دفاع ضد كون المعلمة فارغة. إذا كان توسيع المعلمة من ملف دولار كان من المفترض أن ينتج عنه قيمة فارغة ، فسيؤدي ذلك إلى حدوث خطأ (سيتم تفسير العوامل على أنها سلاسل غير خالية بدلاً من عوامل تشغيل). يضمن استخدام علامات الاقتباس حول المعلمة أن العامل متبوع دائمًا بسلسلة ، حتى لو كانت السلسلة فارغة. ثانيًا ، لاحظ وجود ملف خروج com- mand بالقرب من نهاية البرنامج النصي. ال خروج يقبل الأمر وسيطة اختيارية واحدة ، والتي تصبح حالة خروج البرنامج النصي. عندما لا يتم تمرير أي وسيطة ، تتراجع حالة الخروج إلى حالة الخروج لآخر أمر تم تنفيذه. استخدام خروج بهذه الطريقة يسمح البرنامج النصي للإشارة إلى الفشل إذا ملف دولار يوسع إلى اسم ملف غير موجود. ال خروج يظهر الأمر في السطر الأخير من البرنامج النصي كإجراء شكلي. عندما "ينتهي البرنامج النصي" (يصل إلى نهاية الملف) ، فإنه ينتهي بحالة الخروج لآخر أمر تم تنفيذه.
وبالمثل ، يمكن أن تعيد دوال الصدفة حالة الخروج من خلال تضمين وسيطة عدد صحيح إلى عائد أعلى أمر. إذا أردنا تحويل البرنامج النصي أعلاه إلى دالة shell لإدراجه في برنامج أكبر ، فيمكننا استبدال خروج أوامر مع عائد أعلى العبارات والحصول على السلوك المطلوب:
ملف_اختبار () {
# test-file: قم بتقييم حالة الملف FILE = ~ / .bashrc
إذا [-e "$ FILE"] ؛ من ثم
إذا [-f "$ FILE"] ؛ من ثم
صدى "$ FILE هو ملف عادي."
fi
إذا [-d "$ FILE"] ؛ من ثم
صدى "$ FILE هو دليل."
fi
إذا [-r "$ FILE"] ؛ من ثم
ملف_اختبار () {
# test-file: قم بتقييم حالة الملف FILE = ~ / .bashrc
إذا [-e "$ FILE"] ؛ من ثم
إذا [-f "$ FILE"] ؛ من ثم
صدى "$ FILE هو ملف عادي."
fi
إذا [-d "$ FILE"] ؛ من ثم
صدى "$ FILE هو دليل."
fi
إذا [-r "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للقراءة."
fi
إذا [-w "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للكتابة."
fi
إذا [-x "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للتنفيذ / قابل للبحث."
fi
آخر
صدى "$ FILE غير موجود" إرجاع 1
fi
}
صدى "$ FILE قابل للقراءة."
fi
إذا [-w "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للكتابة."
fi
إذا [-x "$ FILE"] ؛ من ثم
صدى "$ FILE قابل للتنفيذ / قابل للبحث."
fi
آخر
صدى "$ FILE غير موجود" إرجاع 1
fi
}