Bash Globbing Tutorial

Bash Globbing Tutorial



Το Bash δεν υποστηρίζει φυσικές κανονικές εκφράσεις όπως κάποιες άλλες τυπικές γλώσσες προγραμματισμού. Η δυνατότητα κελύφους Bash που χρησιμοποιείται για αντιστοίχιση ή επέκταση συγκεκριμένων τύπων μοτίβων ονομάζεται σφαιροποίηση. Το Globbing χρησιμοποιείται κυρίως για αντιστοίχιση ονομάτων αρχείων ή αναζήτηση περιεχομένου σε ένα αρχείο. Το Globbing χρησιμοποιεί χαρακτήρες μπαλαντέρ για να δημιουργήσει το μοτίβο. Οι πιο συνηθισμένοι χαρακτήρες μπαλαντέρ που χρησιμοποιούνται για τη δημιουργία μοτίβων σφαιροποίησης περιγράφονται παρακάτω.

‘;’ χρησιμοποιείται για να ταιριάζει με οποιονδήποτε χαρακτήρα. Μπορείς να χρησιμοποιήσεις ‘;’ για πολλές φορές για αντιστοίχιση πολλαπλών χαρακτήρων.







Παράδειγμα-1:



Ας υποθέσουμε ότι θέλετε να αναζητήσετε εκείνα τα ονόματα αρχείων κειμένου των οποίων τα ονόματα είναι 4 χαρακτήρες και η επέκταση είναι .κείμενο Το Μπορείτε να εφαρμόσετε μοτίβο σφαιροποίησης χρησιμοποιώντας το « ; Τέσσερις φορές για να κάνει αυτό το έργο.



Μάθετε τη λίστα με όλα τα αρχεία και το φάκελο του τρέχοντος καταλόγου.





$ls-ο

Εκτελέστε την ακόλουθη εντολή αναζητήστε τα αρχεία των οποίων τα ονόματα έχουν μήκος τέσσερις χαρακτήρες και είναι άγνωστα.

$ ls -l ????. txt



Παράδειγμα-2:

Ας υποθέσουμε ότι θέλετε να αναζητήσετε εκείνα τα αρχεία εγγράφων των οποίων τα ονόματα έχουν μήκος 8 χαρακτήρες, πρώτα 4 χαρακτήρες f, o, o και τ και η επέκταση είναι έγγρ Το Εκτελέστε την ακόλουθη εντολή με μοτίβο σφαιροποίησης για αναζήτηση στα αρχεία.

$ls -οπόδι ????. έγγρ

Παράδειγμα-3:

Ας υποθέσουμε, γνωρίζετε ότι το όνομα αρχείου είναι 'καλύτερος' και η επέκταση έχει μήκος 3 χαρακτήρων, αλλά δεν γνωρίζω την επέκταση. Εκτελέστε την ακόλουθη εντολή χρησιμοποιώντας ‘; »Για αναζήτηση σε όλα τα αρχεία με το όνομα« δοκιμή »με οποιαδήποτε επέκταση τριών χαρακτήρων.

$ls -οκαλύτερος.???

Αστερίσκος - (*)

‘*’ χρησιμοποιείται για να ταιριάζει με μηδέν ή περισσότερους χαρακτήρες. Εάν έχετε λιγότερες πληροφορίες για να αναζητήσετε οποιοδήποτε αρχείο ή πληροφορίες, μπορείτε να χρησιμοποιήσετε ‘*’ σε μοτίβο σφαιροποίησης.

Παράδειγμα -1:

Ας υποθέσουμε ότι θέλετε να αναζητήσετε όλα τα αρχεία του ‘Pl’ επέκταση. Εκτελέστε την ακόλουθη εντολή χρησιμοποιώντας ‘*’ να κάνει αυτό το έργο.

$ls -ο *.pl

Παράδειγμα-2:

Ας υποθέσουμε ότι γνωρίζετε μόνο τον αρχικό χαρακτήρα του ονόματος αρχείου 'προς το' Το Εκτελέστε την ακόλουθη εντολή χρησιμοποιώντας το ‘*’ για να αναζητήσετε όλα τα αρχεία του τρέχοντος καταλόγου με τα ονόματα των οποίων ξεκινούν 'προς το' Το

$ls -οπρος το*Το*

Παράδειγμα-3:

