Αγωγοί στο Unix [Unix Pipes]

Posted by superuser Sun, 10 Jun 2007 12:50:00 GMT

Οι αγωγοί (pipes) στο Unix επιτρέπουν με ευκολία να διευρύνουμε τις δυνατότητες εντολών που μπορούμε να δώσουμε από το κέλυφος. Στην ουσία pipes είναι αυτό που υποδηλώνει ακριβώς ο όρος. Είναι αγωγοί ή σωλήνες όπου στο ένα άκρο τους παίρνουν δεδομένα από την έξοδο μιας εντολής και τα μεταφέρουν στην είσοδο μιας άλλης εντολής. Τόσο απλά.

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

Ας δώσουμε ένα παράδειγμα:

$ cat arxeio.txt 

Η εντολή cat δίνει στην έξοδο (μόνιτορ) το περιεχόμενο του αρχείου arxeio.txt. Μέχρι εδώ δεν υπάρχει κάτι παράξενο. Ας υποθέσουμε τώρα πως θέλω από το κείμενο του αρχείου arxeio.txt να βρω όλες τις αναφορές στην λέξη "Greece". Η ιδέα μου είναι χρησιμοποιήσω έναν αγωγό που θα μεταφέρει τα δεδομένα εξόδου της εντολής cat arxeio.txt (στην ουσία το περιεχόμενο του αρχείου) στην είσοδο της εντολής grep Greece που θα ψάξει να βρει τις γραμμές στις οποίες υπάρχει ο όρος "Greece".
$ cat arxeio.txt | grep Greece 

Το σύμβολο | συμβολίζει έναν αγωγό. Σημαίνει πως τα δεδομένα εξόδου της εντολής που είναι στ'αριστερά του θα μεταφερθούν στην είσοδο της εντολής που είναι δεξιά του. Οι δυνατότητες των αγωγών είναι άπειρες και βάλτε τη φαντασία σας να δουλέψει. Ακολουθεί ένα ακόμη παράδειγμα. Η εντολή ls δίνει στην έξοδο της τα περιεχόμενα του τρέχοντος φακέλου, ενώ η εντολή sort τα ταξινομεί αλφαβητικά:

$ ls | sort

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

$ ls | grep Free | sort

Η εντολή ls δίνει στην έξοδο της τα περιεχόμενα του τρέχοντος φακέλου, απ'τα οποία η εντολή grep βρίσκει σε ποιες γραμμές περιέχεται ο όρος Free και τέλος αυτές τις γραμμές η εντολή sort της ταξινομεί αλφαβητικά.

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

Posted in  | Tags , , , ,  | no comments

Comments

(leave url/email »)

   Preview comment