Sie können Dateien oder andere Eingabestreams in /dev/nullVerzeichnisse schreiben, jedoch nicht in Verzeichnisse. Wenn Sie versuchen, ein Verzeichnis in /dev/nulldieses zu verschieben, wird ein Fehler gemeldet, da /dev/nulles 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/nullund wissen, wie Sie diese Situation beheben können:
Wie von @Rmano in dieser Antwort auf diese Frage vorgeschlagen, /dev/nullsollten wir zum Experimentieren lieber eine Kopie davon erstellen und dann experimentieren. Erstellen /tmp/nullund verwenden wir es also für unsere Experimentierzwecke:
sudo mknod -m 0666 /tmp/null c 1 3
Ab jetzt /tmp/nullist unser /dev/nullfür alle Zwecke:
Lassen Sie uns ein test_fileund ein test_dirin einem Verzeichnis namens erstellen ask_ubuntu.
$ mkdir ask_ubuntu
$ cd ask_ubuntu
$ touch test_file
$ mkdir test_dir
$ echo "Let us test if we can recover our test_file." > test_file
Das Folgende zeigt den Inhalt des ask_ubuntuVerzeichnisses:
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:10 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
-rw-r--r-- 1 aditya aditya 0 Mar 18 17:10 test_file
Jetzt versuchen unser bewegen test_filezu /tmp/nullund sehen den Inhalt ask_ubuntu:
$ sudo mv test_file /tmp/null # This succeeds
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:12 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
Der Befehl ist erfolgreich und test_filenicht mehr verfügbar. Versuchen Sie nun, test_dirzu /tmp/nulldem zu gelangen, der nicht erfolgreich ist:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dirist noch drinnen vorhanden ask_ubuntu:
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:12 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
Lassen Sie uns nun herausfinden, ob wir uns erholen können test_filevon /tmp/null:
$ cat /tmp/null
Let us test if we can recover our test_file.
Also, es ist immer noch da und /tmp/nullwelche spezielle Datei wurde überschrieben und es ist wie jede andere normale Datei geworden. Wir können unsere Datei wiederherstellen, indem wir sie /tmp/nullwie jede andere Datei kopieren :
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Datei wiederhergestellt.
Hinweis:
Wenn Sie /tmp/nulldiese Befehle nicht direkt mit erstellt und ausprobiert haben /dev/null; Stellen Sie sicher, dass Sie die Datei wiederherstellen (falls erforderlich), indem Sie sie ausführen cp /dev/null our_test_file. und stellen Sie es /dev/nullfü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:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Fazit:
Es ist also unmöglich, ein Verzeichnis zu verschieben, /dev/nullund 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/nullund cp /dev/null our_test_filewenn ein Root-Skript im System es durch Ausführen echo "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/nullwird 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/nullDatei 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