Σωληνώσεις

Εικόνα: markos
Submitted by markos on Κυρ, 04/03/2007 - 21:26

Ένας ακόμη τρόπος χρήσης της ανακατεύθυνσης είναι ο συνδυασμός των εντολών με διαύλους ή αγωγούς ή σωλήνες (pipes). Η συντακτική δομή ονομάζεται σωλήνωση (pipeline). Στην ουσία αυτό που επιτρέπουν οι σωληνώσεις είναι η χρήση του προτύπου αρχείου εξόδου μιας εντολής ως πρότυπο αρχείο εισόδου μιας άλλης εντολής. Αποφεύγεται έτσι η ενδιάμεση κατασκευή αρχείων που θα χρειαζόταν για να επεξεργαστούμε την έξοδο μιας εντολής μέσω μιας άλλης χωρίς μάλιστα να χρειάζεται ειδικός προγραμματισμός για τις εντολές αυτές.
Η χρήση της σωλήνωσης είναι αρκετά απλή. Μπορούμε να ορίσουμε μια σωλήνωση με τον τελεστή “|” ως εξής:

$ command1 | command2

Έτσι η έξοδος της εντολής command1 χρησιμοποιείται ως είσοδος στην εντολή command2. Ένα απλό παράδειγμα είναι η χρήση ενός προγράμματος σελιδοποίησης (pager), όπως το more ή το less, για να γίνει εφικτή η ανάγνωση κάποιων μακροσκελών αποτελεσμάτων ενός προγράμματος.

$ dpkg -l| less

Η σωλήνωση αυτή σελιδοποιεί την έξοδο του προγράμματος dpkg, το οποίο με την επιλογή -l, επιστρέφει τη λίστα όλων των πακέτων που είναι εγκατεστημένα στο σύστημα. Θα έχουμε μια πιο αναλυτική παρουσίαση και των δύο προγραμμάτων, dpkg και less, σε επόμενα κεφάλαια.

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

Η εντολή tee

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

$ command1 | tee file.log | command2

Η εντολή command1 στέλνει την έξοδό της στην tee, η οποία την αποθηκεύει με τη σειρά της σε ένα αρχείο file.log και ταυτόχρονα την αποστέλει – ως είσοδο πλέον – στην εντολή command2.

0
Your rating: None