Αρχεία κειμένου

Εικόνα: markos
Submitted by markos on Δευ, 05/03/2007 - 21:05

Τα συστήματα UNIX βασίζονται σε μεγάλο βαθμό σε σενάρια κελύφους για πολλές λειτουργίες τους και αυτά δεν είναι παρά κοινά αρχεία κειμένου. Είναι, λοιπόν, απαραίτητη η ύπαρξη εργαλείων που θα χειρίζονται αυτά τα αρχεία κειμένου. Η ανάγκη αυτή οδήγησε στη δημιουργία μιας πληθώρας εργαλείων για την εμφάνιση και επεξεργασία των αρχείων κειμένου στο UNIX, το καθένα εξειδικευμένο σε μια ή και περισσότερες χρήσεις. Υπάρχουν εργαλεία απλώς για εμφάνιση, για ανάστροφη εμφάνιση, για εμφάνιση με σελιδοποίηση, για εμφάνιση μόνο της κεφαλίδας (header) ή του τέλους του αρχείου, για καταμέτρηση γραμμών, λέξεων ή χαρακτήρων ενός αρχείου κλπ. Θα αναφέρουμε εδώ τα βασικά εργαλεία που θα χρειαστείτε.

“less is more”

Από τα πιο χρήσιμα προγράμματα είναι οι σελιδοποιητές (pagers) που επιτρέπουν την εμφάνιση ενός αρχείου κειμένου ανά σελίδα. Η χρήση τους είναι αρκετά απλή και συχνά προσφέρουν online βοήθεια. Ένα από τα πρώτα προγράμματα σελιδοποιητής που χρησιμοποιείται ακόμη είναι το more, αν και πλέον θεωρείται ξεπερασμένο. Πολύ πιο εύχρηστο και λειτουργικό είναι το πρόγραμμα less που ονομάστηκε έτσι χάριν του λογοπαίγνιου “less is more”!

Και τα δύο προγράμματα είναι πολύ απλά στη χρήση τους και η σύνταξή τους είναι η εξής:

$ more textfile
$ less textfile

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

Εντολές cat και tac

Οι εντολές cat και tac τυπώνουν στην πρότυπη έξοδο το αρχείο ή τα αρχεία που δέχονται ως παραμέτρους. Η διαφορά της tac είναι ότι τυπώνει το αρχείο ανάστροφα, από το τέλος προς την αρχή.
Ειδικά η εντολή cat είναι πολύ χρήσιμη, καθώς μπορεί να χρησιμοποιηθεί για αντιγραφή, συνένωση, προσάρτηση αρχείων, όπως θα δούμε και στα ακόλουθα παραδείγματα.

Η σύνταξή της είναι:

cat [OPTIONS] file ...
tac [OPTIONS] file ...

Αν δεν δοθεί όνομα αρχείου, λαμβάνεται η πρότυπη είσοδος (standard input). Οι επιλογές που δέχεται η cat είναι οι εξής:

Επιλογές
Λειτουργία
-A
--show-all
Ισοδύναμο με τη χρήση των επιλογών -vET.
-b
--number-nonblank
Αρίθμηση μη κενών γραμμών.
-E
--show-ends
Εμφάνιση του χαρακτήρα $ στο τέλος κάθε γραμμής (Linefeed).
-n
--number
Αρίθμηση όλων των γραμμών (ακόμη και των κενών).
-T
--show-tabs
Εμφάνιση του χαρακτήρα TAB ως ^I.
-v
--show-nonprinting
Εμφάνιση των μη εκτυπώσιμων χαρακτήρων χρησιμοποιώντας τη σύνταξη ^ (CTRL-) και M- (ESC-). Δεν τυπώνει τους χαρακτήρες Linefeed και TAB.

Παραδείγματα χρήσης της cat:

$ cat file1 file2 |less

Τυπώνει τα περιεχόμενα των αρχείων file1 και file2 στην πρότυπη έξοδο και μέσω σωλήνωσης στην εντολή less.

$ cat file1 >file2
$ cat <file1 >file2

Οι δύο αυτές εντολές αντιγράφουν το αρχείο file1 στο αρχείο file2 και είναι ισοδύναμες με την εντολή αντιγραφής αρχείων cp:

cp file1 file2

$ cat file1 file2 >> file3

Προσάρτηση των αρχείων file1 και file2 στο τέλος του αρχείου file3.

$ cat part*.txt >whole.txt 

Συνένωση όλων των αρχείων part*.txt σε ένα ενιαίο αρχείο whole.txt.

$ cat >file
This is a piece of text.
EOF
$ cat file
This is a piece of text.

