Android

Πώς να ελέγξετε εάν υπάρχει ένα αρχείο ή κατάλογος στο bash

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox

Πίνακας περιεχομένων:

Anonim

Πολλές φορές όταν γράφετε σενάρια Shell, μπορεί να βρεθείτε σε μια κατάσταση όπου πρέπει να εκτελέσετε μια ενέργεια που βασίζεται στο αν υπάρχει ένα αρχείο ή όχι.

Στο Bash, μπορείτε να χρησιμοποιήσετε την εντολή δοκιμής για να ελέγξετε αν υπάρχει αρχείο και να καθορίσετε τον τύπο του αρχείου.

Η εντολή δοκιμής λαμβάνει μία από τις ακόλουθες μορφές σύνταξης:

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

Αν θέλετε να εκτελέσετε μια διαφορετική ενέργεια βάσει του αν υπάρχει αρχείο ή απλά να χρησιμοποιήσετε το construct if / then:

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"

Ελέγξτε αν υπάρχουν πολλά αρχεία

Αντί να χρησιμοποιείτε περίπλοκες ενσωματωμένες κατασκευές if / else μπορείτε να χρησιμοποιήσετε -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 - Αληθινό αν το ΑΡΧΕΙΟ υπάρχει και είναι αναγνώσιμο. -S FILE - Αληθινό αν υπάρχει το ΑΡΧΕΙΟ και είναι υποδοχή. -s FILE - Αληθινό αν το ΑΡΧΕΙΟ υπάρχει και έχει μέγεθος μη-ζωνών. -u FILE - Είναι αληθές εάν έχει οριστεί η υπάρχουσα σημαία id και set-user-id (suid). -w FILE - Αληθές αν το ΑΡΧΕΙΟ υπάρχει και είναι εγγράψιμο. -x FILE - Αληθινό αν το ΑΡΧΕΙΟ υπάρχει και είναι εκτελέσιμο.

συμπέρασμα

Σε αυτόν τον οδηγό, σας δείξαμε πώς μπορείτε να ελέγξετε εάν υπάρχει ένα αρχείο ή κατάλογος χρησιμοποιώντας το Bash.

bash terminal