Μπορείτε να εφαρμόσετε το '*' στο σενάριο bash για διάφορους σκοπούς χωρίς αναζήτηση αρχείων. Δημιουργήστε ένα αρχείο bash με όνομα 'Check.sh' με το παρακάτω σενάριο. Εδώ, όταν ο χρήστης θα πληκτρολογήσει « y 'ή' Y 'ή' yes 'ή' Yes ​​' τότε 'επιβεβαιωμένος' θα εκτυπωθεί και πότε θα πληκτρολογήσει ο τύπος «N» ή «N» ή «όχι» ή «Όχι» τότε 'Δεν έχει επιβεβαιωθεί' θα εκτυπώσει.

#!/bin/bash
πέταξε έξω 'Θέλετε να επιβεβαιώσετε;'
ανάγνωσηαπάντηση
υπόθεση $ απάντηση σε
[Yy]* ) πέταξε έξω 'επιβεβαιωμένος.';;
[Αρ]* ) πέταξε έξω 'Δεν έχει επιβεβαιωθεί.';;
*) πέταξε έξω 'Προσπάθησε ξανά.';;
esac

Εκτελέστε το σενάριο.

$κτυπώ δυνατάέλεγχος.σ

Αγκύλη - ([])

‘[]’ χρησιμοποιείται για να ταιριάζει με τον χαρακτήρα από το εύρος. Μερικές από τις πιο συχνά χρησιμοποιούμενες δηλώσεις εύρους αναφέρονται παρακάτω.

Όλα τα κεφαλαία αλφάβητα ορίζονται από το εύρος ως, [: επάνω:] ή [A-Z].

Όλα τα μικρά αλφάβητα ορίζονται από το εύρος ως, [: μικρό:] ή [a-z].

Όλα τα αριθμητικά ψηφία ορίζονται από το εύρος ως, [: ψηφίο:] ή [0-9].

Όλα τα κεφαλαία και τα κατώτερα αλφάβητα ορίζονται από το εύρος ως, [: alpha:] ή [a-zA-z].

Όλα τα κεφαλαία αλφάβητα, το μικρό αλφάβητο και τα ψηφία ορίζονται από το εύρος ως, [: alnum:] ή [a-zA-Z0-9]

Παράδειγμα -1:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε όλα τα αρχεία και τους φακέλους των οποίων το όνομα περιέχει Π ή τι ή ρ ή μικρό Το

$ls -ο [ΥΣΤΕΡΟΓΡΑΦΟ]*

Παράδειγμα-2:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε όλα τα αρχεία και τους φακέλους των οποίων το όνομα ξεκινά με οποιοδήποτε ψηφίο από το 1 έως το 5.

$ls -ο [1-5]*

Του λείπει - (^)

Μπορείς να χρησιμοποιήσεις ‘^’ με τετράγωνη αγκύλη για να ορίσετε πιο συγκεκριμένα το μοτίβο σφαιροποίησης. ‘^’ μπορεί να χρησιμοποιηθεί εντός ή εκτός τετράγωνης αγκύλης. Το '^' χρησιμοποιείται έξω από την τετράγωνη αγκύλη για την αναζήτηση εκείνων των περιεχομένων του αρχείου που ξεκινά με ένα δεδομένο εύρος χαρακτήρων. Το '^' χρησιμοποιείται μέσα στην τετράγωνη αγκύλη για να δείξει όλο το περιεχόμενο του αρχείου επισημαίνοντας τις γραμμές που ξεκινούν με ένα δεδομένο εύρος χαρακτήρων. Μπορείτε να χρησιμοποιήσετε διαφορετικούς τύπους μοτίβων σφαιροποίησης για την αναζήτηση συγκεκριμένου περιεχομένου από ένα αρχείο. 'λαβή' η εντολή χρησιμοποιείται για αναζήτηση περιεχομένου σε bash. Ας υποθέσουμε ότι έχετε ένα αρχείο κειμένου με όνομα 'List.txt' με το ακόλουθο περιεχόμενο. Δοκιμάστε τα παρακάτω παραδείγματα για αυτό το αρχείο.

μήλο
4000
Μπανάνα
700
Πορτοκάλι
850
Αχλάδι
9000
τζακ φρουτ

Παράδειγμα - 1:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε αυτές τις γραμμές list.txt αρχείο που ξεκινά με P ή Q ή R Το

$ grep '^[P-R]' list.txt

Παράδειγμα - 2:

Εκτελέστε την ακόλουθη εντολή για να επισημάνετε αυτές τις γραμμές από list.txt αρχείο που ξεκινά με Α ή Β ή Γ Το

$ grep '[^A-C]' list.txt

Θαυμαστικό - (!)

Μπορείς να χρησιμοποιήσεις '!' μέσα στο μοτίβο εύρους. Λειτουργεί το ίδιο με τη χρήση του συμβόλου '^' εκτός του μοτίβου εύρους. Μερικά παραδείγματα χρήσης '!' το σήμα δίνεται παρακάτω.

