Ανακατεύθυνση εισόδου εξόδου σε Παραδείγματα Linux/Unix

Τι είναι η ανακατεύθυνση;

Η ανακατεύθυνση είναι μια δυνατότητα στο Linux έτσι ώστε κατά την εκτέλεση μιας εντολής, μπορείτε να αλλάξετε τις τυπικές συσκευές εισόδου/εξόδου. Η βασική ροή εργασίας οποιουδήποτε Εντολή Linux είναι ότι παίρνει μια είσοδο και δίνει μια έξοδο.

  • Η τυπική συσκευή εισόδου (stdin) είναι το πληκτρολόγιο.
  • Η τυπική συσκευή εξόδου (stdout) είναι η οθόνη.

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

Πατήστε εδώ εάν το βίντεο δεν είναι προσβάσιμο

Ανακατεύθυνση εξόδου

Η ">Το σύμβολο ' χρησιμοποιείται για την ανακατεύθυνση εξόδου (STDOUT).

Ανακατεύθυνση εξόδου

Παράδειγμα:

ls -al > listings

Εδώ η έξοδος της εντολής ls -al κατευθύνεται εκ νέου στο αρχείο "λίστες" αντί στην οθόνη σας.

Ανακατεύθυνση εξόδου

Note: Χρησιμοποιήστε το σωστό όνομα αρχείου κατά την ανακατεύθυνση της εξόδου εντολής σε ένα αρχείο. Εάν υπάρχει ένα υπάρχον αρχείο με το ίδιο όνομα, η εντολή ανακατεύθυνσης θα διαγράψει τα περιεχόμενα αυτού του αρχείου και στη συνέχεια μπορεί να αντικατασταθεί."

Εάν δεν θέλετε να αντικατασταθεί ένα αρχείο αλλά θέλετε να προσθέσετε περισσότερο περιεχόμενο σε ένα υπάρχον αρχείο, τότε θα πρέπει να χρησιμοποιήσετε '>>» operaβραχώδης κορυφή.

Ανακατεύθυνση εξόδου

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

$ cat music.mp3 > /dev/audio

Η εντολή cat διαβάζει το αρχείο music.mp3 και στέλνει την έξοδο στο /dev/audio που είναι η συσκευή ήχου. Εάν οι διαμορφώσεις ήχου στον υπολογιστή σας είναι σωστές, αυτή η εντολή θα αναπαράγει το αρχείο music.mp3

Ανακατεύθυνση εισόδου

Η 'Το σύμβολο ' χρησιμοποιείται για την ανακατεύθυνση εισόδου (STDIN).

Ανακατεύθυνση εισόδου

Παράδειγμα: Η mail πρόγραμμα στο Linux μπορεί να σας βοηθήσει να στείλετε emails από τον τερματικό σταθμό.

Μπορείτε να πληκτρολογήσετε τα περιεχόμενα του email χρησιμοποιώντας το τυπικό πληκτρολόγιο συσκευής. Αλλά αν θέλετε να επισυνάψετε ένα Αρχείο στο email μπορείτε να χρησιμοποιήσετε την ανακατεύθυνση εισόδου operator στο following μορφή.

Mail -s "Subject" to-address < Filename

Ανακατεύθυνση εισόδου

Αυτό θα επισυνάψει το αρχείο με το email, και θα αποσταλεί στον παραλήπτη.

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

Περιγραφείς αρχείων (FD)

Στο Linux/Unix, όλα είναι ένα αρχείο. Το κανονικό αρχείο, οι κατάλογοι, ακόμη και οι συσκευές είναι αρχεία. Κάθε Αρχείο έχει έναν συσχετισμένο αριθμό που ονομάζεται Περιγραφέας Αρχείου (FD).

Η οθόνη σας διαθέτει επίσης Περιγραφέα αρχείου. Όταν εκτελείται ένα πρόγραμμα, η έξοδος αποστέλλεται στο File Descriptor της οθόνης και βλέπετε την έξοδο του προγράμματος στην οθόνη σας. Εάν η έξοδος αποσταλεί στον Περιγραφέα Αρχείων του εκτυπωτή, η έξοδος του προγράμματος θα είχε εκτυπωθεί.

