Dosyaları veya diğer girdi akışlarını /dev/nulldizinlere yazabilir ancak dizine yazamazsınız . Bir dizini taşımaya çalışırsanız , bir dizin değil bir dosya /dev/nullolduğundan bir hata rapor eder /dev/null.
Ancak, denemek istediğiniz için /dev/nullilk önce bir dosyayı üzerine yazmak için taşımanın sonuçlarını /dev/nullve bu durumdan nasıl kurtarılacağını bilmeniz önerilir :
@Rmano tarafından bu sorunun cevabında önerildiği gibi , denemeler yapmak /dev/nulliçin bir kopyasını oluşturup deneyimizi yapmalıyız. Öyleyse /tmp/nulldeneylerimiz için oluşturalım ve kullanalım:
sudo mknod -m 0666 /tmp/null c 1 3
Şimdi itibaren, /tmp/nullOur olan /dev/nulltüm amaçlar için:
Bir dizin içinde bir test_fileve bir tane yaratalım .test_dirask_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şağıdaki ask_ubuntudizinin içeriğini gösterir :
$ 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
Şimdi bizim taşımak için denemek test_fileiçin /tmp/nullve içeriğini görmek 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
Komut başarılı ve test_fileartık mevcut değil. Şimdi taşımak deneyin test_diriçin /tmp/nullbaşarısız olan:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dirhala içinde var 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
Şimdi, bizim kurtarabilirsiniz eğer bizi anlamaya izin test_filedan /tmp/null:
$ cat /tmp/null
Let us test if we can recover our test_file.
Yani, hala orada ve /tmp/nullhangi özel bir dosyanın üzerine yazılmış ve herhangi bir diğer normal dosya gibi oldu. /tmp/nullBaşka bir dosyadaki gibi kopyalayarak dosyamızı kurtarabiliriz :
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Dosya kurtarıldı.
Not:
/tmp/nullBu komutları doğrudan kullanarak oluşturmadıysanız ve denediyseniz /dev/null; çalıştırarak dosyayı (gerekirse) kurtardığınızdan emin olun cp /dev/null our_test_file; ve /dev/nullbağlantılı soruda verildiği gibi aşağıdaki komutları mümkün olan en kısa sürede çalıştırarak sistemimizde var olan amaçlar için geri yükleme yapın :
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Sonuç:
Bu nedenle, bir dizini taşımak imkansızdır /dev/nullve bu nedenle dizini oradan kurtarma sorunu yoktur.
Dosyalar söz konusu olduğunda, dosyaları doğrudan doğrudan taşırsanız /dev/null, yukarıda gösterildiği gibi yine de kurtarabilirsiniz. Ancak, iki istisna vardır:
Çalıştığınız süre boyunca sudo mv test_file /dev/nullve cp /dev/null our_test_fileeğer sistemdeki herhangi bir kök komut dosyası çalıştırılarak echo "Whatever text the root script wants to send to /dev/null" > /dev/null(veya benzer komutların üzerine) yazar. O zaman dosyamızı kurtarmanın kolay bir yolu yok.
Bu iki komutu çalıştırmak arasında sistemi yeniden başlatırsanız. /dev/nullönyükleme sırasında yeniden oluşturulur, böylece bilgisayarı kapattığımızda dosyamız kaybolur.
Ancak, giriş akışlarını kurtarmak echo "Stream this line to /dev/null" > /dev/nullistiyorsanız, /dev/nullistenmeyen dosyaları ve giriş akışlarını elden çıkarmak için özel bir dosya olduğundan ve Wikipedia makalesinde de belirtildiği gibi, bu kitaptan okunan bir işlem için herhangi bir veri sağlamaz.
Referans: Wikipedia makalesi/dev/null