Πώς να ανακατευθύνετε το stderr στο stdout στο Bash

How Redirect Stderr Stdout Bash



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







Κάθε διαδικασία στο Linux παράγει τρεις ροές δεδομένων, stdin, stdout και stderr:



  • stdin : Λαμβάνει πληροφορίες από το χρήστη μέσω πληκτρολογίου
  • stdout : Εμφανίζει την έξοδο στην οθόνη
  • stderr : Εμφανίζει πληροφορίες σφάλματος στην οθόνη

Κάθε ροή δεδομένων έχει ένα αριθμητικό αναγνωριστικό:



Αριθμητικό αναγνωριστικό Ονομα
0 stdin
1 stdout
2 stderr

Ας εξηγήσουμε λίγο περισσότερο την ανακατεύθυνση με λεπτομέρειες:





Πώς να ανακατευθύνετε την τυπική έξοδο και το τυπικό σφάλμα στο Bash:

Για να ανακατευθύνουμε την τυπική έξοδο της εντολής, θα χρησιμοποιήσουμε το 1 με τελεστή ανακατεύθυνσης μεγαλύτερο από το σύμβολο>:

$ls 1>>stdout.txt

Η παραπάνω εντολή θα δημιουργήσει ένα αρχείο και θα τοποθετήσει την τυπική έξοδο της εντολής ls στο αρχείο stdout.txt.



Για να διαβάσετε το αρχείο stdout.txt, χρησιμοποιήστε:

$Γάταstdout.txt

Μπορούμε επίσης να ανακατευθύνουμε το τυπικό σφάλμα σε ένα αρχείο χρησιμοποιώντας την εντολή:

$Γάταmyfile.txt2>>stderr.txt

Για να προβάλετε το αρχείο stderr.txt, χρησιμοποιήστε:

$Γάταstderr.txt

Βεβαιωθείτε ότι η χρήση 2 θα είναι μεγαλύτερη από το σύμβολο>. Δεδομένου ότι δεν υπάρχει αρχείο myfile.txt στον κατάλογο, η εντολή cat θα δώσει ένα σφάλμα που θα προσαρτηθεί στο αρχείο stderr.txt.

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

$ls 1>>stdout.txt2>>stderr.txt

Η έξοδος της εντολής ls θα γραφτεί στο stdout.txt αρχείο, αλλά το stderr.txt θα παραμείνει κενό γιατί δεν θα υπήρχε σφάλμα.

Τώρα ας κάνουμε για το stderr.txt:

$Γάταmyfile.txt1>>stdout.txt2>>stderr.txt

Χρησιμοποιήστε την παρακάτω εντολή για να διαβάσετε το stderr.txt.

$Γάταstderr.txt

Και φυσικά, το stdout.txt θα είναι κενό.

συμπέρασμα :

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