Παράδειγμα - 1:

Εκτελέστε την ακόλουθη εντολή για να εμφανίσετε αυτές τις γραμμές από list.txt αρχείο που ξεκινά με «P» ή Q ή R Το

$ grep [! P-R] list.txt

Παράδειγμα - 2:

Εκτελέστε την ακόλουθη εντολή για να εμφανίσετε αυτές τις γραμμές από list.txt αρχείο που ξεκινά με οποιοδήποτε ψηφίο από 4 με 8 Το

$ grep [! 4-8] list.txt

Σήμα δολαρίου - ($)

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

Παράδειγμα - 1:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε αυτές τις γραμμές list.txt αρχείο που τελειώνει με 'προς το' Το

$ grep a $ list.txt

Παράδειγμα - 2:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε αυτές τις γραμμές list.txt αρχείο που τελειώνει με τον αριθμό πενήντα Το

$ grep 50 $ list.txt

Βραχίονας αγκύλης - ({})

'{}' μπορεί να χρησιμοποιηθεί για αντιστοίχιση ονομάτων αρχείων με περισσότερα από ένα μοτίβα σφαιροποίησης. Κάθε μοτίβο χωρίζεται με ',' σε σγουρά αγκύλες χωρίς καθόλου κενό. Μερικά παραδείγματα δίνονται παρακάτω.

Παράδειγμα - 1:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε τα αρχεία των οποίων τα ονόματα έχουν μήκος 5 χαρακτήρες και η επέκταση είναι 'SH' ή οι δύο τελευταίοι χαρακτήρες των αρχείων είναι 'St' και η επέκταση είναι 'κείμενο' Το

$ ls -l {?????. sh,*st.txt}

Παράδειγμα - 2:

Εκτελέστε την ακόλουθη εντολή για να διαγράψετε όλα τα αρχεία των οποίων οι επεκτάσεις είναι «Doc» ή «docx» Το

$rm {*.doc,*.docx}

Σωλήνας– (|)

Το σύμβολο «|» χρησιμοποιείται επίσης για την εφαρμογή περισσότερων από έναν όρων στο μοτίβο σφαιροποίησης. Κάθε μοτίβο χωρίζεται με το σύμβολο '|' στην εντολή.

Παράδειγμα - 1:

Εκτελέστε την ακόλουθη εντολή για να αναζητήσετε αυτά τα ονόματα αρχείων που ξεκινούν με τον χαρακτήρα 'a' και έχουν την επέκταση 'bash' ή 'sh'.

$lsπρος το*+(.κτυπώ δυνατά|.SH)

Παράδειγμα - 2:

Δημιουργήστε ένα αρχείο bash με όνομα ‘Menu.bash’ και προσθέστε το παρακάτω σενάριο. Εάν ο τύπος χρήστη 1 ή S τότε θα εκτυπώσει Αναζήτηση κειμένου Το Εάν ο τύπος χρήστη 2 ή R τότε θα εκτυπώσει Αντικατάσταση κειμένου Το Εάν ο τύπος χρήστη 3 ή Δ τότε θα εκτυπώσει Διαγραφή κειμένου Το Θα εκτυπώσει Προσπάθησε ξανά για οποιαδήποτε άλλη είσοδο.

#!/bin/bash
πέταξε έξω 'Επιλέξτε οποιαδήποτε επιλογή από το μενού:'
ανάγνωσηαπάντηση
υπόθεση $ απάντηση σε
1 |μικρό) πέταξε έξω 'Αναζήτηση κειμένου';;
2 |R) πέταξε έξω 'Αντικατάσταση κειμένου';;
3 |ρε) πέταξε έξω 'Διαγραφή κειμένου';;
*) πέταξε έξω 'Προσπάθησε ξανά.';;
esac

Εκτελέστε το σενάριο.

$κτυπώ δυνατάmenu.bash

ΣΥΜΠΕΡΑΣΜΑ

Μερικά από τα πιο συχνά χρησιμοποιούμενα μοτίβα σφαιροποίησης εξηγούνται σε αυτό το σεμινάριο χρησιμοποιώντας πολύ απλά παραδείγματα. Ελπίζω ότι μετά την εξάσκηση των παραπάνω παραδειγμάτων, η έννοια του globbing θα είναι σαφής σε εσάς και θα μπορείτε να την εφαρμόσετε με επιτυχία σε εντολές και σενάρια bash.

Για περισσότερες πληροφορίες δείτε αυτό το βίντεο: