Ви можете записувати файли або інші вхідні потоки в /dev/nullкаталоги, але не в них. Якщо ви спробуєте перенести каталог до /dev/nullнього, повідомте про помилку, оскільки /dev/nullце не каталог, а файл.
Однак, оскільки ви хочете експериментувати /dev/null, вам спершу пропонується дізнатися про наслідки переміщення файлу для перезапису /dev/nullта як відновитись із цієї ситуації:
Як запропонував @Rmano у цій відповіді на це запитання, для того, щоб поекспериментувати з /dev/nullнами, слід скоріше створити його копію, а потім виконати експерименти. Отже, давайте створимо /tmp/nullта використаємо його для наших експериментальних цілей:
sudo mknod -m 0666 /tmp/null c 1 3
Тепер /tmp/nullми /dev/nullвсе для всіх цілей:
Давайте створимо каталог a test_fileі test_dirвсередині, який називається 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
Далі показано вміст ask_ubuntuкаталогу:
$ 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
Тепер спробуйте переміщаємо test_fileдо /tmp/nullі побачити вміст 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
Команда вдається та test_fileбільше недоступна. Тепер спробуйте перейти test_dirдо того, /tmp/nullщо не вдається:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dirвсе ще присутній всередині 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
Тепер, давайте зрозуміти , якщо ми зможемо відновити наші test_fileвід /tmp/null:
$ cat /tmp/null
Let us test if we can recover our test_file.
Отже, він все ще є і /tmp/nullякий спеціальний файл був перезаписаний, і він став як і будь-який інший звичайний файл. Ми можемо відновити наш файл, скопіювавши так /tmp/nullсамо, як і будь-який інший файл:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Файл відновлено.
Примітка:
Якщо ви не створили /tmp/nullта не випробували ці команди безпосередньо, використовуючи /dev/null; переконайтеся, що ви відновите файл (якщо потрібно), запустівши cp /dev/null our_test_file; і відновити /dev/nullдля цілей, які вони існують у нашій системі, якнайшвидше виконати наступні команди, як зазначено у пов'язаному питанні:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Висновок:
Отже, неможливо перемістити каталог /dev/nullі, отже, не виникає питання відновлення каталогу звідти.
Що стосується файлів, якщо ви безпосередньо переміщуєте файли /dev/null, ви все одно можете їх відновити, як показано вище. Однак є два винятки:
Протягом періоду, який ви запускаєте, sudo mv test_file /dev/nullі cp /dev/null our_test_fileякщо будь-який кореневий скрипт у системі перезаписав його, запустивши echo "Whatever text the root script wants to send to /dev/null" > /dev/null(або інші подібні команди). Тоді у нас немає простого способу відновити наш файл.
Якщо ви перезавантажите систему між виконанням цих двох команд. /dev/nullзнову створюється під час завантаження, тому наш файл втрачається, коли ми вимикаємо комп'ютер.
Але якщо ви хочете відновити вхідні потоки на зразок echo "Stream this line to /dev/null" > /dev/null, ви не можете відновити це, оскільки /dev/nullце спеціальний файл для видалення непотрібних файлів і потоків введення, і як згадується у статті Вікіпедії, він не надає жодних даних для процесу, який читається з нього.
Довідка: Стаття у Вікіпедії о/dev/null