Vous pouvez écrire des fichiers ou d'autres flux d'entrée dans, /dev/null
mais pas dans des répertoires. Si vous essayez de déplacer un répertoire vers /dev/null
celui-ci, il signalera une erreur car il /dev/null
ne s'agit pas d'un répertoire mais d'un fichier.
Cependant, puisque vous voulez expérimenter /dev/null
, il vous est d'abord suggéré de connaître les conséquences du déplacement d'un fichier à écraser /dev/null
et comment récupérer de cette situation:
Comme suggéré par @Rmano dans cette réponse à cette question, afin d'expérimenter avec /dev/null
nous devrions plutôt en créer une copie puis faire notre expérimentation. Alors, créons-le /tmp/null
et utilisons-le à des fins d'expérimentation:
sudo mknod -m 0666 /tmp/null c 1 3
A partir de maintenant, /tmp/null
est notre /dev/null
à toutes fins:
Créons un test_file
et un test_dir
dans un répertoire appelé 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
Ce qui suit montre le contenu du ask_ubuntu
répertoire:
$ 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
Essayez maintenant de déplacer notre test_file
pour /tmp/null
voir le contenu 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
La commande réussit et test_file
n'est plus disponible. Essayez maintenant de passer test_dir
à /tmp/null
ce qui ne réussit pas:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
est toujours présent à l'intérieur 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
Maintenant, laissez - nous figurons si nous pouvons récupérer notre test_file
de /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Donc, il est toujours là et /tmp/null
qui était un fichier spécial a été écrasé et il est devenu comme n'importe quel autre fichier normal. Nous pouvons récupérer notre fichier en copiant /tmp/null
comme n'importe quel autre fichier:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Fichier récupéré.
Remarque:
Si vous n'avez pas créé /tmp/null
et essayé ces commandes directement en utilisant /dev/null
; assurez-vous de récupérer le fichier (si vous en avez besoin) en exécutant cp /dev/null our_test_file
; et restaurer /dev/null
pour les fins qu'il existe sur notre système en exécutant les commandes suivantes comme indiqué dans la question liée dès que possible:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Conclusion:
Il est donc impossible de déplacer un répertoire vers /dev/null
et il n'est donc pas question de récupérer le répertoire à partir de là.
En ce qui concerne les fichiers, si vous déplacez directement des fichiers vers /dev/null
, vous pouvez toujours les récupérer comme indiqué ci-dessus. Cependant, il existe deux exceptions:
Pendant la période que vous exécutez sudo mv test_file /dev/null
et cp /dev/null our_test_file
, si un script racine du système le remplace par l'exécution echo "Whatever text the root script wants to send to /dev/null" > /dev/null
(ou d'autres commandes similaires). Ensuite, nous n'avons aucun moyen facile de récupérer notre fichier.
Si vous redémarrez le système entre l'exécution de ces deux commandes. /dev/null
est recréé au démarrage, donc notre fichier est perdu lorsque nous éteignons l'ordinateur.
Mais si vous souhaitez récupérer des flux d'entrée comme echo "Stream this line to /dev/null" > /dev/null
, vous ne pouvez pas le récupérer car il /dev/null
s'agit d'un fichier spécial pour éliminer les fichiers et les flux d'entrée indésirables et, comme le mentionne l'article Wikipedia, il ne fournit aucune donnée à un processus qui le lit.
Référence: article Wikipedia sur/dev/null