Dosyaları veya diğer girdi akışlarını /dev/null
dizinlere yazabilir ancak dizine yazamazsınız . Bir dizini taşımaya çalışırsanız , bir dizin değil bir dosya /dev/null
olduğundan bir hata rapor eder /dev/null
.
Ancak, denemek istediğiniz için /dev/null
ilk önce bir dosyayı üzerine yazmak için taşımanın sonuçlarını /dev/null
ve bu durumdan nasıl kurtarılacağını bilmeniz önerilir :
@Rmano tarafından bu sorunun cevabında önerildiği gibi , denemeler yapmak /dev/null
için bir kopyasını oluşturup deneyimizi yapmalıyız. Öyleyse /tmp/null
deneylerimiz için oluşturalım ve kullanalım:
sudo mknod -m 0666 /tmp/null c 1 3
Şimdi itibaren, /tmp/null
Our olan /dev/null
tüm amaçlar için:
Bir dizin içinde bir test_file
ve bir tane yaratalım .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
Aşağıdaki ask_ubuntu
dizinin 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_file
için /tmp/null
ve 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_file
artık mevcut değil. Şimdi taşımak deneyin test_dir
için /tmp/null
başarısız olan:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
hala 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_file
dan /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Yani, hala orada ve /tmp/null
hangi özel bir dosyanın üzerine yazılmış ve herhangi bir diğer normal dosya gibi oldu. /tmp/null
Baş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/null
Bu 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/null
bağ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/null
ve 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/null
ve cp /dev/null our_test_file
eğ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/null
istiyorsanız, /dev/null
istenmeyen 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