Puede escribir archivos u otras secuencias de entrada en /dev/null
directorios, pero no en ellos. Si intenta mover un directorio a /dev/null
este, se informará un error, ya /dev/null
que no es un directorio sino un archivo.
Sin embargo, dado que desea experimentar /dev/null
, primero se le sugiere conocer las consecuencias de mover un archivo para sobrescribir /dev/null
y cómo recuperarse de esa situación:
Según lo sugerido por @Rmano en esta respuesta a esa pregunta, para experimentar con /dev/null
nosotros deberíamos crear una copia y luego hacer nuestra experimentación. Entonces, creémoslo /tmp/null
y usémoslo para nuestros propósitos de experimentación:
sudo mknod -m 0666 /tmp/null c 1 3
Ahora en adelante, /tmp/null
es nuestro /dev/null
para todos los propósitos:
Vamos a crear ay test_file
un test_dir
dentro de un directorio llamado 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
A continuación se muestran los contenidos del ask_ubuntu
directorio:
$ 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
Ahora trata de mover nuestro test_file
a /tmp/null
y ver los contenidos de 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
El comando tiene éxito y test_file
ya no está disponible. Ahora intenta pasar test_dir
a lo /tmp/null
que no tiene éxito:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
sigue presente en el interior 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
Ahora, vamos a averiguar si podemos recuperar nuestra test_file
partir de /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Por lo tanto, todavía está allí y /tmp/null
se sobrescribió un archivo especial y se convirtió en cualquier otro archivo normal. Podemos recuperar nuestro archivo copiando /tmp/null
como cualquier otro archivo:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Archivo recuperado.
Nota:
Si no creó /tmp/null
y probó esos comandos directamente usando /dev/null
; asegúrese de recuperar el archivo (si es necesario) ejecutando cp /dev/null our_test_file
; y restaurar /dev/null
para los fines que existen en nuestro sistema ejecutando los siguientes comandos como se indica en la pregunta vinculada lo antes posible:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Conclusión:
Por lo tanto, es imposible mover un directorio /dev/null
y, por lo tanto, no se trata de recuperar el directorio desde allí.
En lo que respecta a los archivos, si mueve los archivos directamente a /dev/null
, aún puede recuperarlos como se demostró anteriormente. Sin embargo, hay dos excepciones:
Durante el período que ejecuta sudo mv test_file /dev/null
y cp /dev/null our_test_file
, si algún script raíz en el sistema lo sobrescribe ejecutando echo "Whatever text the root script wants to send to /dev/null" > /dev/null
(u otros comandos similares). Entonces no tenemos ninguna manera fácil de recuperar nuestro archivo.
Si reinicia el sistema entre la ejecución de esos dos comandos. /dev/null
se vuelve a crear en el arranque, por lo que nuestro archivo se pierde cuando apagamos la computadora.
Pero si desea recuperar flujos de entrada como echo "Stream this line to /dev/null" > /dev/null
, no puede recuperarlo ya que /dev/null
es un archivo especial para deshacerse de archivos no deseados y flujos de entrada y, como menciona el artículo de Wikipedia, no proporciona ningún dato a un proceso que lo lea.
Referencia: artículo de Wikipedia sobre/dev/null