Τι είναι / dev / null και πώς μπορεί να σας βοηθήσει;

Εάν έχουμε ήδη κάποιες έννοιες σχετικά με το δέντρο καταλόγων GNU / Linux, θα πρέπει τουλάχιστον να είμαστε εξοικειωμένοι με το / dev / reference, το οποίο ουσιαστικά είναι όπου όλα τα αρχεία σχετίζονται με συσκευές υλικού.

Αν κοιτάξουμε στον κατάλογο / dev / θα δούμε ένα "αρχείο" που ονομάζεται μηδέν, αλλά αν θέλουμε να το ανοίξουμε για να δούμε το περιεχόμενό του, το σύστημα θα μας πει ότι δεν είναι δυνατό, αφού δεν είναι συνηθισμένο περιεχόμενο. Έχω εσωκλείσει το αρχείο λέξεων επειδή, όπως γνωρίζετε όλοι για το Linux όλα (υλικό και λογισμικό) αντιπροσωπεύονται ως αρχείο.

Αυτή είναι μια συνεισφορά του Ντάνιελ Ντάραντε, καθιστώντας έτσι έναν από τους νικητές του εβδομαδιαίου διαγωνισμού μας: «Μοιραστείτε ό, τι γνωρίζετε για το Linux«. Συγχαρητήρια Ντάνιελ!

Σε ποια συσκευή αντιστοιχεί / dev / null;

Για πρακτικούς σκοπούς, φανταστείτε ένα δοχείο σκουπιδιών, ένα απύθμενο λάκκο ή ένα διάστημα στο οποίο μπορείτε να ρίξετε οτιδήποτε χωρίς τη δυνατότητα ανάκτησής του (ανεξάρτητα από το πόσο σκληρά προσπαθούν τα παιδιά από τη NASA)

Αλλά αν έχω ήδη εντολές όπως rm, γιατί θέλω να διαγράψω κάτι νέο;

Επειδή ο τρόπος με τον οποίο λειτουργούν και οι δύο "μαύρες τρύπες" είναι εντελώς διαφορετικός: πώς θα ξεπεράσατε την τυπική έξοδο ενός σφάλματος σε μια εντολή σε ένα σενάριο κελύφους κατά το χρόνο εκτέλεσης; Εδώ μπαίνει το / dev / null.

Ας το δούμε με ένα παράδειγμα.

Έχουμε δημιουργήσει ένα αρχείο που ονομάζεται δοκιμές που περιέχει τη συμβολοσειρά "Hello World". Εάν θέλουμε να αντιπροσωπεύσουμε το περιεχόμενο αυτού του αρχείου στη γραμμή εντολών, θα μπορούσαμε να το κάνουμε με τον ακόλουθο τρόπο:

user @ laptop: ~ $ δοκιμή γάτας
Γειά σου Κόσμε

Εάν το αρχείο δεν υπήρχε ή ονομαζόταν δοκιμές (με 's' στο τέλος), θα λάβουμε το ακόλουθο σφάλμα στην κονσόλα:

user @ laptop: ~ $ δοκιμές γάτας
cat: testing: Το αρχείο ή ο κατάλογος δεν υπάρχει

Τι θα μπορούσαμε να κάνουμε για να αποφύγουμε το μήνυμα σφάλματος; Λοιπόν, απλώς ανακατευθύνετε την έξοδο της εντολής, σε περίπτωση σφάλματος, σε "κάδο απορριμμάτων", δηλαδή στο / dev / null

Πώς το ορίζουμε σε περίπτωση σφάλματος; Εδώ εισάγετε τις τυπικές τιμές εισόδου, εξόδου και σφάλματος για ένα πρόγραμμα: STDIN, STDOUT και STDERR (τα οποία μπορούν να αντικαταστήσουν τα 0, 1 και 2 αντίστοιχα). Με αυτόν τον τρόπο, αν βάλουμε ...

user @ laptop: ~ $ cat testing 2> / dev / null
χρήστης @ φορητός υπολογιστής: ~ $

… Θα δούμε ότι το μήνυμα σφάλματος δεν θα δημιουργηθεί στην κονσόλα.

Πρέπει να είστε προσεκτικοί γιατί η σύνταξη είναι απαραίτητη: μεταξύ των χαρακτήρων 2 και> δεν πρέπει να υπάρχει κενό. Διαφορετικά, θα δώσει τα εξής:

user @ laptop: ~ $ cat testing 2> / dev / null
cat: testing: Το αρχείο ή ο κατάλογος δεν υπάρχει
cat: 2: Το αρχείο ή ο κατάλογος δεν υπάρχει

