Εισαγωγή
που είναι
εγκατάσταση
οι οποίες
τύπος
εύρημα
Εισαγωγή
Υπάρχουν πέντε εντολές αναζήτηση αρχείων στο Linux: whereis, locate, which, type, και find. Κάθε ένα από αυτά έχει τα δικά του χαρακτηριστικά και έχει σχεδιαστεί για συγκεκριμένα σενάρια αναζήτησης. Αυτός ο οδηγός θα σας παρουσιάσει κάθε εντολή και θα δείξει παραδείγματα χρήσεων. Για περαιτέρω ανάγνωση οποιασδήποτε από αυτές τις εντολές, είναι καλύτερο να ανατρέξετε στην κατάλληλη σελίδα διαχείρισης.
whereis
Η whereisεντολή χρησιμοποιείται για την αναζήτηση δυαδικών αρχείων, πηγαίου κώδικα και των ηλεκτρονικών σελίδων εγχειριδίου σε πολλούς τυπικούς καταλόγους εγκατάστασης για οποιοδήποτε όνομα προγράμματος έχει καθοριστεί.
Επειδή whereisδεν πραγματοποιεί αναζήτηση σε κάθε τοποθεσία στο σύστημά σας, δεν θα βρεθούν αρχεία από αυτούς τους συγκεκριμένους καταλόγους. Για τον ίδιο λόγο, θα λάβετε γρήγορα το αποτέλεσμα της αναζήτησής σας, είτε βρέθηκε είτε όχι.
Επίσης, δεν θα αναζητήσει εκείνες τις εντολές που είναι ενσωματωμένες απευθείας στο κέλυφος.
Για παράδειγμα, εάν θέλετε να βρείτε πληροφορίες σχετικά με την lsεντολή, εκτελέστε την ακόλουθη εντολή στο τερματικό σας:
whereis ls
Θα λάβετε κάποια σχόλια όπως:
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Ως αποτέλεσμα, /bin/lsείναι το δυαδικό αρχείο που θέλετε να εντοπίσετε, τα άλλα δύο είναι manpages για το lsπρόγραμμα, δεν lsβρέθηκε πηγαίος κώδικας για το πρόγραμμα.
Αντιγράψτε το /bin/lsαρχείο στον αρχικό σας κατάλογο και στον /usr/binκατάλογο και, στη συνέχεια, εκτελέστε whereisξανά την εντολή:
cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls
Όπως βλέπετε, βρέθηκαν μόνο /bin/lsκαι /usr/bin/lsστο αποτέλεσμα αναζήτησης. Το lsπρόγραμμα στον αρχικό σας κατάλογο δεν βρέθηκε, επειδή ο οικιακός σας κατάλογος δεν είναι ένας από αυτούς τους τυπικούς καταλόγους εγκατάστασης.
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Εάν εκτελέσετε την ακόλουθη εντολή:
whereis cd
Θα δείτε έξοδο παρόμοια με την παρακάτω γραμμή. Δεν βρέθηκε κανένα δυαδικό αρχείο επειδή cdείναι μια ενσωματωμένη εντολή του κελύφους.
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
locate
Η locateεντολή χρησιμοποιείται για την εύρεση αρχείων με βάση το όνομα με τη βοήθεια μιας βάσης δεδομένων ( /var/lib/mlocate/mlocate.db). Αυτή η βάση δεδομένων είναι βασικά ένα στιγμιότυπο της διάταξης του συστήματος αρχείων σας. Τυχόν εγγραφές σε αυτήν τη βάση δεδομένων που ταιριάζουν με το ερώτημά σας θα παρατίθενται στο αποτέλεσμα αναζήτησης. Από προεπιλογή, η locateεντολή θα χρησιμοποιήσει το ερώτημά σας για να αντιστοιχίσει οποιοδήποτε μέρος του ολόκληρου ονόματος κάθε εγγραφής, συμπεριλαμβανομένου του ονόματος διαδρομής. Επομένως, ο αριθμός των αντιστοιχισμένων αρχείων στο αποτέλεσμα αναζήτησης θα μπορούσε να είναι μεγαλύτερος από τον αναμενόμενο.
Καθώς η βάση δεδομένων γίνεται ξεπερασμένη, το αποτέλεσμα αναζήτησης της locateεντολής γίνεται λιγότερο ακριβές. Μπορεί να παρατηρήσετε αρχεία που δεν υπάρχουν πλέον ή δεν θα δείτε αντιστοιχίσεις για αρχεία που δημιουργήθηκαν πρόσφατα. Από προεπιλογή, η mlocate.dbβάση δεδομένων ενημερώνεται αυτόματα μία φορά την ημέρα. Μπορείτε να χρησιμοποιήσετε την updatedbεντολή για μη αυτόματη ενημέρωση.
Επειδή η αναζήτηση εκτελείται στη βάση δεδομένων αντί για το σύστημα αρχείων, η ταχύτητα αναζήτησης είναι πολύ γρήγορη.
Εάν εκτελέσετε την ακόλουθη εντολή:
locate ls
Θα λάβετε πολλά ρεκόρ αντί για το αναμενόμενο αποτέλεσμα.
Για να κάνετε το αποτέλεσμα αναζήτησης πιο ακριβές, μπορείτε να χρησιμοποιήσετε τη -bσημαία για να περιορίσετε το εύρος αναζήτησης, χρησιμοποιώντας το ερώτημά σας για να ταιριάζει μόνο με το όνομα βάσης κάθε εγγραφής:
locate -b "\ls"
Αυτή τη φορά, θα λάβετε τη θέση κάθε αρχείου που καλείται ακριβώς lsστο σύστημα αρχείων σας:
/bin/ls
which
Η whichεντολή θα αναζητήσει την εντολή που καθορίσατε στην τιμή της μεταβλητής περιβάλλοντος PATHκαι θα επιστρέψει το πρώτο αποτέλεσμα από προεπιλογή. Εάν ζητάτε ένα ψευδώνυμο, η whichεντολή θα καθορίσει την πραγματική εντολή για το ψευδώνυμο πριν εκτελέσετε την αναζήτησή σας.
Η whichεντολή είναι επίσης πολύ γρήγορη λόγω της απλότητάς της.
Η χρήση της whichεντολής είναι απλή:
which your_command
Εάν θέλετε να εμφανίσετε όλες τις αντιστοιχισμένες εντολές αντί για την πρώτη, χρησιμοποιήστε τη -aσημαία:
which -a your_command
Ακολουθεί ένα παράδειγμα για την αναζήτηση μιας εντολής που έχει ονομαστεί ψευδώνυμο:
which ll
Το αποτέλεσμα αναζήτησης θα ήταν:
alias ll='ls -l --color=auto'
/bin/ls
type
Από προεπιλογή, η typeεντολή θα υποδεικνύει πώς θα ερμηνευόταν ένα όνομα εντολής. Τα πιθανά αποτελέσματα περιλαμβάνουν ένα ψευδώνυμο, μια λέξη-κλειδί, μια συνάρτηση, ένα ενσωματωμένο ή ένα αρχείο. Ακριβώς όπως η whereisεντολή, η typeεντολή θα πραγματοποιήσει αναζήτηση μόνο σε αρκετούς τυπικούς καταλόγους εγκατάστασης για να απαντήσει στο ερώτημά σας.
Μερικά παραδείγματα για την πληκτρολόγηση διαφορετικών εντολών:
Μια εντολή ενσωματωμένη στο κέλυφος:
type cd
cd is a shell builtin
Ένα δυαδικό αρχείο στο σύστημα αρχείων:
type sudo
sudo is /usr/bin/sudo
Ένα ψευδώνυμο:
type ls
ls is aliased to `ls --color=auto'
find
Μεταξύ των πέντε εντολών αναζήτησης αρχείων που παρουσιάζονται σε αυτό το σεμινάριο, η findεντολή είναι η πιο ισχυρή. Είναι επίσης το πιο αργό. Σε αντίθεση με τις άλλες τέσσερις εντολές, η findεντολή θα αναζητήσει πραγματικά το αρχείο σας σε ολόκληρο το σύστημα αρχείων, ένα i-node προς έναν i-node. Με την findεντολή, μπορείτε να χρησιμοποιήσετε εξελιγμένα κριτήρια ερωτήματος για να βρείτε κάθε αρχείο που χρειάζεστε, ακόμη και να εκτελέσετε επιπλέον ενέργειες στα αρχεία που βρέθηκαν.
Τα κριτήρια αναζήτησης για την findεντολή είναι πολύ περίπλοκα για να εξηγηθούν σε ένα τόσο σύντομο άρθρο. Ακολουθούν μερικά παραδείγματα.
Βασική μορφή της findεντολής:
find [path] [option] [action]
Για να βρείτε όλα τα αρχεία στον κατάλογο εργασίας και όλους τους υποκαταλόγους του:
find
Για να βρείτε ένα αρχείο που ονομάζεται aaaστον αρχικό σας κατάλογο και σε όλους τους υποκαταλόγους του:
find ~ -name 'aaa'
Για να βρείτε όλα τα αρχεία στο σύστημα αρχείων που τροποποιήθηκαν τις τελευταίες 24 ώρες:
find / -mtime 0
Για να βρείτε όλα τα αρχεία στον κατάλογο Ιστού και όλους τους υποκαταλόγους του που ανήκουν στον χρήστη nginx:
find /usr/share/nginx/html/ -user nginx
Για να βρείτε όλα τα αρχεία στον κατάλογο εργασίας των οποίων τα δικαιώματα είναι 0744:
find -perm -0744
Για να βρείτε ένα αρχείο με το όνομα aaaστον κατάλογο εργασίας και να απαριθμήσετε τις λεπτομερείς πληροφορίες του:
find -name 'aaa' -exec ls -l {} \;