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

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

Πώς λειτουργούν οι γραμμές κειμένου στο τερματικό Linux

Πρώτος κανόνας της μάχης Linux: γνωρίστε τον εχθρό σας. Ας το ορίσουμε λοιπόν. Τι ακριβώς είναι μια γραμμή κειμένου; Είναι μια ακολουθία χαρακτήρων – γράμματα, αριθμοί, σύμβολα και κενό διάστημα – που τερματίζεται με ένα ειδικό byte που σημαίνει “ξεκινήστε μια νέα γραμμή”. Σε Linux και Unix, ο χαρακτήρας της νέας γραμμής, που ονομάζεται επίσης γραμμή τροφοδοσίας, χρησιμοποιείται ως ένδειξη τέλους γραμμής. Αυτό είναι ένα byte με τιμή 0x0a in δεκαεξαδικό και δέκα σε δεκαδικό.

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

  Πώς να ελέγξετε την ασφάλεια ενός υπολογιστή Linux με το Lynis

Οι όροι “linefeed” και “carriage return” χρονολογούνται πίσω στη γραφομηχανή. Το πιάτο, τον κύλινδρο γύρω από τον οποίο ήταν τυλιγμένο το χαρτί, ήταν τοποθετημένο σε κινητή άμαξα. Η άμαξα μετακινούσε το πλάτος ενός χαρακτήρα προς τα αριστερά κάθε φορά που πατάτε ένα πλήκτρο. Για να ξεκινήσετε μια νέα γραμμή, πιέζατε έναν μοχλό που επανέφερε το φορείο στην αρχική του θέση και ο οποίος περιστράφηκε τον κύλινδρο και μετακινούσε το χαρτί προς τα πάνω κατά το ύψος μιας γραμμής. Αυτή η ενέργεια ήταν γνωστή ως επιστροφή μεταφοράς και η περιστροφή του κυλίνδρου (και η προώθηση του χαρτιού) ήταν γνωστή ως τροφοδοσία γραμμής.

Ο μοχλός αντικαταστάθηκε από ένα κλειδί όταν η γραφομηχανή ηλεκτροδοτήθηκε. Το κλειδί έφερε την ένδειξη Carriage Return ή απλώς Return. Μερικοί πρώιμοι υπολογιστές όπως π.χ το BBC Micro χρησιμοποιούσε ακόμα το όνομα Return σε αυτό που τώρα ονομάζουμε κλειδί Enter.

  Πώς να προσαρμόσετε τα θέματα Numix στο Linux με το OOMOX

Κατά κανόνα, δεν μπορείτε να δείτε χαρακτήρες νέας γραμμής. Μπορείτε να δείτε μόνο την επίδρασή τους. Ο χαρακτήρας νέας γραμμής αναγκάζει το λογισμικό που εμφανίζει ή επεξεργάζεται κείμενο να ξεκινήσει μια νέα γραμμή.

Ποιο είναι όμως το πρόβλημα με τις παρατεταμένες ουρές;

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

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

Αλλά υπάρχει μια λύση για αυτό, που ονομάζεται fold.

Πρώτα βήματα με πτυχή

Ας ρίξουμε μια ματιά σε ένα τμήμα κειμένου που περιέχει πολύ, πολύ μεγάλες γραμμές. Σημειώστε ότι εδώ δεν μιλάμε για προτάσεις. (Αν και το κείμενο προέρχεται από τον Μόμπι Ντικ του Χέρμαν Μέλβιλ, άρα έχουμε τα καλύτερα και των δύο κόσμων.)

  Πώς να εγκαταστήσετε το Xonotic σε Linux

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

Ας δούμε το κείμενο στην ακατέργαστη μορφή του:

less moby-dick.txt

Το κείμενο εμφανίζεται σε λιγότερα:

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

Έχουμε μια άλλη έκδοση του αρχείου με σύντομες γραμμές:

less short-lines-moby-dick.txt

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

Αν χρησιμοποιήσουμε την εντολή hexdump, μπορούμε κοιτάξτε τις τιμές byte μέσα στο αρχείο και δείτε τους χαρακτήρες της νέας γραμμής. Η επιλογή -C (κανονική) μορφοποιεί την έξοδο ώστε να εμφανίζει δεκαεξαδικές τιμές στην κύρια