Η πρώτη κλήση της cat χρησιμοποιεί την πρότυπη είσοδο στην οποία δίνουμε το κείμενο “This is a piece of text.” και το χαρακτήρα EOF (End of file, συνήθως [CTRL]-\). Η δεύτερη κλήση της cat απλώς τυπώνει αυτό που δημιουργήσαμε.

Εντολές head και tail

Οι εντολές head και tail εμφανίζουν την κεφαλίδα και το τέλος (την “ουρά”) ενός αρχείου κειμένου αντίστοιχα. Ειδικά η εντολή tail είναι από τα πιο χρήσιμα εργαλεία για τους διαχειριστές συστήματος.

head [OPTIONS] file
tail [OPTIONS] file

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

Επιλογές
Λειτουργία
-c N
--bytes=N
Εμφάνιση των πρώτων (για τη head) ή των τελευταίων (για την tail) N bytes.
-n N
--lines=N
Εμφάνιση των πρώτων (για τη head) ή των τελευταίων (για την tail) N γραμμών κειμένου. Η προκαθορισμένη τιμή για το N είναι 10.
-f
--follow
(Μόνο για την tail) Εμφάνιση των προσαρτημένων γραμμών καθώς το αρχείο μεγαλώνει. Η follow δέχεται τις επιλογές descriptor ή name. Η προκαθορισμένη είναι η descriptor, με την οποία η tail παρακολουθεί το αρχείο ακόμη και αν αλλάξει όνομα (στην ουσία παρακολουθεί το file descriptor). Με την επιλογή name, η tail παρακολουθεί πάντα το αρχείο που φέρει το όνομα file.
-F (Μόνο για την tail) Ισοδύναμο με --follow=name --retry.
--retry (Μόνο για την tail) Ξαναπροσπαθεί να ανοίξει το αρχείο file ακόμη και αν δεν είναι προσπελάσιμο όταν η tail ξεκινάει ή κατά τη διάρκεια της εκτέλεσής της. Η επιλογή αυτή είναι χρήσιμη μόνο σε συνδυασμό με τη -f.

Ακολουθούν παραδείγματα χρήσης της head και tail:

$ head -c 1000 file

Τυπώνει τα 1000 πρώτα bytes του αρχείου file.

$ tail -n 100 file

Τυπώνει τις τελευταίες 100 γραμμές του αρχείου file.

$ tail -f logfile

Παρακολουθεί και εμφανίζει τα περιεχόμενα του αρχείου logfile, ακόμη και αν αυτό αλλάξει όνομα ή θέση.

$ tail -F /var/log/syslog

Παρακολουθεί και εμφανίζει τα περιεχόμενα του αρχείου που φέρει πάντα το όνομα /var/log/syslog ακόμη και αν αυτό αλλάξει κατά τη διάρκεια εκτέλεσης της εντολής tail.

Καταμέτρηση περιεχομένων αρχείων με τη wc

Για την καταμέτρηση των περιεχομένων των αρχείων χρησιμοποιούμε την εντολή wc. Η εντολή wc επιστρέφει στατιστικές πληροφορίες για ένα αρχείο κειμένου, και συγκεκριμένα τον αριθμό των bytes, χαρακτήρων, λέξεων και γραμμών του αρχείου. Ακολουθεί την ίδια σύνταξη:

wc [OPTIONS] file ...

ή αν δεν δοθεί το file, χρησιμοποιείται η πρότυπη είσοδος (standard input). Δέχεται τις εξής επιλογές:

Επιλογές
Λειτουργία
-c
--bytes
Εμφανίζει τον αριθμό των bytes του αρχείου.
-m
--chars
Εμφανίζει τον αριθμό των χαρακτήρων του αρχείου.
-l
--lines
Εμφανίζει τον αριθμό των γραμμών κειμένου του αρχείου.
-L
--max-line-length
Τυπώνει το μήκος της μεγαλύτερης σε μήκος γραμμής.
-w
--words
Εμφανίζει τον αριθμό των λέξεων του αρχείου.

Παραδείγματα:

[/code]
$ wc sample.txt
10 29 278 sample.txt
[/code]

Δηλαδή το αρχείο sample.txt έχει 278 χαρακτήρες, 29 λέξεις και 10 γραμμές κειμένου.
Η wc χρησιμοποιείται συχνά σε συνδυασμό με άλλες εντολές. Π.χ., για να δούμε πόσους χρήστες έχουμε συνδεδεμένους στο σύστημα αυτή τη στιγμή:

[/code]
$ who |wc -l
17
[/code]

δηλαδή έχουμε 17 χρήστες συνδεδεμένους στο σύστημα αυτή τη στιγμή.

0
Your rating: None