È possibile scrivere file o altri flussi di input in /dev/null
ma non nelle directory. Se si tenta di spostare una directory in /dev/null
essa, si segnalerebbe un errore poiché /dev/null
non è una directory ma un file.
Tuttavia, poiché si desidera sperimentare /dev/null
, si consiglia innanzitutto di conoscere le conseguenze sullo spostamento di un file da sovrascrivere /dev/null
e su come recuperare da tale situazione:
Come suggerito da @Rmano in questa risposta a quella domanda, per sperimentare /dev/null
dovremmo piuttosto crearne una copia e poi fare la nostra sperimentazione. Quindi, creiamolo /tmp/null
e usiamolo per i nostri scopi di sperimentazione:
sudo mknod -m 0666 /tmp/null c 1 3
Ora in poi, /tmp/null
è nostro /dev/null
per tutti gli scopi:
Creiamo a test_file
e a test_dir
all'interno di una directory chiamata 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
Quanto segue mostra il contenuto della ask_ubuntu
directory:
$ 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
Ora provate a spostare la nostra test_file
per /tmp/null
vedere il contenuto di 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
Il comando ha esito positivo e test_file
non è più disponibile. Ora prova a passare test_dir
a /tmp/null
quale non riesce:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
è ancora presente all'interno 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
Ora, cerchiamo di capire se possiamo recuperare il nostro test_file
da /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Quindi, è ancora lì e /tmp/null
quale era un file speciale è stato sovrascritto ed è diventato come qualsiasi altro file normale. Possiamo recuperare il nostro file copiandolo /tmp/null
come qualsiasi altro file:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
File recuperato.
Nota:
Se non hai creato /tmp/null
e provato quei comandi direttamente usando /dev/null
; assicurati di recuperare il file (se necessario) eseguendolo cp /dev/null our_test_file
; e ripristinare /dev/null
per gli scopi esistenti sul nostro sistema eseguendo i seguenti comandi come indicato nella domanda collegata il più presto possibile:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Conclusione:
Quindi, è impossibile spostare una directory in /dev/null
e quindi non c'è dubbio di recuperare la directory da lì.
Per quanto riguarda i file, se si spostano direttamente i file in /dev/null
, è ancora possibile ripristinarli come dimostrato sopra. Tuttavia, ci sono due eccezioni:
Durante il periodo in cui si esegue sudo mv test_file /dev/null
e cp /dev/null our_test_file
, se uno script root nel sistema lo sovrascrive eseguendolo echo "Whatever text the root script wants to send to /dev/null" > /dev/null
(o altri comandi simili). Quindi non abbiamo alcun modo semplice per recuperare il nostro file.
Se si riavvia il sistema tra l'esecuzione di questi due comandi. /dev/null
viene ricreato all'avvio, quindi il nostro file si perde quando spegniamo il computer.
Ma se si desidera ripristinare flussi di input come echo "Stream this line to /dev/null" > /dev/null
, non è possibile recuperarli poiché si /dev/null
tratta di un file speciale per eliminare file e flussi di input indesiderati e, come menzionato nell'articolo di Wikipedia, non fornisce alcun dato a un processo che legge da esso.
Riferimento: Articolo di Wikipedia su/dev/null