Ви можете записувати файли або інші вхідні потоки в /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