Πώς να χρησιμοποιήσετε την εντολή συμβολοσειρών στο Linux

Τερματικό Linux σε φορητό υπολογιστή

Fatmawati Achmad Zaenuri/Shutterstock.com



Θέλετε να δείτε το κείμενο μέσα σε ένα δυαδικό αρχείο ή ένα αρχείο δεδομένων; Το Linux |_+_| εντολή βγάζει αυτά τα κομμάτια κειμένου - που ονομάζονται συμβολοσειρές - για εσάς.

Το Linux είναι γεμάτο εντολές που μπορούν να μοιάζουν με λύσεις σε αναζήτηση προβλημάτων. Το |_+_| η εντολή σίγουρα πέφτει σε αυτό το στρατόπεδο. Ποιος είναι ακριβώς ο σκοπός του; Υπάρχει κάποιο σημείο σε μια εντολή που παραθέτει τις εκτυπώσιμες συμβολοσειρές μέσα από ένα δυαδικό αρχείο;





Ας κάνουμε ένα βήμα πίσω. Τα δυαδικά αρχεία—όπως τα αρχεία προγράμματος—μπορεί να περιέχουν συμβολοσειρές αναγνώσιμου από τον άνθρωπο κειμένου. Πώς θα τα δείτε όμως; Εάν χρησιμοποιείτε |_+_| ή |_+_| είναι πιθανό να καταλήξετε με ένα κρεμασμένο παράθυρο τερματικού. Τα προγράμματα που έχουν σχεδιαστεί για να λειτουργούν με αρχεία κειμένου δεν λειτουργούν καλά εάν τροφοδοτούνται μέσω αυτών μη εκτυπώσιμοι χαρακτήρες.

Τα περισσότερα byte μέσα σε ένα δυαδικό αρχείο δεν είναι αναγνώσιμα από τον άνθρωπο και δεν μπορούν να εκτυπωθούν στο παράθυρο του τερματικού με τρόπο που να έχει νόημα. Δεν υπάρχουν χαρακτήρες ή τυπικά σύμβολα που να αντιπροσωπεύουν δυαδικές τιμές που δεν αντιστοιχούν σε αλφαριθμητικούς χαρακτήρες, σημεία στίξης ή κενά. Συλλογικά, αυτοί είναι γνωστοί ως εκτυπώσιμοι χαρακτήρες. Οι υπόλοιποι είναι μη εκτυπώσιμοι χαρακτήρες.



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

Χρήση των συμβολοσειρών Εντολή

Δεν υπάρχει τίποτα περίπλοκο σχετικά με το |_+_| εντολή, και η βασική του χρήση είναι πολύ απλή. Παρέχουμε το όνομα του αρχείου που επιθυμούμε |_+_| για αναζήτηση στη γραμμή εντολών.

Διαφήμιση

Εδώ, θα χρησιμοποιήσουμε συμβολοσειρές σε ένα δυαδικό αρχείο - ένα εκτελέσιμο αρχείο - που ονομάζεται jibber. Πληκτρολογούμε |_+_|, ένα κενό, jibber και μετά πατάμε Enter.



strings

Οι συμβολοσειρές εξάγονται από το αρχείο και παρατίθενται στο παράθυρο του τερματικού.

Ρύθμιση του ελάχιστου μήκους συμβολοσειράς

Από προεπιλογή, οι συμβολοσειρές θα αναζητούν συμβολοσειρές με τέσσερις χαρακτήρες ή περισσότερους. Για να ορίσετε ένα μεγαλύτερο ή μικρότερο ελάχιστο μήκος, χρησιμοποιήστε το |_+_| (ελάχιστο μήκος) επιλογή.

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

