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

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

Η εντολή rev είναι ένα από εκείνα τα απλά βοηθητικά προγράμματα Linux που, με την πρώτη ματιά, φαίνεται να είναι κάτι περίεργο. Εκτελεί μία μόνο λειτουργία: αντιστρέφει χορδές. Και εκτός από το ότι μπορεί να εκτυπώσει μια σελίδα γρήγορης βοήθειας (-h) και να σας δείξει τον αριθμό έκδοσής της (-V), δεν δέχεται καμία επιλογές γραμμής εντολών.

Λοιπόν, οι στροφές αντιστρέφουν τις χορδές, και αυτό είναι όλο; Δεν υπάρχουν παραλλαγές ή επιλογές; Λοιπόν, ναι και όχι. Ναι, δεν έχει μεταθέσεις, αλλά όχι, δεν είναι μόνο αυτό. Αυτό το σεμινάριο σάς δείχνει πώς να το συνδυάσετε για ισχυρές λειτουργίες.

Όταν χρησιμοποιείτε το rev ως δομικό στοιχείο σε πιο περίπλοκες ακολουθίες εντολών, αρχίζει πραγματικά να δείχνει την αξία του. Το rev είναι μία από μια ομάδα εντολών (όπως tac και yes) που είναι διευκολυντές. Είναι πιο εύκολο να εκτιμήσετε τη χρησιμότητά τους όταν δείτε πώς κάνουν τη χρήση άλλων εντολών πιο αποτελεσματική.

Χρησιμοποιώντας την εντολή rev

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

rev

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

Διαβίβαση κειμένου σε αναθ

Μπορείτε να χρησιμοποιήσετε την ηχώ για τη διοχέτευση κειμένου για αναστροφή.

echo one two three | rev

Μπορείτε επίσης να χρησιμοποιήσετε το rev για να αντιστρέψετε τα περιεχόμενα ενός ολόκληρου αρχείου κειμένου, γραμμή προς γραμμή. Σε αυτό το παράδειγμα, έχουμε ένα αρχείο που περιέχει μια λίστα ονομάτων αρχείων. Το αρχείο ονομάζεται “filelist.txt”.

rev filelist.txt

Κάθε γραμμή διαβάζεται από το αρχείο, αντιστρέφεται και στη συνέχεια εκτυπώνεται στο παράθυρο του τερματικού.

  Πώς να παίξετε το Hearthstone στο Linux

Συνδυασμός στροφών με άλλες εντολές

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

Αυτή η εντολή αφαιρεί τον τελευταίο χαρακτήρα από τη συμβολοσειρά του κειμένου. Αυτό θα μπορούσε να είναι χρήσιμο για την κατάργηση των σημείων στίξης. Πρέπει να χρησιμοποιήσουμε την εντολή cut to απογυμνώστε τον χαρακτήρα.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

Ας το αναλύσουμε.

Η echo στέλνει τη συμβολοσειρά στην πρώτη κλήση στην αναστροφή.
στροφές αντιστρέφει τη χορδή και τη σωλήνωση σε κοπή.
Η επιλογή -c (χαρακτήρες) λέει στο cut για να επιστρέψει μια ακολουθία χαρακτήρων από τη συμβολοσειρά.
Η επιλογή 2- λέει στο cut να επιστρέψει το εύρος των χαρακτήρων από τον χαρακτήρα δύο μέχρι το τέλος της γραμμής. Εάν παρείχε έναν δεύτερο αριθμό, όπως 2-5, το εύρος θα ήταν από χαρακτήρες δύο έως πέντε. Κανένας δεύτερος αριθμός δεν σημαίνει «μέχρι το τέλος της συμβολοσειράς».
Η αντίστροφη συμβολοσειρά – μείον τον πρώτο της χαρακτήρα – μεταβιβάζεται στο rev που αντιστρέφει τη συμβολοσειρά, οπότε επανέρχεται στην αρχική της σειρά.

Επειδή περικόψαμε τον πρώτο χαρακτήρα της αντίστροφης συμβολοσειράς, περικόψαμε τον τελευταίο χαρακτήρα της αρχικής συμβολοσειράς. Ναι, θα μπορούσατε να το κάνετε αυτό με sed ή awk, αλλά αυτή είναι μια πιο εύκολη σύνταξη.

Διαχωρίζοντας την τελευταία λέξη

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

Η εντολή είναι παρόμοια με την τελευταία: και πάλι, χρησιμοποιεί rev δύο φορές. Οι διαφορές έγκεινται στον τρόπο που χρησιμοποιείται η εντολή cut για την επιλογή τμημάτων του κειμένου.

echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Ακολουθεί η ανάλυση της εντολής:

  Πώς να ρυθμίσετε το X2Go σε Linux

Η echo στέλνει τη συμβολοσειρά στην πρώτη κλήση στην αναστροφή.
στροφές αντιστρέφει τη χορδή και τη σωλήνωση σε κοπή.
Η επιλογή -d’ ‘ (οριοθέτης) λέει στο cut για να επιστρέψει μια ακολουθία χαρακτήρων που οριοθετούνται από ένα κενό.
Η επιλογή -f1 λέει στο cut να επιστρέψει το πρώτο τμήμα της συμβολοσειράς που δεν περιέχει τον οριοθέτη. Με άλλα λόγια, το πρώτο μέρος της πρότασης μέχρι το πρώτο διάστημα.
Η αντίστροφη πρώτη λέξη μεταβιβάζεται σε rev που αντιστρέφει τη συμβολοσειρά, οπότε επανέρχεται στην αρχική της σειρά.