Αντίθετα, ένα διάστημα μεταξύ> και / dev / null δεν θα επηρεάσει αρνητικά το αποτέλεσμα.

Θα μπορούσαμε επίσης να χρησιμοποιήσουμε την ανακατεύθυνση σφαλμάτων, για παράδειγμα, για την καταγραφή σφαλμάτων σε ένα αρχείο καταγραφής ως εξής:

user @ laptop: ~ $ cat testing 2> err.log

Μια άλλη ενδιαφέρουσα περίπτωση θα ήταν η συλλογή αποτελεσμάτων σε άλλο αρχείο, εφόσον δεν υπάρχει σφάλμα, για το οποίο θα θέλαμε:

user @ laptop: ~ $ cat test 1> output_result 2> err.log

Τέλος, αξίζει να βάλετε την έκφραση «> / dev / null 2> & 1» στην οποία συνδυάζονται η τυπική έξοδος και η έξοδος σφάλματος, ανακατευθύνοντάς τα έτσι ώστε σε καμία περίπτωση να μην ληφθούν οι πληροφορίες εξόδου.


8 σχόλια, αφήστε τα δικά σας

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Γκουίντο Ιγνάσιο Ιγνάσιο dijo

    Αχ, αλλά λείπει ένα από τα πιο χρησιμοποιημένα βοηθητικά προγράμματα που / dev / null, το οποίο αδειάζει αρχεία: $ cat / dev / null> file.log Με αυτόν τον τρόπο, το αρχείο file.log θα είναι κενό Προσθέστε το!

    1.    Έντουαρντο Χ dijo

      Ήταν ακριβώς η εξήγηση που έψαχνε.
      Υποστηρίζω την κίνηση για να το προσθέσω =)

      Saludos!

  2.   Παύλος dijo

    Γεια σας, πρώτα απ 'όλα το άρθρο είναι πολύ καλό! το δεύτερο θα ήθελα να συνεισφέρω κάτι με αυτόν τον σύνδεσμο στο θέμα cron δουλειά στο php από την Cpanel και τα τρίτα συγχαρητήρια για το blog!

  3.   Παύλος dijo

    Ωραίο άρθρο για το dev / null, τι κρίμα που νομίζω ότι σχολίασα λάθος σε λάθος μέρος πριν! ΖΗΤΩ συγγνωμη

  4.   ανώνυμος dijo

    καλή συμβολή, χάρη

  5.   Τζερς dijo

    Χαιρετίσματα δέχομαι μηδενική επίθεση. Χρησιμοποιώ το andrirc και παίρνω ένα ιδιωτικό από το ψευδώνυμό μου με τη λέξη Null. 2 δευτερόλεπτα αργότερα κλείνει το πρόγραμμα που έχω διαβάσει και από αυτό που βλέπω αυτό μπορεί να γίνει μόνο από τη Shell, όχι από κάποιον εξωτερικό. Προσπάθησα να αγνοήσω τον εαυτό μου / να αγνοήσω -lrpcntikd και Τίποτα δεν με εκπλήσσει η εντολή συνεχίζει. Εάν έχετε κάποιο τρόπο να προσπαθήσετε να το αποκλείσετε, θα το εκτιμούσα. Στην υγειά σας

  6.   Σοφία μαρτινέζ dijo

    Τι συμβαίνει εάν κατά την εκτέλεση της πρότασης το σύμβολο> δεν έχει τοποθετηθεί;

    Θα μπορούσε κάποιος να με καθοδηγήσει παρακαλώ;

  7.   Μηδέν dijo

    Καλημέρα, έχω εγκαταστήσει το Debian netinst στο ACER Extensa 5620Z – 32 bit. Μόλις ολοκληρωθεί η εγκατάσταση από USB και αφαιρεθεί το pendrive ώστε να εκκινήσει από τον σκληρό δίσκο (μην επανεγκαταστήσετε από το στυλό) αλλά τη στιγμή της εκκίνησης το σύστημα που με ρωτάει:
    Σύνδεση στο debian: xxxxxxxx (οκ)
    Κωδικός πρόσβασης: xxxxxxxx (εντάξει)
    nil@debian:~$ ???? τι είναι αυτό? Τι να βάλω εκεί;

    Χωρίς αυτήν την εντολή δεν μπορώ να προχωρήσω στην εκκίνηση του συστήματος.
    Μπορείς να με βοηθήσεις? Δεν ξέρω πώς να συνεχίσω.
    Ευχαριστώ πολύ. Θερμούς χαιρετισμούς.