Δύο ισχυρά χαρακτηριστικά του κελύφους της γραμμής εντολών του Linux είναι η ανακατεύθυνση και οι σωλήνες που επιτρέπουν την έξοδο (ή και εισαγωγή) ενός προγράμματος να αποστέλλεται σε ένα αρχείο ή σε άλλο πρόγραμμα. Μπορεί να έχετε ήδη χρησιμοποιήσει αυτές τις λειτουργίες χωρίς να το γνωρίζετε. Όποτε χρησιμοποιείτε το σύμβολο " > " σε μια εντολή ή " | "Τότε έχετε χρησιμοποιήσει ανακατεύθυνση ή σωλήνα, αντίστοιχα.

Σε όλα τα λειτουργικά συστήματα που μοιάζουν με Unix, όπως το Linux και το FreeBSD, η έξοδος από ένα πρόγραμμα γραμμής εντολών πηγαίνει αυτόματα σε μια θέση γνωστή ως standard output (stdout). Από προεπιλογή, το standard out είναι η οθόνη (η κονσόλα) αλλά μπορεί να αλλάξει χρησιμοποιώντας σωλήνες και ανακατεύθυνση. Ομοίως, το πληκτρολόγιο θεωρείται η τυποποιημένη είσοδος (stdin) και όπως συμβαίνει με το πρότυπο, μπορεί να αλλάξει.

Σωλήνες

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

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

Ακολουθεί ένα παράδειγμα το οποίο θα απαριθμεί όλα τα αρχεία, με λεπτομέρειες ( -la ) στον κατάλογο /dev και θα διοχετεύει την έξοδο σε more . Ο /dev κατάλογος θα πρέπει να έχει δεκάδες αρχεία και ως εκ τούτου να εξασφαλίσει ότι χρειάζεται more paginate.

 ls -la / dev | περισσότερο 

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

Εδώ είναι ένα άλλο παράδειγμα σωλήνα, αυτή τη φορά χρησιμοποιώντας το εργαλείο " wc " (count word).

 ls -1 / dev | τουαλέτα 

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

Το σεμινάριο "Βάθος κατά την εκκίνηση και συμπίεση του Linux" έχει ένα παράδειγμα χρησιμοποιώντας το tar και το 7-Zip μαζί:

 πίσσα cvf - * 7zr a -si somefiles.tar.7z 

Σε αυτή την περίπτωση, το παύλα μετά την επιλογή f λέει στο tar να στείλει την έξοδο του στο πρότυπο έξω και όχι σε ένα αρχείο. Η έξοδος από tar θα τροφοδοτηθεί κάτω από το σωλήνα σε 7zr που περιμένει εισροή από το πρότυπο λόγω της επιλογής -si.

Ανακατεύθυνση

Η ανακατεύθυνση είναι παρόμοια με τους σωλήνες εκτός από τη χρήση αρχείων αντί για άλλο πρόγραμμα. Η τυπική έξοδος για ένα πρόγραμμα είναι η οθόνη. Χρησιμοποιώντας το σύμβολο > (μεγαλύτερο από), η έξοδος ενός προγράμματος μπορεί να αποσταλεί σε ένα αρχείο. Εδώ είναι μια λίστα καταλόγου /dev ξανά, αλλά αυτή τη φορά ανακατευθύνεται σε ένα αρχείο που ονομάζεται listing.txt

 ls -la> listing.txt 

Δεν θα εμφανιστεί τίποτα στο τερματικό καθώς όλα αποστέλλονται στο αρχείο. Μπορείτε να ρίξετε μια ματιά στο αρχείο χρησιμοποιώντας την εντολή cat (η οποία μπορεί να διοχετευτεί σε more ) ή για την ευκολία μπορείτε απλά να χρησιμοποιήσετε την more command από μόνη της:

 περισσότερα listing.txt 

Αν η listing.txt είχε ήδη υπάρξει, θα αντικατασταθεί. Αλλά μπορείτε να προσθέσετε σε ένα υπάρχον αρχείο χρησιμοποιώντας >> όπως αυτό:

 ls -la / αρχική> λίστα.txt ls -la / dev >> listing.txt 

Η πρώτη ανακατεύθυνση θα αντικαταστήσει το αρχείο listing.txt ενώ το δεύτερο θα listing.txt σε αυτό.

Η εντολή cat μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός αρχείου με χρήση ανακατεύθυνσης, για παράδειγμα:

 cat> atextfile.txt 

Τώρα ό, τι κείμενο θα πληκτρολογήσετε θα σταλεί στο αρχείο atextfile.txt μέχρι να πατήσετε Control-D, σε ποιο σημείο το αρχείο θα κλείσει και θα επιστρέψετε στη γραμμή εντολών. Εάν θέλετε να προσθέσετε περισσότερο κείμενο στο αρχείο, χρησιμοποιήστε την ίδια εντολή αλλά με δύο μεγαλύτερες από τις πινακίδες ( >> ).

συμπέρασμα

Πολλά από τα προγράμματα γραμμής εντολών του Linux έχουν σχεδιαστεί για να λειτουργούν με ανακατεύθυνση και σωλήνες, δοκιμάστε να τα πειραματιστείτε και δείτε πώς αλληλεπιδρούν. Για παράδειγμα, η έξοδος της εντολής ps, η οποία απαριθμεί τις τρέχουσες διαδικασίες, μπορεί να μεταφερθεί σε grep . Δείτε αν μπορείτε να επεξεργαστείτε τον τρόπο με τον οποίο μπορείτε να καταχωρίσετε τις διαδικασίες που ανήκουν στη ρίζα.