Was ist / dev / null und wie kann es Ihnen helfen?

Wenn wir bereits einige Begriffe des GNU / Linux-Verzeichnisbaums haben, sollten wir zumindest mit der / dev / -Referenz vertraut sein, auf die sich alle Dateien beziehen Hardwaregeräte.

Wenn wir in das Verzeichnis schauen / Dev / Wir werden eine "Datei" namens sehen nullWenn wir es jedoch öffnen möchten, um seinen Inhalt anzuzeigen, teilt uns das System mit, dass dies nicht möglich ist, da es sich nicht um normalen Inhalt handelt. Ich habe die Wortdatei beigefügt, da, wie Sie alle für Linux wissen, alles (Hardware und Software) als Datei dargestellt wird.

Dies ist ein Beitrag von Daniel Durante und wird damit einer der Gewinner unseres wöchentlichen Wettbewerbs: «Teilen Sie mit, was Sie über Linux wissen«. Glückwunsch Daniel!

Welchem ​​Gerät entspricht / dev / null?

Stellen Sie sich aus praktischen Gründen eine Mülltonne, eine bodenlose Grube oder einen Weltraum vor, in den Sie alles werfen können, ohne es wiederherstellen zu können (egal wie sehr sich die Jungs von der NASA bemühen).

Aber wenn ich bereits Befehle wie rm habe, warum soll etwas Neues gelöscht werden?

Weil die Art und Weise, wie beide „Schwarzen Löcher“ funktionieren, völlig unterschiedlich ist: Wie würden Sie die Standardausgabe eines Fehlers in einem Befehl in einem Shell-Skript zur Laufzeit überschreiben? Hier kommt / dev / null ins Spiel.

Lassen Sie es uns anhand eines Beispiels sehen.

Wir haben eine Datei namens tests erstellt, die die Zeichenfolge "Hello World" enthält. Wenn wir den Inhalt dieser Datei in der Befehlszeile darstellen möchten, können Sie dies folgendermaßen tun:

Benutzer @ Laptop: ~ $ Katzentest
Hallo Welt

Wenn die Datei nicht vorhanden wäre oder als Test benannt wurde (mit einem 's' am Ende), wird in der Konsole der folgende Fehler angezeigt:

user @ Laptop: ~ $ Katzentests
cat: tests: Die Datei oder das Verzeichnis existiert nicht

Was können wir tun, um die Fehlermeldung zu vermeiden? Nun, leiten Sie die Ausgabe des Befehls im Fehlerfall einfach in eine "Mülltonne" um, dh nach / dev / null

Wie spezifizieren wir es im Fehlerfall? Hier geben Sie die Standardeingabe-, Ausgabe- und Fehlerwerte für ein Programm ein: STDIN, STDOUT und STDERR (die durch 0, 1 bzw. 2 ersetzt werden können). Auf diese Weise, wenn wir ...

Benutzer @ Laptop: ~ $ cat testet 2> / dev / null
Benutzer @ Laptop: ~ $

… Wir werden sehen, dass die Fehlermeldung nicht auf der Konsole angezeigt wird.

Sie müssen vorsichtig sein, da die Syntax wichtig ist: Zwischen den Zeichen 2 und> sollte kein Leerzeichen stehen. Andernfalls würde es Folgendes geben:

Benutzer @ Laptop: ~ $ cat testet 2> / dev / null
cat: tests: Die Datei oder das Verzeichnis existiert nicht
cat: 2: Die Datei oder das Verzeichnis existiert nicht

Im Gegensatz dazu wirkt sich ein Leerzeichen zwischen> und / dev / null nicht negativ auf das Ergebnis aus.

Wir könnten auch die Fehlerumleitung verwenden, um beispielsweise Fehler in einer Protokolldatei wie folgt zu erfassen:

user @ Laptop: ~ $ cat tests 2> err.log

Ein weiterer interessanter Fall wäre die Erfassung von Ergebnissen in einer anderen Datei, solange kein Fehler auftritt, für den wir Folgendes angeben würden:

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

Schließlich ist es möglich, den Ausdruck «> / dev / null 2> & 1» einzufügen, in dem die Standardausgabe und die Fehlerausgabe kombiniert werden, und sie so umzuleiten, dass in keinem Fall Ausgabeinformationen erhalten werden.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Guido Ignatius Ignatius sagte

    Ah, aber eines der am häufigsten verwendeten Dienstprogramme von / dev / null fehlt, nämlich das Leeren von Dateien: $ cat / dev / null> file.log Auf diese Weise ist die Datei file.log leer. Füge es hinzu!

    1.    Eduardo H. sagte

      Es war genau die Erklärung, nach der er suchte.
      Ich unterstütze den Antrag, ihn hinzuzufügen =)

      Saludos!

  2.   Pablo sagte

    Hallo, vor allem ist der Artikel sehr gut! Zum zweiten möchte ich mit diesem Link etwas zum Thema beitragen Cron Job in PHP von Cpanel und die dritten Glückwünsche für den Blog!

  3.   Pablo sagte

    Schöner Artikel über dev / null, was für eine Schande, ich glaube, ich habe ihn fälschlicherweise an der falschen Stelle kommentiert! Ich entschuldige mich

  4.   anonym sagte

    Dank guter Beitrag

  5.   Trikots sagte

    Grüße Ich bekomme keinen Angriff. Ich benutze andrirc und bekomme einen privaten von meinem Spitznamen mit dem Wort Null. 2 Sekunden später schließt das Programm, das ich gelesen habe, und soweit ich sehe, kann dies nur von der Shell durchgeführt werden, nicht von einer externen Person. Ich habe versucht, mich selbst zu ignorieren / -lrpcntikd zu ignorieren und nichts überrascht mich, dass der Befehl immer wieder kommt. Wenn Sie versuchen können, es zu blockieren, würde ich es begrüßen. Prost

  6.   Sofia martinez sagte

    Was passiert, wenn bei der Ausführung des Satzes das Symbol> nicht platziert wird?

    Könnte mich bitte jemand führen?

  7.   Null sagte

    Guten Morgen, ich habe Debian netinst in ACER Extensa 5620Z – 32 Bit installiert.Sobald die Installation von USB abgeschlossen ist und der Pendrive entfernt wird, bootet er von der Festplatte (nicht vom Stift neu installieren), sondern im Moment des Bootens das system sie fragt mich:
    Debian-Login: xxxxxxxx (ok)
    Passwort: xxxxxxxx (ok)
    nil@debian:~$ ???? was ist das? Was soll ich da hinstellen?

    Ohne diesen Befehl kann ich nicht mit dem Systemstart fortfahren.
    Kannst du mir helfen? Ich weiß nicht, wie ich weitermachen soll.
    Danke sehr. Mit freundlichen Grüßen.