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