אנדרואיד

כיצד לבדוק אם קיים קובץ או ספרייה ב- bash

תוכן עניינים:

Anonim

פעמים רבות בעת כתיבת סקריפטים של Shell, אתה עלול למצוא את עצמך במצב שאתה צריך לבצע פעולה על סמך האם קיים קובץ או לא.

באש, באפשרותך להשתמש בפקודת הבדיקה כדי לבדוק אם קיים קובץ ולקבוע את סוג הקובץ.

פקודת הבדיקה לומדת אחת מצורות התחביר הבאות:

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 / ואז:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi השתמש תמיד בציטוטים כפולים כדי להימנע מבעיות בעת התמודדות עם קבצים המכילים מרווח לבן בשמותיהם.

אתה יכול גם להשתמש בפקודת הבדיקה ללא הצהרת 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 (או && עם ; 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 - נכון אם הקובץ קיים ויש לו קבוצת דגל מזהה-קבוצה (sgid). -k FILE - נכון אם הקובץ קיים ויש לו דגל דגל דביק. -L FILE - נכון אם הקובץ קיים והוא קישור סמלי. -O FILE - נכון אם הקובץ קיים ונמצא בבעלות המשתמש שמריץ את הפקודה. -p FILE - נכון אם הקובץ קיים ומהווה צינור. -r FILE - נכון אם הקובץ קיים וקריא. - FILE - נכון אם הקובץ קיים ושקע. -s FILE - נכון אם הקובץ קיים ובגודל לא-נמוך. -u FILE - נכון אם מוגדר הדגל קיים ו- id-user-id (suid). -w FILE - נכון אם הקובץ קיים וניתן לכתיבה. -x FILE - נכון אם הקובץ קיים וניתן להפעלה.

סיכום

במדריך זה הראינו לכם כיצד לבדוק אם קיים קובץ או ספריה באמצעות Bash.

מסוף bash