È possibile scrivere file o altri flussi di input in /dev/nullma non nelle directory. Se si tenta di spostare una directory in /dev/nullessa, si segnalerebbe un errore poiché /dev/nullnon è 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/nulle su come recuperare da tale situazione:
Come suggerito da @Rmano in questa risposta a quella domanda, per sperimentare /dev/nulldovremmo piuttosto crearne una copia e poi fare la nostra sperimentazione. Quindi, creiamolo /tmp/nulle usiamolo per i nostri scopi di sperimentazione:
sudo mknod -m 0666 /tmp/null c 1 3
Ora in poi, /tmp/nullè nostro /dev/nullper tutti gli scopi:
Creiamo a test_filee a test_dirall'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_ubuntudirectory:
$ 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_fileper /tmp/nullvedere 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_filenon è più disponibile. Ora prova a passare test_dira /tmp/nullquale 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_fileda /tmp/null:
$ cat /tmp/null
Let us test if we can recover our test_file.
Quindi, è ancora lì e /tmp/nullquale era un file speciale è stato sovrascritto ed è diventato come qualsiasi altro file normale. Possiamo recuperare il nostro file copiandolo /tmp/nullcome 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/nulle provato quei comandi direttamente usando /dev/null; assicurati di recuperare il file (se necessario) eseguendolo cp /dev/null our_test_file; e ripristinare /dev/nullper 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/nulle 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/nulle 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/nullviene 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/nulltratta 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