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:
sudo mknod -m 0666 /tmp/null c 1 3
Ab jetzt /tmp/null
ist unser /dev/null
für alle Zwecke:
Lassen Sie uns ein test_file
und ein test_dir
in 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_ubuntu
Verzeichnisses:
$ 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_file
zu /tmp/null
und 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_file
nicht mehr verfügbar. Versuchen Sie nun, test_dir
zu /tmp/null
dem zu gelangen, der nicht erfolgreich ist:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
ist 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_file
von /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
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 :
$ 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/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ühren cp /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:
$ 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/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
und cp /dev/null our_test_file
wenn 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/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