Words at War: The Veteran Comes Back / One Man Air Force / Journey Through Chaos
Πίνακας περιεχομένων:
- Σύνταξη εντολών Grep
- Πώς να χρησιμοποιήσετε
grepγια να αναζητήσετε ένα string σε αρχεία - Επαναφορά αντιστοίχισης (Εξαίρεση)
- Πώς να χρησιμοποιήσετε το Grep για να αναζητήσετε μια συμβολοσειρά στην έξοδο εντολών
- Αναδρομική αναζήτηση
- Εμφάνιση μόνο του ονόματος αρχείου
- Ανίχνευση ανίχνευσης περιπτώσεων
- Αναζήτηση πλήρων λέξεων
- Εμφάνιση γραμμών αριθμών
- Μετρητές αρίθμησης
- Αναζήτηση πολλαπλών χορδών (μοτίβα)
- Ήσυχη λειτουργία
- Βασική κανονική έκφραση
- Εκτεταμένες κανονικές εκφράσεις
- Γραμμές εκτύπωσης πριν από έναν αγώνα
- Γραμμές εκτύπωσης μετά από έναν αγώνα
- συμπέρασμα
Η εντολή
grep
που αντιπροσωπεύει την "παγκόσμια κανονική εκτύπωση" είναι μία από τις πιο ισχυρές και συχνά χρησιμοποιούμενες εντολές στο Linux.
Το Grep αναζητά ένα ή περισσότερα αρχεία εισόδου για γραμμές που ταιριάζουν με ένα συγκεκριμένο μοτίβο και γράφει κάθε γραμμή που ταιριάζει με την τυπική έξοδο. Εάν δεν έχουν οριστεί αρχεία, το
grep
διαβάζει από την τυπική είσοδο, η οποία είναι συνήθως η έξοδος μιας άλλης εντολής.
Σε αυτό το σεμινάριο, θα σας δείξουμε πώς να χρησιμοποιήσετε την εντολή
grep
μέσω πρακτικών παραδειγμάτων και λεπτομερείς εξηγήσεις των πιο κοινών επιλογών GNU
grep
.
Σύνταξη εντολών Grep
Πριν πάτε για να χρησιμοποιήσετε την εντολή
grep
, ας ξεκινήσουμε ανατρέχοντας στη βασική σύνταξη.
Οι εκφράσεις χρηστών
grep
έχουν την ακόλουθη μορφή:
grep PATTERN
Τα στοιχεία σε αγκύλες είναι προαιρετικά.
-
OPTIONS- Μηδενικές ή περισσότερες επιλογές. Το Grep παρέχει διάφορες επιλογές που ελέγχουν τη συμπεριφορά του.PATTERN-PATTERNαναζήτησης.FILE- Μηδέν ή περισσότερα ονόματα αρχείων εισόδου.
Για να μπορέσει να πραγματοποιήσει αναζήτηση στο αρχείο, ο χρήστης που εκτελεί την εντολή πρέπει να έχει πρόσβαση ανάγνωσης στο αρχείο.
Πώς να χρησιμοποιήσετε
grep
για να αναζητήσετε ένα string σε αρχεία
Η πιο βασική χρήση της εντολής
grep
είναι η αναζήτηση μιας συμβολοσειράς (κειμένου) σε ένα αρχείο.
Για παράδειγμα, για να εμφανίσετε τις γραμμές από το αρχείο
/etc/passwd
που περιέχει το
bash
string, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:
grep bash /etc/passwd
Η έξοδος θα πρέπει να φαίνεται κάπως έτσι:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Εάν η συμβολοσειρά περιλαμβάνει κενά, θα πρέπει να την επισυνάψετε σε μοναδικά ή διπλά εισαγωγικά:
grep "Gnome Display Manager" /etc/passwd
Επαναφορά αντιστοίχισης (Εξαίρεση)
Για να εμφανίσετε τις γραμμές που δεν ταιριάζουν με ένα μοτίβο, χρησιμοποιήστε την επιλογή
-v
(ή
--invert-match
).
Για παράδειγμα, για να εμφανίσετε τις γραμμές από το αρχείο
/etc/passwd
που δεν περιέχουν το string
nologin
μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:
grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Πώς να χρησιμοποιήσετε το Grep για να αναζητήσετε μια συμβολοσειρά στην έξοδο εντολών
Αντί να καθορίσετε αρχεία εισόδου, μπορείτε να διοχετεύσετε την έξοδο μιας άλλης εντολής σε
grep
και, στη συνέχεια, να εμφανίσετε μόνο γραμμές που ταιριάζουν σε ένα συγκεκριμένο μοτίβο.
Για παράδειγμα, για να διαπιστώσετε ποιες διεργασίες εκτελούνται στο σύστημά σας ως δεδομένα χρήστη
www-data
μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή
ps
:
ps -ef | grep www-data
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Μπορείτε επίσης να συνδέσετε πολλαπλούς αγωγούς με εντολή. Όπως μπορείτε να δείτε στην παραπάνω έξοδο υπάρχει επίσης μια γραμμή που περιέχει τη διαδικασία
grep
. Εάν δεν θέλετε να εμφανίζεται αυτή η γραμμή, περάστε την έξοδο σε άλλη
grep
όπως φαίνεται παρακάτω.
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Αναδρομική αναζήτηση
Για να αναζητήσετε αναδρομικά ένα πρότυπο χρησιμοποιήστε το, χρησιμοποιήστε την επιλογή
-r
(ή
--recursive
). Αυτό θα πραγματοποιήσει αναζήτηση σε όλα τα αρχεία στον καθορισμένο κατάλογο, παρακάμπτοντας τους συμβολικούς συμβόλλους που συναντώνται αναδρομικά. Για να ακολουθήσετε όλους τους συμβολικούς δεσμούς, χρησιμοποιήστε την επιλογή
-R
(ή
--dereference-recursive
).
Στο ακόλουθο παράδειγμα ψάχνουμε για το string
linuxize.com
σε όλα τα αρχεία μέσα στον κατάλογο
/etc
:
grep -r linuxize.com /etc
Η εντολή θα εκτυπώσει τις γραμμές αντιστοίχισης που έχουν προταθεί από την πλήρη διαδρομή στο αρχείο.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Αν αντί
-r
χρησιμοποιείτε την επιλογή
-R
, η
grep
θα ακολουθήσει όλους τους συμβολικούς συνδέσμους:
grep -R linuxize.com /etc
Παρατηρήστε την τελευταία γραμμή της εξόδου. Αυτή η γραμμή δεν εκτυπώνεται στο παραπάνω παράδειγμα, επειδή τα αρχεία μέσα στον κατάλογο με
sites-enabled
Nginx είναι σύμβολα στα αρχεία ρυθμίσεων εντός του
sites-available
καταλόγου
sites-available
.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;
Εμφάνιση μόνο του ονόματος αρχείου
Για να καταργήσετε την προεπιλεγμένη έξοδο
grep
και να εκτυπώσετε μόνο τα ονόματα των αρχείων που περιέχουν το αντιστοιχισμένο μοτίβο, μπορείτε να χρησιμοποιήσετε την επιλογή
-l
(ή
--files-with-matches
).
Για παράδειγμα, για να αναζητήσετε όλα τα αρχεία που τελειώνουν με το
.conf
στον τρέχοντα κατάλογο εργασίας και να εκτυπώσετε μόνο τα ονόματα των αρχείων που περιέχουν τον τύπο
linuxize.com
:
grep -l linuxize.com *.conf
Η έξοδος θα φαίνεται κάπως έτσι:
tmux.conf haproxy.conf
Η επιλογή
-l
χρησιμοποιείται συνήθως σε συνδυασμό με την αναδρομική επιλογή
-R
:
Ανίχνευση ανίχνευσης περιπτώσεων
Από προεπιλογή, στην εντολή
grep
γίνεται
grep
πεζών-κεφαλαίων. Αυτό σημαίνει ότι οι κεφαλαίοι και πεζά χαρακτήρες αντιμετωπίζονται ως διακριτοί.
Για να αγνοήσετε την περίπτωση κατά την αναζήτηση, χρησιμοποιήστε την επιλογή
-i
(ή
--ignore-case
).
Για παράδειγμα, όταν ψάχνετε για
Zebra
χωρίς καμία επιλογή, η ακόλουθη εντολή δεν θα εμφανίσει καμία έξοδο δηλαδή υπάρχουν γραμμές που ταιριάζουν:
grep Zebra /usr/share/words
Αν όμως εκτελείτε μια αναζήτηση χωρίς ευαισθησία σε περίπτωση που χρησιμοποιεί την επιλογή
-i
, θα ταιριάζει τόσο με κεφαλαία όσο και με κεφαλαία γράμματα:
grep -i Zebra /usr/share/words
Ο ορισμός του "Zebra" θα ταιριάζει με το "zebra", το "ZEbrA" ή οποιονδήποτε άλλο συνδυασμό κεφαλαίων και πεζών γραμμάτων για αυτήν τη συμβολοσειρά.
Αναζήτηση πλήρων λέξεων
Όταν ψάχνετε για "gnu", το
grep
θα τυπώσει επίσης τις γραμμές όπου το gnu είναι ενσωματωμένο σε μεγαλύτερες λέξεις, όπως "cygnus" ή "magnum".
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Για να επιστρέψετε μόνο εκείνες τις γραμμές όπου η καθορισμένη συμβολοσειρά είναι μια ολόκληρη λέξη (που περικλείεται από χαρακτήρες που δεν είναι λέξεις), χρησιμοποιήστε την επιλογή
-w
(ή
--word-regexp
).
az
,
AZ
και
0-9
) και υπογράμμισης (
_
). Όλοι οι άλλοι χαρακτήρες θεωρούνται χαρακτήρες που δεν είναι λέξεις.
grep -w gnu /usr/share/words
Εμφάνιση γραμμών αριθμών
Για να εμφανίσετε τον αριθμό των γραμμών που περιέχουν μια συμβολοσειρά που ταιριάζει με ένα μοτίβο, χρησιμοποιήστε την επιλογή
-n
(ή -
--line-number
). Όταν χρησιμοποιείτε αυτήν την επιλογή, το
grep
θα εκτυπώσει τις αντιστοιχίσεις στην πρότυπη έξοδο με πρόθεμα τον αριθμό γραμμής στον οποίο βρέθηκε.
Για παράδειγμα, για να εμφανίσετε τις γραμμές από το αρχείο
/etc/services
που περιέχει το string
bash
με τον αριθμό γραμμής που ταιριάζει, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:
grep -n 10000 /etc/services
Η παρακάτω έξοδος δείχνει ότι οι αντιστοιχίες βρίσκονται στις γραμμές 10423 και 10424.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Μετρητές αρίθμησης
Για να εκτυπώσετε μια μέτρηση των αντίστοιχων γραμμών στην τυπική έξοδο, χρησιμοποιήστε την επιλογή
-c
(ή
--count
).
Στο παρακάτω παράδειγμα, μετράμε τον αριθμό των λογαριασμών που έχουν
/usr/bin/zsh
ως κέλυφος.
grep -c '/usr/bin/zsh' /etc/passwd
Αναζήτηση πολλαπλών χορδών (μοτίβα)
Δύο ή περισσότερα μοτίβα αναζήτησης μπορούν να ενωθούν χρησιμοποιώντας τον τελεστή OR.
|
.
Από προεπιλογή, ο
grep
ερμηνεύει το μοτίβο ως βασική κανονική έκφραση όπου οι μετα-χαρακτήρες όπως
|
χάνουν την ιδιαίτερη σημασία τους και πρέπει να χρησιμοποιηθούν και οι εκ των υστέρων εκδοχές τους.
Στο παρακάτω παράδειγμα ψάχνουμε όλες τις εμφανίσεις των φαινομένων
fatal
,
error
και
critical
στο αρχείο καταγραφής Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Ήσυχη λειτουργία
Το
-q
(ή
--quiet
) λέει στο
grep
να μη γράψει τίποτα στο τερματικό (τυπική έξοδος). Εάν εντοπιστεί μια αντιστοίχιση, η εντολή θα τερματίσει με την κατάσταση
0
. Αυτό είναι χρήσιμο όταν χρησιμοποιείτε
grep
σε κέλυφος όπου θέλετε να ελέγξετε εάν ένα αρχείο περιέχει μια συμβολοσειρά και εκτελέστε μια συγκεκριμένη ενέργεια ανάλογα με το αποτέλεσμα.
Ακολουθεί ένα παράδειγμα χρήσης
grep
σε μια αθόρυβη λειτουργία ως εντολή δοκιμής σε μια εντολή
if
:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Βασική κανονική έκφραση
Το GNU Grep έχει δύο σύνολα χαρακτηριστικών κανονικής έκφρασης, Basic και Extended. Από προεπιλογή, ο
grep
ερμηνεύει το πρότυπο ως βασική κανονική έκφραση.
Όταν χρησιμοποιείται στη βασική λειτουργία κανονικής έκφρασης, όλοι οι άλλοι χαρακτήρες, εκτός από τους μετα-χαρακτήρες, είναι στην πραγματικότητα κανονικές εκφράσεις που ταιριάζουν. Παρακάτω είναι μια λίστα με τους πιο συχνά χρησιμοποιούμενους μετα-χαρακτήρες:
-
Χρησιμοποιήστε το σύμβολο
^(caret) για να ταιριάξετε την έκφραση στην αρχή μιας γραμμής. Στο ακόλουθο παράδειγμα, το string^kangarooθα ταιριάζει μόνο αν εμφανίζεται στην αρχή μιας γραμμής.grep "^kangaroo" file.txtΧρησιμοποιήστε το σύμβολο
$(δολάριο) για να ταιριάξετε την έκφραση στο τέλος μιας γραμμής. Στο ακόλουθο παράδειγμα, το stringkangaroo$θα ταιριάζει μόνο αν εμφανίζεται στο άκρο μιας γραμμής.grep "kangaroo$" file.txtΧρησιμοποιήστε το
.(περίοδο) σύμβολο για να ταιριάζει με κάθε ένα χαρακτήρα. Για παράδειγμα, για να ταιριάξετε οτιδήποτε ξεκινά με τοkanτότε έχει δύο χαρακτήρες και τελειώνει με το stringroo, θα μπορούσατε να χρησιμοποιήσετε το ακόλουθο μοτίβο:grep "kan..roo" file.txtΧρήση
(αγκύλες) για να ταιριάζει με κάθε χαρακτήρα που περικλείεται στις αγκύλες. Για παράδειγμα, βρείτε τις γραμμές που περιέχουνacceptή "accent, θα μπορούσατε να χρησιμοποιήσετε το ακόλουθο μοτίβο:grep "accet" file.txtΧρήση
(αγκύλες) για να ταιριάζει με κάθε χαρακτήρα που περικλείεται στις αγκύλες. Το ακόλουθο μοτίβο θα ταιριάζει με οποιοδήποτε συνδυασμό συμβολοσειρών που περιέχειco(any_letter_except_l)a, όπωςcoca,cobaltκ.ο.κ., αλλά δεν θα ταιριάζει με τις γραμμές που περιέχουνcola,grep "coa" file.txt
Για να ξεφύγετε από την ειδική έννοια του επόμενου χαρακτήρα, χρησιμοποιήστε το σύμβολο
\
(ανάστροφης κάθετος).
Εκτεταμένες κανονικές εκφράσεις
Για να ερμηνεύσετε το πρότυπο ως μια εκτεταμένη κανονική έκφραση, χρησιμοποιήστε την επιλογή
-E
(ή
--extended-regexp
). Οι εκτεταμένες κανονικές εκφράσεις περιλαμβάνουν όλους τους βασικούς μετα-χαρακτήρες, μαζί με πρόσθετους μετα-χαρακτήρες για να δημιουργήσετε πιο σύνθετα και ισχυρά μοτίβα αναζήτησης. Ακολουθούν μερικά παραδείγματα:
-
Ταίριασμα και εξαγωγή όλων των διευθύνσεων ηλεκτρονικού ταχυδρομείου από ένα δεδομένο αρχείο:
grep -E -o "\b+@+\.{2, 6}\b" file.txtΤαίριασμα και εξαγωγή όλων των έγκυρων διευθύνσεων IP από ένα δεδομένο αρχείο:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Η επιλογή
-o
χρησιμοποιείται για την εκτύπωση μόνο της αντίστοιχης συμβολοσειράς.
Γραμμές εκτύπωσης πριν από έναν αγώνα
Για να εκτυπώσετε έναν συγκεκριμένο αριθμό γραμμών πριν από την αντιστοίχιση των γραμμών, χρησιμοποιήστε την επιλογή
-B
(ή -
--before-context
).
Για παράδειγμα, για να εμφανίσετε πέντε γραμμές προπορευόμενων πλαισίων πριν από τις αντίστοιχες γραμμές, θα χρησιμοποιήσατε την ακόλουθη εντολή:
Γραμμές εκτύπωσης μετά από έναν αγώνα
Για να εκτυπώσετε έναν συγκεκριμένο αριθμό γραμμών μετά την αντιστοίχιση γραμμών, χρησιμοποιήστε την επιλογή
-A
(ή
--after-context
).
Για παράδειγμα, για να εμφανίσετε πέντε γραμμές παράλληλου πλαισίου μετά από αντιστοίχιση γραμμών, θα χρησιμοποιήσατε την ακόλουθη εντολή:
συμπέρασμα
Η εντολή
grep
σας επιτρέπει να αναζητήσετε ένα μοτίβο μέσα στα αρχεία. Αν ένας αγώνας αν βρεθεί, grep θα εκτυπώσει τις γραμμές που περιέχουν το καθορισμένο μοτίβο.
Υπάρχουν πολλά περισσότερα για να μάθετε σχετικά με τη σελίδα του Grep Grep User Manual.
grep terminalΤο FTD World, στο ftdworld.net, είναι ένας ιστότοπος ευρετηρίου Usenet που απαριθμεί συνδέσμους προς δυαδικά αρχεία που δημοσιεύθηκαν στο Usenet. Παρέχει επίσης αρχεία με τη μορφή NZB που επιτρέπει στους χρήστες να κατεβάζουν πιο εύκολα τα αναρτημένα αρχεία. Με αυτόν τον τρόπο, ο ιστότοπος παρέχει πρόσβαση σε αρχεία ψυχαγωγίας που περιέχουν πνευματικά δικαιώματα, συμπεριλαμβανομένων βιβλίων, ταινιών, μουσικής, παιχνιδιών και λογισμικού, χωρίς την άδεια των κατόχων πνευματικών δικαιωμάτων, σύμφων
Η Brein ήθελε το δικαστήριο να αναγκάσει την ING Bank να αποκαλύψει ποιος είναι πίσω από έναν αριθμό τραπεζικού λογαριασμού που δημοσιεύτηκε στο site που χρησιμοποιείται για τη λήψη δωρεών, σύμφωνα με την ετυμηγορία που δημοσίευσε το δικαστήριο την Πέμπτη. Δεν ήταν προηγουμένως σε θέση να εντοπίσει τον καταχωρίζοντα ονόματος τομέα και δεν είχε λάβει απάντηση σε επιστολή που απέστειλε στον ρώσο πάροχο φιλοξενίας.
Έχουμε ήδη δει τι είναι τα προσωρινά αρχεία στα Windows. Τα προσωρινά αρχεία στα Windows είναι εκείνα τα αρχεία ανεπιθύμητης αλληλογραφίας των οποίων η χρήση είναι προσωρινή και καθίσταται περιττή όταν ολοκληρωθεί η εργασία. Αυτά τα προσωρινά αρχεία θα πρέπει να διαγραφούν μόλις το πρόγραμμα τερματιστεί. Αλλά αυτό δεν συμβαίνει πάντοτε, οδηγώντας σε σπατάλη του χώρου στο δίσκο.
Ενώ η παρουσία αυτών των Προσωρινών Αρχείων δεν επηρεάζει πραγματικά την απόδοση του λειτουργικού σας συστήματος, η διαγραφή τους περιοδικά είναι απλώς θέμα καλής πρακτικής διατήρησης της οικίας. θα πρέπει να το κάνουμε τακτικά. Πόσο συχνά πρέπει να κάνετε εξαρτάται από το πόσο επιθετικά χρησιμοποιείτε τον υπολογιστή σας. Αλλά για τους περισσότερους χρήστες, πιστεύω ότι η διαγραφή τέτοιων προσωρινών αρχείων τουλάχιστον μία φορά το μήνα θα πρέπει να είναι αρκετά καλή.
Τα ανεπιθύμητα αρχεία είναι αρχεία που παραμένουν στον υπολογιστή σας μετά την εκτέλεση μιας εργασίας. Μερικές φορές, τα Windows ή κάποιο πρόγραμμα χρειάζεται να δημιουργήσει προσωρινά αρχεία κάνοντας κάποια εργασία και στη συνέχεια ξεχάσει να διαγράψει τα προσωρινά αρχεία που δημιούργησε. Με την πάροδο του χρόνου, ο υπολογιστής σας είναι γεμάτος από ανεπιθύμητα αρχεία με τη μορφή προσωρινών αρχείων, αρχείων καταγραφής, αρχείων που έχουν ληφθεί και ανεπιθύμητων / περιττών καταχωρήσεων μητρώου τω
Ανεπιθύμητα αρχεία στα Windows 10







