ذكري المظهر

كيفية التحقق من وجود ملف أو دليل في bash

إختبار الحمل في المنزل بماء جافيل (الكلور) طريقة فعالة وناجحة 100/100

إختبار الحمل في المنزل بماء جافيل (الكلور) طريقة فعالة وناجحة 100/100

جدول المحتويات:

Anonim

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

في Bash ، يمكنك استخدام الأمر test للتحقق مما إذا كان الملف موجودًا وتحديد نوع الملف.

يأخذ أمر الاختبار أحد أشكال بناء الجملة التالية:

test EXPRESSION]

تحقق مما إذا كان الملف موجودًا

عند التحقق من وجود ملف ، فإن أكثر مشغلي FILE استخدامًا هم -e و -f . سيتحقق أول ما إذا كان الملف موجودًا بغض النظر عن النوع ، في حين أن الملف الثاني سيعود صحيحًا فقط إذا كان الملف هو ملف عادي (وليس دليلًا أو جهازًا).

الخيار الأكثر قابلية للقراءة عند التحقق من وجود ملف أو عدم وجوده هو استخدام أمر الاختبار بالاقتران مع عبارة if. سيتحقق أي من المقتطفات أدناه مما إذا كان الملف /etc/resolv.conf موجودًا:

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

إذا كنت تريد تنفيذ إجراء مختلف استنادًا إلى ما إذا كان الملف موجودًا أم لا ، فما عليك سوى استخدام if / ثم build:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi استخدم دائمًا علامات اقتباس مزدوجة لتجنب المشكلات عند التعامل مع الملفات التي تحتوي على مسافة بيضاء في أسمائها.

يمكنك أيضًا استخدام الأمر test بدون عبارة if. لن يتم تنفيذ الأمر بعد المشغل && إلا إذا كانت حالة الخروج من أمر الاختبار صحيحة ،

test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

مقابل && ، البيان بعد || لن يتم تنفيذ عامل التشغيل إلا إذا كانت حالة خروج أمر الاختبار false .

&& echo "$FILE exist" || echo "$FILE does not exist"

تحقق من وجود دليل

يسمح لك المشغلون -d باختبار ما إذا كان الملف هو دليل أم لا.

على سبيل المثال ، للتحقق من وجود دليل /etc/docker ستستخدم:

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

يمكنك أيضًا استخدام الأقواس المزدوجة , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

تحقق مما إذا كان الملف غير موجود

على غرار العديد من اللغات الأخرى ، يمكن إلغاء التعبير التجريبي باستخدام ! (علامة التعجب) المنطقية وليس عامل التشغيل:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

كما هو مذكور أعلاه:

&& echo "$FILE does not exist"

تحقق من وجود ملفات متعددة

بدلاً من استخدام متداخلة معقدة إذا / / يمكنك إنشاء -a يمكنك استخدام -a (أو && ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

المتغيرات المكافئة دون استخدام عبارة IF:

&& echo "both files exist"

] && echo "both files exist"

مشغلي اختبار الملف

يتضمن أمر الاختبار عوامل تشغيل FILE التالية التي تسمح لك باختبار أنواع معينة من الملفات:

  • -b FILE - صواب إذا كان الملف موجودًا وهو ملف كتلة خاص. -c FILE - صواب في حالة وجود الملف وملف حرف خاص. -d FILE - صواب في حالة وجود الملف وهو دليل. -e FILE - صواب إذا كان الملف موجودًا وكان ملفًا ، بغض النظر عن النوع (العقدة ، الدليل ، المقبس ، إلخ). -f FILE - صواب إذا كان الملف موجودًا وكان ملفًا عاديًا (وليس دليلًا أو جهازًا). -G FILE - صواب إذا كان الملف موجودًا وله نفس المجموعة مثل المستخدم الذي يقوم بتشغيل الأمر. -h FILE - صحيح إذا كان الملف موجودًا وهو رابط رمزي. -g FILE - صواب في حالة وجود FILE وله مجموعة إشارة مجموعة معرف مجموعة (sgid). -k FILE - صواب إذا كان الملف موجودًا ولديه مجموعة إشارة لاصقة. -L FILE - صحيح إذا كان الملف موجودًا وهو رابط رمزي. -O FILE - صواب إذا كان الملف موجودًا ومملوكًا للمستخدم الذي يقوم بتشغيل الأمر. -p FILE - صحيح إذا كان الملف موجودًا وأنبوبًا. -r FILE - صواب إذا كان الملف موجودًا وقابل للقراءة. -S FILE - صحيح إذا كان الملف موجودًا ومقبسًا. -s FILE - صواب إذا كان الملف موجودًا وله حجم غير صفري. -u FILE - صواب في حالة تعيين علامة معرف المستخدم (suid) الموجودة. -w FILE - صحيح إذا كان الملف موجودًا وقابل للكتابة. -x FILE - صواب إذا كان الملف موجودًا وقابل للتنفيذ.

استنتاج

في هذا الدليل ، أوضحنا لك كيفية التحقق من وجود ملف أو دليل باستخدام Bash.

محطة باش