लिनक्स पर कई चीजें आपके फाइल सिस्टम में दिखाई देती हैं, लेकिन वे वास्तव में फाइल नहीं हैं। वे विशेष फाइलें हैं जो हार्डवेयर डिवाइस, सिस्टम जानकारी, और अन्य चीजों का प्रतिनिधित्व करती हैं - जिसमें एक यादृच्छिक संख्या जनरेटर शामिल है।
ये विशेष फाइल छद्म या आभासी फ़ाइल सिस्टम जैसे / dev में स्थित हो सकती हैं, जिसमें विशेष फाइलें होती हैं जो डिवाइस का प्रतिनिधित्व करती हैं, और / proc, जिसमें विशेष फाइलें होती हैं जो सिस्टम और प्रक्रिया की जानकारी का प्रतिनिधित्व करती हैं।
/ proc
उदाहरण के लिए, मान लीजिए कि आप अपने सीपीयू के बारे में जानकारी प्राप्त करना चाहते हैं। / Proc निर्देशिका में एक विशेष फ़ाइल - / proc / cpuinfo है - जिसमें यह जानकारी है।
आपको एक विशेष कमांड की आवश्यकता नहीं है जो आपको आपकी सीपीयू जानकारी बताती है - आप सादे-पाठ फ़ाइलों के साथ काम करने वाले किसी भी मानक कमांड का उपयोग करके इस फ़ाइल की सामग्री को पढ़ सकते हैं। उदाहरण के लिए, आप कमांड का उपयोग कर सकते हैं बिल्ली / proc / cpuinfo इस फ़ाइल की सामग्री को टर्मिनल पर प्रिंट करने के लिए - टर्मिनल पर अपनी सीपीयू जानकारी प्रिंट करना। आप इसकी सामग्री देखने के लिए टेक्स्ट एडिटर में / proc / cpuinfo भी खोल सकते हैं।
याद रखें, / proc / cpuinfo वास्तव में इस जानकारी वाली एक टेक्स्ट फ़ाइल नहीं है - लिनक्स कर्नेल और proc फ़ाइल सिस्टम फ़ाइल के रूप में हमें यह जानकारी उजागर कर रहे हैं। यह हमें जानकारी के साथ देखने और काम करने के लिए परिचित उपकरण का उपयोग करने की अनुमति देता है।
- / proc / uptime - आपके लिनक्स कर्नेल के अपटाइम का खुलासा करता है - दूसरे शब्दों में, आपके सिस्टम को बंद किए बिना कितना समय चल रहा है।
- / proc / संस्करण - आपके लिनक्स कर्नेल के संस्करण का खुलासा करता है।
/ dev
/ Dev निर्देशिका में, आपको उन फाइलें मिलेंगी जो डिवाइस का प्रतिनिधित्व करती हैं - साथ ही साथ अन्य विशेष चीज़ों का प्रतिनिधित्व करने वाली फ़ाइलें भी। उदाहरण के लिए, / dev / cdrom आपका सीडी-रोम ड्राइव है। / dev / sda आपकी पहली हार्ड ड्राइव का प्रतिनिधित्व करता है, जबकि / dev / sda1 आपके पहले हार्ड ड्राइव पर पहले विभाजन का प्रतिनिधित्व करता है।
अपने सीडी-रोम को माउंट करना चाहते हैं? माउंट कमांड चलाएं और उस डिवाइस के रूप में / dev / cdrom निर्दिष्ट करें जिसे आप माउंट करना चाहते हैं। अपनी पहली हार्ड ड्राइव को विभाजित करना चाहते हैं? डिस्क-विभाजन उपयोगिता चलाएं और हार्ड डिस्क के रूप में / dev / sda निर्दिष्ट करें जिसे आप संपादित करना चाहते हैं। अपने पहले हार्ड ड्राइव पर पहला विभाजन प्रारूपित करना चाहते हैं? एक स्वरूपण आदेश चलाएं और इसे प्रारूप / dev / sda1 प्रारूप में बताएं।
/ dev / null, / dev / random, और / dev / zero
/ Dev फ़ाइल सिस्टम में केवल ऐसी फ़ाइलें नहीं हैं जो भौतिक उपकरणों का प्रतिनिधित्व करती हैं। यहां तीन सबसे उल्लेखनीय विशेष डिवाइस हैं जिनमें यह शामिल है:
- / dev / null - इसके लिए लिखे गए सभी डेटा को छोड़ दें - इसे कचरा कैन या ब्लैक होल के रूप में सोचें। यदि आपको कभी भी एक टिप्पणी दिखाई देती है जो आपको / dev / null पर शिकायत भेजने के लिए कहती है - यह कहने का एक geeky तरीका है "उन्हें कूड़ेदान में फेंक दो।"
- / dev / यादृच्छिक - पर्यावरण शोर का उपयोग कर यादृच्छिकता पैदा करता है। यह एक यादृच्छिक संख्या जनरेटर है जिसे आप टैप कर सकते हैं।
- / dev / शून्य - शून्य उत्पन्न करता है - शून्य की निरंतर धारा।
यदि आप इन तीनों को फाइल के रूप में सोचते हैं, तो आप उनके लिए उपयोग नहीं देखेंगे। इसके बजाय, उन्हें उपकरण के रूप में सोचें।
उदाहरण के लिए, डिफ़ॉल्ट रूप से, लिनक्स कमांड त्रुटि संदेश और अन्य आउटपुट उत्पन्न करते हैं जो वे मानक आउटपुट, आमतौर पर टर्मिनल पर प्रिंट करते हैं। यदि आप कमांड चलाने के लिए चाहते हैं और इसके आउटपुट की परवाह नहीं करते हैं, तो आप उस आउटपुट को / dev / null पर रीडायरेक्ट कर सकते हैं। कमांड के आउटपुट को रीडायरेक्ट करना / dev / null पर तुरंत इसे छोड़ देता है। प्रत्येक कमांड को अपने "शांत मोड" को लागू करने के बजाय, आप इस विधि का उपयोग किसी भी कमांड के साथ कर सकते हैं।
command > /dev/null
हार्ड ड्राइव की सामग्री को 0 लिखकर मिटाने के लिए, आपको ड्राइव को शून्य करने के लिए समर्पित एक विशेष उपयोगिता की आवश्यकता नहीं है - आप मानक उपयोगिताओं और / dev / zero का उपयोग कर सकते हैं। उदाहरण के लिए, dd आदेश किसी स्थान से पढ़ता है और दूसरे स्थान पर लिखता है। निम्न आदेश / dev / शून्य से शून्य पढ़ेगा और उन्हें सीधे आपके सिस्टम पर पहले हार्ड डिस्क विभाजन पर लिख देगा, पूरी तरह से इसकी सामग्री मिटा देगा।
(चेतावनी: यदि आप इसे चलाते हैं तो यह आदेश आपके पहले विभाजन पर सभी डेटा मिटा देगा। यदि आप डेटा को नष्ट करना चाहते हैं तो केवल यह आदेश चलाएं।)
dd if=/dev/zero of=/dev/sda1
यहां हम विशेष फ़ाइलों (/ dev / zero और / dev / sda1) के साथ डीडी का उपयोग कर रहे हैं, लेकिन हम वास्तविक फ़ाइलों से पढ़ने और लिखने के लिए डीडी का भी उपयोग कर सकते हैं। वही आदेश सीधे डिवाइसों में हेरफेर करने और फ़ाइलों के साथ काम करने के लिए काम करता है।
स्पष्टीकरण
अभ्यास में, यह कहना अधिक सटीक है कि "सबकुछ एक फ़ाइल है" की तुलना में "सब कुछ बाइट्स की धारा है।" / Dev / random एक फ़ाइल नहीं है, लेकिन यह निश्चित रूप से बाइट्स की एक धारा है।और, हालांकि ये चीजें तकनीकी रूप से फाइल नहीं हैं, वे फ़ाइल सिस्टम में पहुंच योग्य हैं - फाइल सिस्टम एक सार्वभौमिक "नाम स्थान" है जहां सब कुछ सुलभ है। एक यादृच्छिक संख्या जेनरेटर तक पहुंचना चाहते हैं या किसी डिवाइस से सीधे पढ़ना चाहते हैं? आप दोनों फाइल सिस्टम में पाएंगे; संबोधित करने की कोई अन्य रूप आवश्यक नहीं है।
बेशक, कुछ चीजें वास्तव में फाइल नहीं हैं - आपके सिस्टम पर चल रही प्रक्रिया फाइल सिस्टम का हिस्सा नहीं हैं। "सबकुछ एक फाइल है" गलत है, लेकिन बहुत सी चीजें फाइल के रूप में व्यवहार करती हैं।