Weil die Leute annehmen. Ich war einer dieser Leute, bis ich es ausprobierte . Es ist leicht zu verstehen, warum die Leute annehmen ... Es sieht gefährlich aus ...
... aber Sie können Dinge nicht wirklich verschieben /dev/null
- Es ist eine spezielle Datei, die nur Weiterleitungen absorbiert (und sie ins Nichts schickt). Wenn Sie versuchen, ein Verzeichnis dorthin zu verschieben, explodiert das Dateisystem in Ihrem Gesicht und wenn Sie versuchen, eine Datei dorthin zu verschieben, werden Sie sie wahrscheinlich ersetzen.
Der erste Link befasst sich mit Verzeichnissen, aber hier ist ein separater Test, um es mit einer Datei zu überschreiben. Wie Rmano in den Kommentaren ausführt, sollten Sie dies wahrscheinlich nicht ohne Aufsicht eines Erwachsenen tun. Es besteht das Risiko.
$ echo "this is my file" > test
$ cat test
this is my file
$ sudo mv test /dev/null
$ cat /dev/null
this is my file
# Fix this!
$ sudo rm /dev/null
$ sudo mknod -m 0666 /dev/null c 1 3
/dev/null
führt nicht dazu, dass diese Daten ins Nichts verschoben werden. Es wird in den Daten führen in Ordnung bewegt werden, sondern/dev/null
wird überschrieben, und so können Sie es noch zurück bewegen kann :) Siehe auch askubuntu.com/questions/435887/...sudo mv file /dev/null
es gelingen wird und leicht zu einem völlig unbrauchbaren System führen kann. Siehe meine Kommentare zu der Frage im Kommentar von @MalteSkoruppa. Dies ist ein weiteres klares Beispiel für "sudo
nur voranstellen , wenn Sie dreimal überprüft haben, dass Sie wissen, was Sie tun" ;-)sudo mknod -m 0666 /tmp/mynull c 1 3
--- und dann damit spielen/dev/null
Es ist nur eine Datei, es ist eine "Sonderzeichendatei", aber es ist nicht weniger an die Regeln gebunden, denen Dateien folgen müssen. Davon abgesehen könnten Sie diesen Befehl niemals ausführen:Der
mv
Befehl lässt dies nicht zu, da Sie ein Verzeichnis in eine Datei verschieben, was im Kontext einfach keinen Sinn ergibt und diesmv
weiß.Beispiel
Sie können auch nicht darauf kopieren
/dev/null
, da es sich um eine Zeichendatei handelt, wenn Sie versuchen, eine reguläre Datei darauf zu kopieren.Mit dieser Datei können
mv
Sie nur eine andere Datei kopieren oder löschen.Nach diesem Befehl
/dev/null
befindet sich eine reguläre Datei. Die gefährlichste Auswirkung dieser Änderung ist, dass niemals Daten ausgegeben werden/dev/null
sollen. Dies wird von einer Reihe von Shell-Skripten angenommenist gleichbedeutend mit "nichts". Wenn diese Annahme nicht eingehalten wird, kann dies zu zufälligen Daten (also den Daten, die der letzte Prozess in `/ dev / null 'geschrieben hat) führen, die in allen Systemdateien abgelegt werden - was zu einem völlig kaputten und nicht wiederherstellbaren System führen kann.
quelle
Sie können Dateien oder andere Eingabestreams in
/dev/null
Verzeichnisse schreiben, jedoch nicht in Verzeichnisse. Wenn Sie versuchen, ein Verzeichnis in/dev/null
dieses zu verschieben, wird ein Fehler gemeldet, da/dev/null
es sich nicht um ein Verzeichnis, sondern um eine Datei handelt.Da Sie jedoch experimentieren möchten
/dev/null
, sollten Sie zunächst die Konsequenzen kennen, die sich aus dem Verschieben einer zu überschreibenden Datei ergeben,/dev/null
und wissen, wie Sie diese Situation beheben können:Wie von @Rmano in dieser Antwort auf diese Frage vorgeschlagen,
/dev/null
sollten wir zum Experimentieren lieber eine Kopie davon erstellen und dann experimentieren. Erstellen/tmp/null
und verwenden wir es also für unsere Experimentierzwecke:Ab jetzt
/tmp/null
ist unser/dev/null
für alle Zwecke:Lassen Sie uns ein
test_file
und eintest_dir
in einem Verzeichnis namens erstellenask_ubuntu
.Das Folgende zeigt den Inhalt des
ask_ubuntu
Verzeichnisses:Jetzt versuchen unser bewegen
test_file
zu/tmp/null
und sehen den Inhaltask_ubuntu
:Der Befehl ist erfolgreich und
test_file
nicht mehr verfügbar. Versuchen Sie nun,test_dir
zu/tmp/null
dem zu gelangen, der nicht erfolgreich ist:test_dir
ist noch drinnen vorhandenask_ubuntu
:Lassen Sie uns nun herausfinden, ob wir uns erholen können
test_file
von/tmp/null
:Also, es ist immer noch da und
/tmp/null
welche spezielle Datei wurde überschrieben und es ist wie jede andere normale Datei geworden. Wir können unsere Datei wiederherstellen, indem wir sie/tmp/null
wie jede andere Datei kopieren :Datei wiederhergestellt.
Hinweis:
Wenn Sie
/tmp/null
diese Befehle nicht direkt mit erstellt und ausprobiert haben/dev/null
; Stellen Sie sicher, dass Sie die Datei wiederherstellen (falls erforderlich), indem Sie sie ausführencp /dev/null our_test_file
. und stellen Sie es/dev/null
für die auf unserem System vorhandenen Zwecke wieder her, indem Sie so bald wie möglich die in der verknüpften Frage angegebenen Befehle ausführen:Fazit:
Es ist also unmöglich, ein Verzeichnis zu verschieben,
/dev/null
und daher besteht keine Frage, ob das Verzeichnis von dort wiederhergestellt werden kann.Wenn Sie Dateien direkt in verschieben
/dev/null
, können Sie sie wie oben beschrieben wiederherstellen. Es gibt jedoch zwei Ausnahmen:Während des Zeitraums, in dem Sie ausgeführt werden,
sudo mv test_file /dev/null
undcp /dev/null our_test_file
wenn ein Root-Skript im System es durch Ausführenecho "Whatever text the root script wants to send to /dev/null" > /dev/null
(oder anderer ähnlicher Befehle) überschreibt . Dann haben wir keine einfache Möglichkeit, unsere Datei wiederherzustellen.Wenn Sie das System zwischen dem Ausführen dieser beiden Befehle neu starten.
/dev/null
wird beim Booten neu erstellt, sodass unsere Datei verloren geht, wenn wir den Computer herunterfahren.Wenn Sie jedoch Eingabestreams wie diesen wiederherstellen möchten
echo "Stream this line to /dev/null" > /dev/null
, können Sie diese/dev/null
Datei nicht wiederherstellen, da es sich um eine spezielle Datei handelt, mit der unerwünschte Dateien und Eingabestreams beseitigt werden. Wie im Wikipedia-Artikel erwähnt, werden keinem Prozess, der davon liest, Daten bereitgestellt.Referenz: Wikipedia Artikel über
/dev/null
quelle
sudo mv test_file /dev/null
ersetzt/dev/null
durchtest_file
. Danach/dev/null
ist es nur eine normale Datei und Sie können alles lesen, was Sie in sie geschrieben haben. TUN SIE DAS NICHTAlles, was an gesendet wird,
/dev/null
wird stillschweigend verworfen. Wenn Sie Folgendes eingeben:Du kommst
Hello World
auf den Bildschirm. Wenn Sie Folgendes eingeben:Du bekommst nichts auf den Bildschirm.
Aber im Fall des Befehls move versucht der Befehl
mv
, die Datei / dev / null durch das Verzeichnis zu ersetzen, was nicht möglich ist. Da unter Linux alles eine Datei ist, ist / dev / null eine Datei. Natürlich eine spezielle (eine Gerätedatei), eine spezielle Datei, die den Zugriff auf Hardware (wie Festplatten, Partitionen, Soundkarten, serielle Anschlüsse usw.) ermöglicht. Im Fall von / dev / null ist dies nicht mit Hardware verbunden, sodass die an sie gesendeten Daten stillschweigend verworfen werden. Das ist der Grund, warum "sie" es vielleicht ein Schwarzes Loch genannt haben.quelle