Ich versuche, das Konzept spezieller Dateien unter Linux zu verstehen. Allerdings mit einer speziellen Datei in /dev
scheint einfach albern, wenn seine Funktion meines Wissens durch eine Handvoll Zeilen in C implementiert werden könnte.
Außerdem könnten Sie es auf ziemlich dieselbe Weise verwenden, d. h. in null
leiten anstatt nach /dev/null
umzuleiten . Gibt es einen bestimmten Grund dafür, es als Datei zu haben? Verursacht das Erstellen einer Datei nicht viele andere Probleme, z. B. zu viele Programme, die auf dieselbe Datei zugreifen?
Akzeptierte Antwort:
Neben den Leistungsvorteilen bei der Verwendung eines charakterspezifischen Geräts ist der Hauptvorteil die Modularität . /dev/null kann in fast jedem Kontext verwendet werden, in dem eine Datei erwartet wird, nicht nur in Shell-Pipelines. Betrachten Sie Programme, die Dateien als Befehlszeilenparameter akzeptieren.
# We don't care about log output.
$ frobify --log-file=/dev/null
# We are not interested in the compiled binary, just seeing if there are errors.
$ gcc foo.c -o /dev/null || echo "foo.c does not compile!".
# Easy way to force an empty list of exceptions.
$ start_firewall --exception_list=/dev/null
Dies sind alles Fälle, in denen die Verwendung eines Programms als Quelle oder Senke äußerst umständlich wäre. Sogar im Fall der Shell-Pipeline können stdout und stderr unabhängig voneinander auf Dateien umgeleitet werden, was mit ausführbaren Dateien als Senken schwierig ist:
# Suppress errors, but print output.
$ grep foo * 2>/dev/null