Ορισμένες δυαδικές τιμές έχουν την ίδια αριθμητική τιμή με την τιμή που αντιπροσωπεύει έναν εκτυπώσιμο χαρακτήρα. Εάν δύο από αυτές τις αριθμητικές τιμές τυχαίνει να βρίσκονται δίπλα-δίπλα στο αρχείο και καθορίσετε ένα ελάχιστο μήκος δύο, αυτά τα byte θα αναφέρονται σαν να ήταν μια συμβολοσειρά.

Διαφήμιση

Να ρωτήσω |_+_| για να χρησιμοποιήσετε δύο ως ελάχιστο μήκος, χρησιμοποιήστε την ακόλουθη εντολή.

strings

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

Χορδές σωληνώσεων Through Less

Λόγω του μήκους της εξόδου από το |_+_|, θα το περάσουμε μέσω του |_+_|. Στη συνέχεια, μπορούμε να πραγματοποιήσουμε κύλιση στο αρχείο αναζητώντας κείμενο που μας ενδιαφέρει.

cat

Η καταχώριση παρουσιάζεται τώρα για εμάς στο |_+_|, με την κορυφή της καταχώρισης να εμφανίζεται πρώτη.

Χρήση συμβολοσειρών με Αρχεία Αντικειμένων

Συνήθως, τα αρχεία πηγαίου κώδικα του προγράμματος μεταγλωττίζονται σε αρχεία αντικειμένων. Αυτά συνδέονται με αρχεία βιβλιοθήκης για τη δημιουργία ενός δυαδικού εκτελέσιμου αρχείου. Έχουμε διαθέσιμο το αρχείο αντικειμένου jibber, οπότε ας ρίξουμε μια ματιά μέσα σε αυτό το αρχείο. Σημειώστε την επέκταση αρχείου .o.

less

Το πρώτο σύνολο συμβολοσειρών είναι όλα τυλιγμένα στη στήλη οκτώ, εάν είναι μεγαλύτερες από οκτώ χαρακτήρες. Εάν έχουν τυλιχτεί, ένας χαρακτήρας H βρίσκεται στη στήλη εννέα. Μπορείτε να αναγνωρίσετε αυτές τις συμβολοσειρές ως εντολές SQL.

Διαφήμιση

Η κύλιση στην έξοδο αποκαλύπτει ότι αυτή η μορφοποίηση δεν χρησιμοποιείται σε όλο το αρχείο.

Είναι ενδιαφέρον να δούμε τις διαφορές στις συμβολοσειρές κειμένου μεταξύ του αρχείου αντικειμένου και του τελικού εκτελέσιμου αρχείου.

Αναζήτηση σε συγκεκριμένες περιοχές του αρχείου

Τα μεταγλωττισμένα προγράμματα έχουν διαφορετικές περιοχές μέσα τους που χρησιμοποιούνται για την αποθήκευση κειμένου. Από προεπιλογή, |_+_| αναζητά ολόκληρο το αρχείο αναζητώντας κείμενο. Αυτό είναι ακριβώς σαν να είχατε χρησιμοποιήσει το |_+_| (όλα) επιλογή. Για να υπάρχει αναζήτηση συμβολοσειρών μόνο σε αρχικοποιημένες, φορτωμένες ενότητες δεδομένων στο αρχείο, χρησιμοποιήστε το |_+_| επιλογή (δεδομένα).

strings

Αν δεν έχετε καλό λόγο, μπορείτε επίσης να χρησιμοποιήσετε την προεπιλεγμένη ρύθμιση και να αναζητήσετε ολόκληρο το αρχείο.

Εκτύπωση της μετατόπισης συμβολοσειράς

Μπορούμε να έχουμε |_+_| εκτυπώστε το offset από την αρχή του αρχείου στο οποίο βρίσκεται κάθε συμβολοσειρά. Για να το κάνετε αυτό, χρησιμοποιήστε το |_+_| επιλογή (offset).

strings

Η μετατόπιση δίνεται Οκτάεδρος .

