Τι είναι το /dev /null και πώς να το χρησιμοποιήσετε

What Is Dev Null How Use It



Το Linux είναι ένα ενδιαφέρον λειτουργικό σύστημα που φιλοξενεί μερικές εικονικές συσκευές για πολλούς σκοπούς. Όσον αφορά τα προγράμματα που εκτελούνται στο σύστημα, αυτές οι εικονικές συσκευές λειτουργούν σαν να είναι πραγματικά αρχεία. Τα εργαλεία μπορούν να ζητούν και να τροφοδοτούν δεδομένα από αυτές τις πηγές. Τα δεδομένα παράγονται από το λειτουργικό σύστημα αντί να τα διαβάζουν από δίσκο.

Ένα τέτοιο παράδειγμα είναι το /dev /null. Είναι ένα ειδικό αρχείο που υπάρχει σε κάθε σύστημα Linux. Ωστόσο, σε αντίθεση με τα περισσότερα άλλα εικονικά αρχεία, αντί για ανάγνωση, χρησιμοποιείται για γραφή. Ό, τι γράφετε στο /dev /null θα απορριφθεί, θα ξεχαστεί στο κενό. Είναι γνωστή ως μηδενική συσκευή σε σύστημα UNIX.







Γιατί θα θέλατε να απορρίψετε κάτι στο κενό; Ας δούμε τι είναι το /dev /null και τη χρήση του.



Προαπαιτούμενα

Πριν βουτήξουμε βαθιά στη χρήση του /dev /null, πρέπει να έχουμε μια σαφή κατανόηση του stdout και stderr ροή δεδομένων. Δείτε αυτό σε βάθος οδηγό για stdin , stderr , και stdout Το



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





Για παράδειγμα, η ακόλουθη εντολή θα εκτυπώσει τη συμβολοσειρά μέσα στο διπλό εισαγωγικό. Εδώ, η έξοδος αποθηκεύεται στο stdout Το

$πέταξε έξωΓειά σου Κόσμε



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

$πέταξε έξω $?

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

$ adfadsf
$πέταξε έξω $?

Τώρα, πρέπει να γνωρίζουμε για τον περιγραφέα αρχείων. Στο οικοσύστημα UNIX, αυτές είναι ακέραιες τιμές που έχουν εκχωρηθεί σε ένα αρχείο. Και τα δυο stdout (περιγραφέας αρχείου = 1) και stderr (περιγραφέας αρχείου = 2) διαθέτουν συγκεκριμένο περιγραφέα αρχείων. Χρησιμοποιώντας τον περιγραφέα αρχείων (1 και 2 σε αυτήν την περίπτωση), μπορούμε να ανακατευθύνουμε το stdout και stderr σε άλλα αρχεία.

Για αρχή, το ακόλουθο παράδειγμα θα ανακατευθύνει το stdout της εντολής echo σε ένα αρχείο κειμένου. Εδώ, δεν καθορίσαμε τον περιγραφέα αρχείων. Εάν δεν καθορίζεται, θα χρησιμοποιηθεί το bash stdout από προεπιλογή.

$πέταξε έξωΓειά σου Κόσμε>>log.txt

Η ακόλουθη εντολή θα ανακατευθύνει το stderr σε αρχείο κειμένου.

$asdfadsa2>>error.txt

Χρησιμοποιώντας /dev /null

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

Τώρα, είμαστε έτοιμοι να μάθουμε πώς να χρησιμοποιούμε /dev /null. Αρχικά, ας δούμε πώς να φιλτράρετε την κανονική έξοδο και σφάλμα. Στην ακόλουθη εντολή, το grep θα προσπαθήσει να αναζητήσει μια συμβολοσειρά (γεια, σε αυτήν την περίπτωση) στον κατάλογο /sys.

$λαβή -rγεια σας/sys/

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

$λαβή -rγεια σας/sys/ 2>> /dev/μηδενικό

