आप फ़ाइलों या अन्य इनपुट धाराओं को लिख सकते हैं, /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सभी उद्देश्यों के लिए है:
आइए हम एक 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