Ανακατεύθυνση μηνύματα λάθους από τη γραμμή εντολών: STDERR/STDOUT


Σύνοψη


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


Έξοδος από μια εφαρμογή κονσόλας (γραμμή εντολών) ή την εντολή αποστέλλεται συχνά δύο ξεχωριστές ροές. Η κανονική έξοδος αποστέλλεται σε βασική Out (STDOUT) και τα μηνύματα λάθους αποστέλλονται σε τυπικό σφάλμα (STDERR). Όταν κάνετε ανακατεύθυνση κονσόλας εξόδου χρησιμοποιώντας την ">" σύμβολο, μόνο που ανακατεύθυνση STDOUT. Για να ανακατευθύνετε STDERR πρέπει να καθορίσετε "2 >" για το σύμβολο ανακατεύθυνσης. Αυτό κάνει την δεύτερη ροή εξόδου που είναι STDERR.

ΠΑΡΆΔΕΙΓΜΑ

Η εντολή "dir file.xxx" (όπου file.xxx δεν υπάρχει) θα εμφανίσει το ακόλουθο αποτέλεσμα:
Ο τόμος στη μονάδα δίσκου F είναι Candy Cane. Ο αριθμός σειράς τόμου είναι 34EC-0876


Το αρχείο δεν βρέθηκε
Εάν ανακατευθύνετε την έξοδο στο χρησιμοποιώντας συσκευή NUL "dir file.xxx > nul", θα εξακολουθείτε να βλέπετε το μήνυμα λάθους:
Το αρχείο δεν βρέθηκε
Για να ανακατευθύνετε το μήνυμα λάθους NUL, χρησιμοποιήστε την ακόλουθη εντολή:
   dir file.xxx 2> nul
Εναλλακτικά, μπορείτε να ανακατευθύνετε τα δεδομένα εξόδου σε μία θέση και τα σφάλματα σε μια άλλη.
   dir file.xxx > output.msg 2> output.err
Μπορείτε να εκτυπώσετε τα σφάλματα και την τυπική έξοδο σε ένα αρχείο χρησιμοποιώντας την εντολή "& 1" για να ανακατευθύνετε την έξοδο για STDERR στο STDOUT και, στη συνέχεια, να στείλει την έξοδο από STDOUT σε ένα αρχείο:

   dir file.xxx 1> output.msg 2>&1