Η έξοδος φαίνεται πολύ καλύτερη, σωστά; Τίποτα! Σε αυτήν την περίπτωση, το grep δεν έχει πρόσβαση σε πολλά αρχεία και αυτά που είναι προσβάσιμα δεν έχουν το string hello.

Στο ακόλουθο παράδειγμα, θα κάνουμε ping στο Google.

$πινγκGoogle com

Ωστόσο, δεν θέλουμε να δούμε όλα αυτά τα επιτυχημένα αποτελέσματα ping. Αντ 'αυτού, θέλουμε να επικεντρωθούμε μόνο στα σφάλματα όταν το ping δεν μπορούσε να φτάσει στο Google. Πώς θα το κάνουμε αυτό;

$πινγκGoogle com1>> /dev/μηδενικό

Εδώ, το περιεχόμενο του stdout απορρίπτονται στο /dev /null, αφήνοντας μόνο τα σφάλματα.

Ανακατευθύνετε όλη την έξοδο στο /dev /null

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

$λαβή -rγεια σας/sys/ >> /dev/μηδενικό2> &1

Ας σπάσουμε λίγο αυτήν την εντολή. Πρώτον, τα απορρίπτουμε όλα stdout σε /dev /null. Στη συνέχεια, στο δεύτερο μέρος, λέμε στο bash να στείλει stderr προς το stdout Το Σε αυτό το παράδειγμα, δεν υπάρχει τίποτα για εξαγωγή. Ωστόσο, εάν έχετε μπερδευτεί, μπορείτε πάντα να ελέγξετε εάν η εντολή εκτελέστηκε με επιτυχία.

$πέταξε έξω $?

Η τιμή είναι 2 επειδή η εντολή δημιούργησε πολλά σφάλματα.

Εάν τείνετε να ξεχάσετε τον περιγραφέα αρχείων του stdout και stderr , η παρακάτω εντολή θα είναι μια χαρά. Είναι μια πιο γενικευμένη μορφή της προηγούμενης εντολής. Και τα δυο stdout και stderr θα ανακατευθυνθεί στο /dev /null.

$λαβή -rγεια σας/sys/ &> /dev/μηδενικό

Άλλα παραδείγματα

Αυτό είναι ένα ενδιαφέρον. Θυμάστε το εργαλείο dd; Είναι ένα ισχυρό εργαλείο για τη μετατροπή και αντιγραφή αρχείων. Μάθετε περισσότερα για το dd. Χρησιμοποιώντας το dd, μπορούμε να δοκιμάσουμε την διαδοχική ταχύτητα ανάγνωσης του δίσκου σας. Φυσικά, δεν είναι ακριβής μέτρηση. Ωστόσο, για μια γρήγορη δοκιμή, είναι αρκετά χρήσιμο.

$δ.δ αν=<big_file>> του=/dev/μηδενικόκατάσταση= πρόοδοςbs= 1 εκατiflag= άμεση

Εδώ, έχω χρησιμοποιήσει το Ubuntu 18.04.4 ISO ως το μεγάλο αρχείο.

Ομοίως, μπορείτε επίσης να δοκιμάσετε την ταχύτητα λήψης της σύνδεσής σας στο Διαδίκτυο.

$wget -Ή /dev/μηδενικό<big_file_link>>

Τελικές σκέψεις

Ας ελπίσουμε ότι έχετε σαφή κατανόηση του τι είναι αυτό το αρχείο /dev /null. Είναι μια ειδική συσκευή που, αν είναι γραμμένη σε αυτήν, απορρίπτει και αν διαβαστεί από αυτήν, διαβάζει μηδέν. Το πραγματικό δυναμικό αυτής της ενδιαφέρουσας δυνατότητας βρίσκεται σε ενδιαφέροντα σενάρια bash.

Σας ενδιαφέρει το σενάριο bash; Ολοκλήρωση παραγγελίας Ο οδηγός για αρχάριους για το σενάριο bash Το

Απολαμβάνω!