Επειδή εξάγαμε την πρώτη λέξη της αντίστροφης συμβολοσειράς, περικόψαμε την τελευταία λέξη της αρχικής συμβολοσειράς. Η τελευταία λέξη της πρότασης ήταν «λέξη» και εκτυπώθηκε για εμάς.

Περικοπή περιεχομένου από αρχεία

Ας υποθέσουμε ότι έχουμε ένα αρχείο που περιέχει μια λίστα ονομάτων αρχείων και τα ονόματα αρχείων είναι σε εισαγωγικά. Θέλουμε να αφαιρέσουμε τα εισαγωγικά από τα ονόματα των αρχείων.

Ας δούμε το αρχείο:

less filelist.txt

Τα περιεχόμενα του αρχείου εμφανίζονται για εμάς σε λιγότερα.

Μπορούμε να αφαιρέσουμε τα σημεία στίξης και από τα δύο άκρα κάθε γραμμής με την ακόλουθη εντολή. Αυτή η εντολή χρησιμοποιεί και rev και cut δύο φορές.

rev filelist.txt | cut -c 2- | rev | cut -c 2-

Τα ονόματα αρχείων παρατίθενται για εμάς χωρίς τα εισαγωγικά.

Η εντολή αναλύεται ως εξής:

Το rev αντιστρέφει τις γραμμές στη λίμα και τις κόβει.
Η επιλογή -c (χαρακτήρες) λέει στο cut να επιστρέψει μια ακολουθία χαρακτήρων από κάθε γραμμή.
Η επιλογή 2- λέει στο cut να επιστρέψει το εύρος των χαρακτήρων από τον χαρακτήρα δύο μέχρι το τέλος κάθε γραμμής.
Οι αντίστροφες συμβολοσειρές, μείον τους πρώτους χαρακτήρες τους, περνούν σε αναθ.
Το rev αντιστρέφει τις χορδές, οπότε επιστρέφουν στην αρχική τους σειρά. Κόβονται για δεύτερη φορά.
Η επιλογή -c (χαρακτήρες) λέει στο cut να επιστρέψει μια ακολουθία χαρακτήρων από κάθε συμβολοσειρά.
Η επιλογή 2- λέει στο cut να επιστρέψει το εύρος των χαρακτήρων από τον χαρακτήρα δύο μέχρι το τέλος κάθε γραμμής. Αυτό «πηδάει» πάνω από το αρχικό εισαγωγικό, το οποίο είναι ένας χαρακτήρας σε κάθε γραμμή.

  Τα 8 καλύτερα καλλιτεχνικά εργαλεία για χρήστες Linux

Πολλές σωληνώσεις

Ακολουθεί μια εντολή που επιστρέφει μια ταξινομημένη λίστα κάθε επέκτασης αρχείου στον τρέχοντα κατάλογο. Χρησιμοποιεί πέντε διαφορετικές εντολές Linux.

ls | rev | cut -d'.' -f1 | rev | sort | uniq

Η διαδικασία είναι απλή:

Το ls παραθέτει τα αρχεία στον τρέχοντα κατάλογο. Αυτά διοχετεύονται σε στροφές.
Το rev αντιστρέφει τα ονόματα αρχείων και τα κόβει.
Το cut επιστρέφει το πρώτο τμήμα κάθε ονόματος αρχείου μέχρι έναν οριοθέτη. Το -δ’.’ λέει cut να χρησιμοποιήσει την περίοδο “.” ως οριοθέτης. Το τμήμα των ονομάτων αρχείων που αντιστρέφονται μέχρι την πρώτη περίοδο είναι οι επεκτάσεις αρχείων. Αυτά διοχετεύονται σε στροφές.
rev αντιστρέφει τις επεκτάσεις αρχείων στην αρχική τους σειρά. Ταξινομούνται με σωλήνες.
Το sort ταξινομεί τις επεκτάσεις αρχείων και διοχετεύει τα αποτελέσματα σε uniq.
Το uniq επιστρέφει μια ενιαία λίστα για κάθε τύπο μοναδικής επέκτασης αρχείου. Σημειώστε ότι εάν δεν υπάρχει επέκταση αρχείου (όπως για το makefile και τους καταλόγους Help και gc_help), εμφανίζεται ολόκληρο το όνομα αρχείου.

Για να βάλετε μια τελευταία πινελιά σε αυτό, προσθέστε την επιλογή γραμμής εντολών -c (count) στην εντολή uniq.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

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

Αυτό είναι ένα πολύ ωραίο one-liner!

συρταριF og ot drawkcaB gnioG

Μερικές φορές πρέπει να πας πίσω για να πας μπροστά. Και συνήθως προχωράς πιο γρήγορα ως μέλος μιας ομάδας.

Προσθέστε rev στο ρεπερτόριό σας με τις εντολές μετάβασης και σύντομα θα το χρησιμοποιήσετε για να απλοποιήσετε τις κατά τα άλλα περίπλοκες ακολουθίες εντολών.