Για να εμφανίζεται η μετατόπιση σε διαφορετική αριθμητική βάση, όπως δεκαδική ή δεκαεξαδική, χρησιμοποιήστε το |_+_| (radix) επιλογή. Η επιλογή radix πρέπει να ακολουθείται από |_+_| ( δεκαδικός ), strings ( δεκαεξαδικό ), ή |_+_| (Οκτάεδρος). Χρησιμοποιώντας |_+_| είναι το ίδιο με τη χρήση |_+_|.

strings

Οι μετατοπίσεις εκτυπώνονται πλέον σε δεκαδικό.

-n

Οι μετατοπίσεις εκτυπώνονται τώρα σε δεκαεξαδικό.

Συμπεριλαμβανομένου του κενού χώρου

|_+_| θεωρεί τους χαρακτήρες tab και διαστήματος ως μέρος των συμβολοσειρών που βρίσκει. Άλλοι χαρακτήρες κενού διαστήματος, όπως οι νέες γραμμές και οι επιστροφές μεταφοράς, δεν αντιμετωπίζονται σαν να ήταν μέρος των συμβολοσειρών. Το |_+_| Η επιλογή (κενός χώρος) αναγκάζει τις συμβολοσειρές να αντιμετωπίζουν όλους τους χαρακτήρες κενού διαστήματος σαν να είναι μέρη της συμβολοσειράς.

strings

Διαφήμιση

Μπορούμε να δούμε την κενή γραμμή στην έξοδο, η οποία είναι αποτέλεσμα των (αόρατων) χαρακτήρων μεταφοράς και νέας γραμμής στο τέλος της δεύτερης γραμμής.

Δεν περιοριζόμαστε στα αρχεία

Μπορούμε να χρησιμοποιήσουμε |_+_| με οτιδήποτε είναι, ή μπορεί να παράγει, μια ροή byte.

Με αυτήν την εντολή, μπορούμε να κοιτάξουμε μέσα από το μνήμη τυχαίας προσπέλασης (RAM) του υπολογιστή μας.

Πρέπει να χρησιμοποιήσουμε |_+_| επειδή έχουμε πρόσβαση στο /dev/mem. Αυτό είναι ένα αρχείο συσκευής χαρακτήρων που περιέχει μια εικόνα της κύριας μνήμης του υπολογιστή σας.

strings

Η καταχώριση δεν είναι ολόκληρο το περιεχόμενο της μνήμης RAM σας. Είναι μόνο οι χορδές που μπορούν να εξαχθούν από αυτό.

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Τι σημαίνει «Όλα είναι ένα αρχείο» στο Linux;

Αναζήτηση πολλών αρχείων ταυτόχρονα

Οι χαρακτήρες μπαλαντέρ μπορούν να χρησιμοποιηθούν για την επιλογή ομάδων αρχείων προς αναζήτηση. Το |_+_| Ο χαρακτήρας αντιπροσωπεύει πολλούς χαρακτήρες και το |_+_| Ο χαρακτήρας αντιπροσωπεύει οποιονδήποτε μεμονωμένο χαρακτήρα. Μπορείτε επίσης να επιλέξετε να παρέχετε πολλά ονόματα αρχείων στη γραμμή εντολών.

Διαφήμιση

Θα χρησιμοποιήσουμε έναν χαρακτήρα μπαλαντέρ και θα κάνουμε αναζήτηση σε όλα τα εκτελέσιμα αρχεία στον κατάλογο /bin. Επειδή η λίστα θα περιέχει αποτελέσματα από πολλά αρχεία, θα χρησιμοποιήσουμε το |_+_| (όνομα αρχείου) επιλογή. Αυτό θα εκτυπώσει το όνομα του αρχείου στην αρχή κάθε γραμμής. Στη συνέχεια, μπορούμε να δούμε σε ποιο αρχείο βρέθηκε κάθε συμβολοσειρά.