Ανακατεύθυνση σφάλματος

Κάθε φορά που εκτελείτε ένα πρόγραμμα/εντολή στο τερματικό, 3 αρχεία είναι πάντα ανοιχτά, viz., τυπική είσοδος, τυπική έξοδος, τυπικό σφάλμα.

Ανακατεύθυνση σφάλματος

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

Αρχεία Περιγραφέας αρχείου
Τυπική είσοδος STDIN 0
Τυπική έξοδος STDOUT 1
Τυπικό σφάλμα STDERR 2

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

Γιατί Ανακατεύθυνση Σφάλματος;

Η ανακατεύθυνση σφαλμάτων είναι ένα από τα πολύ δημοφιλή χαρακτηριστικά του Unix/Linux.

Οι συχνοί χρήστες του UNIX θα υπολογίσουν ότι πολλές εντολές σας δίνουν τεράστια ποσά σφαλμάτων.

  • Για παράδειγμα, ενώ βλarching για αρχεία, συνήθως λαμβάνει κανείς σφάλματα άρνησης άδειας. Αυτά τα σφάλματα συνήθως δεν βοηθούν το άτομο να δειarching για ένα συγκεκριμένο αρχείο.
  • Κατά την εκτέλεση σεναρίων κελύφους, συχνά ΔΕΝ θέλετε μηνύματα σφάλματος που γεμίζουν την κανονική έξοδο του προγράμματος.

Η λύση είναι να ανακατευθύνετε τα μηνύματα σφάλματος σε ένα αρχείο.

Παράδειγμα 1

$ myprogram 2>errorsfile

Γιατί Ανακατεύθυνση Σφάλματος

Παραπάνω εκτελούμε ένα πρόγραμμα με όνομα myprogram.

Ο περιγραφέας αρχείου για τυπικό σφάλμα είναι 2.

Χρησιμοποιώντας το "2>" κατευθύνουμε ξανά την έξοδο σφάλματος σε ένα αρχείο με το όνομα "errorfile"

Έτσι, η έξοδος του προγράμματος δεν είναι γεμάτη με σφάλματα.

Παράδειγμα 2

Εδώ είναι ένα άλλο παράδειγμα που χρησιμοποιεί την εντολή find –

find . -name 'my*' 2>error.log

Χρησιμοποιώντας την εντολή «εύρεση», είμαστε searching το "." τρέχων κατάλογος για ένα αρχείο με "όνομα" που ξεκινά με "my"

Γιατί Ανακατεύθυνση Σφάλματος

Παράδειγμα 3: Ας δούμε περισσότερες complex παράδειγμα,

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

ls Documents ABC> dirlist 2>&1

Εδώ,

  • που γράφει την έξοδο από ένα αρχείο στην είσοδο ενός άλλου αρχείου. 2>&1 σημαίνει ότι το STDERR ανακατευθύνει στον στόχο του STDOUT (που είναι η λίστα αρχείων)
  • Ανακατευθύνουμε την έξοδο σφάλματος σε τυπική έξοδο, η οποία με τη σειρά της ανακατευθύνεται στη λίστα αρχείων. Ως εκ τούτου, τόσο η έξοδος γράφεται στη λίστα αρχείων

Γιατί Ανακατεύθυνση Σφάλματος

Χαρακτηριστικά

  • Κάθε αρχείο στο Linux έχει έναν αντίστοιχο Περιγραφέα Αρχείων που σχετίζεται με αυτό
  • Το πληκτρολόγιο είναι η τυπική συσκευή εισόδου ενώ η οθόνη σας είναι η τυπική συσκευή εξόδου
  • Το ">" είναι η ανακατεύθυνση εξόδου operaβραχώδης κορυφή. Το ">>" προσαρτά την έξοδο σε ένα υπάρχον αρχείο
  • Το "<" είναι η ανακατεύθυνση εισόδου operaTor
  • Το ">&"κατευθύνει εκ νέου την έξοδο ενός αρχείου σε ένα άλλο.
  • Μπορείτε να ανακατευθύνετε το σφάλμα χρησιμοποιώντας τον αντίστοιχο Περιγραφέα Αρχείου 2.