Διαβιβάζουμε τα αποτελέσματα λαβή , και αναζητήστε συμβολοσειρές που περιέχουν τη λέξη Copyright.

less

Λαμβάνουμε μια καθαρή λίστα των δηλώσεων πνευματικών δικαιωμάτων για κάθε αρχείο στον κατάλογο /bin, με το όνομα του αρχείου στην αρχή κάθε γραμμής.

χορδές ξετυλιγμένες

Δεν υπάρχει μυστήριο για τα έγχορδα. είναι μια τυπική εντολή Linux. Κάνει κάτι πολύ συγκεκριμένο και το κάνει πολύ καλά.

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

Εντολές Linux
Αρχεία πίσσα · pv · Γάτα · tac · chmod · λαβή · διαφ · sed · Με · άνδρας · έσπρωξε · popd · fsck · δοκιμαστικό δίσκο · επ · fd · παντοκ · CD · $PATH · οκ · Συμμετοχή · jq · πτυχή · uniq · journalctl · ουρά · κατάσταση · ls · fstab · πέταξε έξω · πιο λιγο · chgrp · τσόουν · στροφή μηχανής · Κοίτα · χορδές · τύπος · μετονομάζω · φερμουάρ · ανοίγω φερμουάρ · βουνό · ποσό · εγκαθιστώ · fdisk · mkfs · rm · rmdir · rsync · df · gpg · εμείς · νανο · mkdir · από · ln · κηλίδα · μετατρέπω · rclone · κομματάκι · SRM
Διαδικασίες ψευδώνυμο · οθόνη · μπλουζα · όμορφη · renice · πρόοδος · στρας · Σύστημα · tmux · chsh · ιστορία · στο · σύνολο παραγωγής · Ελεύθερος · οι οποίες · dmesg · usermod · ΥΣΤΕΡΟΓΡΑΦΟ · chroot · xargs · tty · ροζ · lsof · vmstat · τέλος χρόνου · τείχος · Ναί · σκοτώνω · ύπνος · sudo · του · χρόνος · ομαδική προσθήκη · usermod · ομάδες · lshw · ΤΕΡΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ · επανεκκίνηση · να σταματήσει · απενεργοποίηση · passwd · lscpu · crontab · ημερομηνία · bg · fg
Δικτύωση netstat · ping · traceroute · ip · σσ · ποιος είναι · fail2ban · bmon · εσύ · δάχτυλο · nmap · ftp · μπούκλα · wget · που · ποιός είμαι · Σε · iptables · ssh-keygen · ufw

ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Καλύτεροι φορητοί υπολογιστές Linux για προγραμματιστές και λάτρεις

ΔΙΑΒΑΣΤΕ ΤΗ ΣΥΝΕΧΕΙΑ Φωτογραφία προφίλ για τον Dave McKay Dave McKay
Ο Dave McKay χρησιμοποίησε για πρώτη φορά υπολογιστές όταν η διάτρητη χαρτοταινία ήταν στη μόδα και από τότε ασχολείται με τον προγραμματισμό. Μετά από περισσότερα από 30 χρόνια στη βιομηχανία της πληροφορικής, είναι πλέον δημοσιογράφος τεχνολογίας πλήρους απασχόλησης. Κατά τη διάρκεια της καριέρας του, έχει εργαστεί ως ελεύθερος επαγγελματίας προγραμματιστής, διευθυντής διεθνούς ομάδας ανάπτυξης λογισμικού, διευθυντής έργου υπηρεσιών πληροφορικής και, πιο πρόσφατα, ως Υπεύθυνος Προστασίας Δεδομένων. Η γραφή του έχει δημοσιευτεί από τα howtogeek.com, cloudsavvyit.com, itenterpriser.com και opensource.com. Ο Dave είναι ευαγγελιστής Linux και υπέρμαχος ανοιχτού κώδικα.
Διαβάστε το πλήρες βιογραφικό

Ενδιαφέροντα Άρθρα