यूनिक्स / लिनक्स ओएस पर मानक और / या सामान्य निर्देशिका


25

विंडोज की दुनिया से आते हुए, मैंने पाया है कि फ़ोल्डर निर्देशिका के अधिकांश नाम काफी सहज हैं:

  • \Program Files प्रोग्राम्स द्वारा उपयोग की जाने वाली फ़ाइलें हैं (आश्चर्य!)

  • \Program Files (x86) 64-बिट OSes पर 32-बिट प्रोग्राम द्वारा उपयोग की जाने वाली फाइलें हैं

  • \Users(पूर्व में Documents and Settings) में उपयोगकर्ताओं की फाइलें, अर्थात दस्तावेज और सेटिंग्स शामिल हैं

    • \Users\USER\Application Data जिसमें एप्लिकेशन-विशिष्ट डेटा शामिल है

    • \Users\USER\Documents उपयोगकर्ता से संबंधित दस्तावेज़ शामिल हैं

  • \Windows ऐसी फ़ाइलें होती हैं जो स्वयं Windows के संचालन से संबंधित होती हैं

    • \Windows\Fonts स्टोर फ़ॉन्ट फ़ाइलें (आश्चर्य!)

    • \Windows\Temp एक वैश्विक अस्थायी निर्देशिका है

et cetera यहां तक ​​कि अगर मुझे नहीं पता था कि इन फ़ोल्डरों ने क्या किया है, तो मैं उनके नामों से अच्छी सटीकता का अनुमान लगा सकता हूं।

अब मैं लिनक्स पर एक अच्छा नज़र डाल रहा हूं, और फाइल सिस्टम के आसपास अपना रास्ता खोजने के बारे में काफी उलझन में हूं।

उदाहरण के लिए:

  • /binबायनेरिज़ होता है। लेकिन ऐसा करने के /sbin, /usr/bin, /usr/sbin, और शायद अधिक मैं के बारे में पता नहीं है कि। कौन सा क्या है?? उनके बीच क्या अंतर है? यदि मैं एक बाइनरी बनाना चाहता हूं और इसे कहीं-कहीं सिस्टम-वाइड डाल देता हूं, तो मैं इसे कहां रखूं?

  • /mediaबाहरी मीडिया फ़ाइल सिस्टम है। लेकिन ऐसा करता है /mnt। और उनमें से किसी के पास भी इस समय मेरे सिस्टम पर कुछ भी नहीं है; सब कुछ अंदर होने लगता है /dev। क्या फर्क पड़ता है? मेरी हार्ड डिस्क पर अन्य विभाजन कहां हैं, जैसे कि C:और D:जो विंडोज में थे?

  • /homeउपयोगकर्ता फ़ाइलें और सेटिंग्स शामिल हैं। यह बहुत सहज है, लेकिन फिर, क्या जाना चाहिए /usr? और कैसे आना /rootअभी भी अलग है, भले ही यह फ़ाइलों और सेटिंग्स के साथ एक उपयोगकर्ता है?

  • /libइसमें डीएलएल जैसे साझा पुस्तकालय शामिल हैं। लेकिन ऐसा करता है /usr/lib। क्या फर्क पड़ता है?

  • क्या है /etc ? क्या यह वास्तव में "एट सेटेरा", या कुछ और के लिए खड़ा है? किस प्रकार की फ़ाइलों को वहां जाना चाहिए - वैश्विक या स्थानीय? क्या यह उन चीजों के लिए है, जो किसी को नहीं पता था कि कहां रखा जाए, या क्या इसके लिए कोई विशेष उपयोग मामला है?

  • क्या हैं /opt, /procऔर /var? वे किस चीज के लिए खड़े होते हैं और उनका उपयोग किस लिए किया जाता है? मैंने विंडोज * में उनकी तरह कुछ भी नहीं देखा है, और मैं अभी यह पता नहीं लगा सकता कि वे किस लिए हो सकते हैं।

यदि कोई अन्य मानक स्थानों के बारे में सोच सकता है, जिसके बारे में जानना अच्छा हो सकता है, तो इसे प्रश्न में जोड़ने के लिए स्वतंत्र महसूस करें; उम्मीद है कि यह मेरे जैसे लोगों के लिए एक अच्छा संदर्भ हो सकता है, जो * निक्स सिस्टम से परिचित होने लगे हैं।

* ठीक है, वह झूठ है। मैंने WinObj में इसी तरह की चीजें देखी हैं, लेकिन स्पष्ट रूप से नियमित रूप से नहीं। मैं अभी भी नहीं जानता कि ये लिनक्स पर क्या करते हैं, हालांकि।


1
सीखने की अच्छी भावना रखने के लिए धन्यवाद। यह विषय अक्सर विवादास्पद है। विंडोज बनाम लिनक्स में फ़ाइल सिस्टम संरचनाओं के बीच मूलभूत अंतर के बारे में कुछ अतिरिक्त स्पष्टीकरण के लिए इस सवाल का मेरा जवाब देखें ।
कालेब

"Usr" को "उपयोगकर्ता" के संक्षिप्त नाम के रूप में न सोचें, लेकिन "यूनिक्स सिस्टम रिसोर्सेस" (भले ही यह शायद एक बैरोनियम है क्योंकि इसमें सालों पहले उपयोगकर्ताओं की निर्देशिका शामिल थी) ( linux-training.be/files/books/html /fun/ch09s08.html )।
लार्जेट

विंडोज (या मैक ओएस एक्स) के खिलाफ नामकरण / यूनिक्स / लिनक्स / आदि के गुप्त निर्देशिका को सही ठहराने की कोशिश करने का कोई फायदा नहीं है। यह कैसा है बस।
एंड्रयू वोल्फ

2017 तक, विंडोज फ़ोल्डर संरचना पूरी तरह से गड़बड़ है। C:\Program Files, C:\ProgramData, %HOME%\AppData\Local, %HOME%\AppData\LocalLow, C:\Windows\SystemApps... सभी उदाहरण हैं, जहां एक Windows में निष्पादनयोग्य पा सकते हैं। और मैं कॉन्फ़िगरेशन फ़ाइलों और रजिस्ट्री के बारे में भी बात नहीं करूंगा, मैं और भी अधिक उदास नहीं होना चाहता। PS: मैं मुख्य रूप से विंडोज में काम करता हूं।
रासना

जवाबों:


29

लिनक्स वितरण FHS का उपयोग करते हैं: http://www.pathname.com/fhs/pub/fhs-2.3.html

आप भी कोशिश कर सकते हैं man hier

मैं आपके सवालों के जवाब अपने सिर के ऊपर से देने की कोशिश करूंगा, लेकिन मैं दृढ़ता से सुझाव देता हूं कि आप एफएचएस के माध्यम से पढ़ें:

  • / बिन गैर-सुपरयूज़र सिस्टम बायनेरिज़ के लिए है
  • / sbin सुपरयूज़र (रूट) सिस्टम बायनेरिज़ के लिए है
  • / usr / bin और / usr / sbin क्रमशः गैर-महत्वपूर्ण साझा गैर-सुपरयुसर या सुपरयुसर बिनरी के लिए हैं
  • / mnt अस्थायी रूप से विभाजन को माउंट करने के लिए है
  • / मीडिया एक साथ कई हटाने योग्य मीडिया बढ़ते के लिए है
  • / dev में आपकी सिस्टम डिवाइस फ़ाइलें हैं; यह एक लंबी कहानी है :)
  • / Usr फ़ोल्डर, और उसके सबफ़ोल्डर्स को अन्य सिस्टम के साथ साझा किया जा सकता है, जिससे उन्हें एक ही प्रोग्राम / फ़ाइलों को एक ही स्थान पर स्थापित करना होगा। चूंकि / usr आम तौर पर एक अलग फाइल सिस्टम पर होता है, इसमें बायनेरीज़ नहीं होती हैं जो सिस्टम को ऑनलाइन लाने के लिए आवश्यक हैं।
  • / रूट अलग है क्योंकि अन्य निर्देशिकाओं को अलग किए बिना सिस्टम को ऑनलाइन लाना आवश्यक हो सकता है जो अलग-अलग विभाजन / हार्ड ड्राइव या सर्वर पर हो सकते हैं
  • हां, / आदि का अर्थ "एट सेटेरा" है। स्थानीय सिस्टम के लिए कॉन्फ़िगरेशन फ़ाइलें वहां संग्रहीत की जाती हैं।
  • / ऑप्ट एक ऐसी जगह है जहाँ आप उन प्रोग्रामों को स्थापित कर सकते हैं जिन्हें आप डाउनलोड / संकलन करते हैं। इस तरह से आप उन्हें बाकी सिस्टम से अलग रख सकते हैं, एक ही जगह पर सभी फाइलें।
  • / proc में कर्नेल और रनिंग प्रक्रियाओं के बारे में जानकारी शामिल है
  • / var में लॉग, मेल, वेबपेज आदि जैसी चर आकार की फाइलें होती हैं।

सिस्टम तक पहुंचने के लिए, आपको आमतौर पर / var, / opt, / usr, / home की आवश्यकता नहीं होती है; एक सिस्टम पर संभावित सबसे बड़ी निर्देशिकाओं में से कुछ।

मेरे पसंदीदा में से एक, जिसे कुछ लोग उपयोग नहीं करते हैं, वह है / srv। यह उस डेटा के लिए है जिसे http / ftp / samba जैसी सेवाओं के माध्यम से होस्ट किया जा रहा है। मैंने इसके लिए बहुत कुछ देखा / var का उपयोग किया है, जो वास्तव में इसका उद्देश्य नहीं है।


विशिष्ट प्रश्नों को संबोधित करते हुए अच्छा अवलोकन। ध्यान दें कि कुछ डिस्ट्रोस /home/users/usernameउपयोगकर्ताओं के /home/services/servicenameलिए और आपके द्वारा उल्लेख /srcकिए जाने के लिए उपयोग करते हैं। मुझे लगता है कि यह बेहतर तरीके से काम करता है कि यह विभाजन के लिए अधिक बहुमुखी है। आप इसे अपने स्वयं के विभाजन पर रख सकते हैं या उसी विभाजन और अपने उपयोगकर्ता डेटा का उपयोग कर सकते हैं, जो अक्सर वही होता है जो मैं करना चाहता हूं।
कालेब

लिंक और विवरण के लिए +1 धन्यवाद, वे बहुत बढ़िया हैं! :)
मेहरदाद

/ usr में ऑपरेटिंग सिस्टम और / या थर्ड-पार्टी फाइलों पर मौजूद एप्लिकेशन के लिए विशिष्ट फाइलें होनी चाहिए। यह आंतरिक रूप से पहनने योग्य नहीं है! हालांकि एलएसबी इन / ऑप्ट में रखे जाने के लिए तर्क देता है। दूसरी ओर usr / share में ऐसी फाइलें शामिल हो सकती हैं जो विभिन्न आर्किटेक्चर / OS संस्करणों की मशीनों के पार देखने योग्य हों। ये सभी सिर्फ कन्वेंशन हैं! यह पूरी तरह से अलग संरचना का उपयोग करने के लिए काफी संभव है (हालांकि बहुत कठिन काम है)। हालांकि अन्य कन्वेंशन भी हैं - जैसे ओरेकल के
ऑप्टिमल

1
यूनिक्स के बारे में ध्यान रखने वाली एक और बात यह अवधारणा है कि " सब कुछ एक फ़ाइल है " (या कम से कम एक जैसा दिखता है)। उदाहरण के लिए, इन / प्रॉप में सामान फ़ाइलों और निर्देशिकाओं की तरह दिखता है, लेकिन जब आप उन्हें एक्सेस करते हैं तो सामग्री वास्तव में गतिशील रूप से कर्नेल द्वारा बनाई जाती है। इसका मतलब है कि आप इस जानकारी को एक्सेस करने के लिए समान टूल्स (ls, cat इत्यादि) का उपयोग कर सकते हैं।
कीथबी

1
FHS से @symcbean: "... / usr साझा करने योग्य है, केवल-पढ़ने के लिए डेटा। इसका मतलब है कि / usr को विभिन्न FHS-आज्ञाकारी मेजबानों के बीच साझा करने योग्य होना चाहिए ..."। स्पष्ट रूप से कुछ फाइलें वास्तुकला पर निर्भर हैं, और कुछ वितरणों से बेतहाशा अलग-अलग निर्देशिका पदानुक्रमों की उम्मीद है। इसका उपाय यह है कि आप अपना गृहकार्य करें, एक अच्छे व्यवस्थापक की तरह :)
bhinesley

18

मैं इस बारे में कोई जवाब नहीं दूंगा कि उनके पास क्या मतलब है (दूसरों के पास), लेकिन थोड़ा ऐतिहासिक संदर्भ दें।

सबसे पहले, याद रखें कि UNIX 40 साल के करीब हो रहा है, पेपर टेप के दिनों में और मेनफ्रेम के लिए 300 बॉड हार्ड-कोडेड टर्मिनल (विंडोज एक्सपी सिस्टम 10 साल के करीब है)। टाइपिंग धीमी थी और टाइपिंग में दक्षता की आवश्यकता ने अन्य कई विचारों पर ध्यान दिया। यही कारण है कि बहुत ही कम बुनियादी आज्ञाओं (यानी 'ls', 'cat', 'cc', 'dd', आदि) का कारण है। निर्देशिका संरचनाओं के साथ भी यही था। विचार यह था कि यदि कमान तीन या चार से अधिक वर्ण की है तो नाम बहुत लंबा था।

/ Usr निर्देशिका मूल रूप से उपयोगकर्ता के होम निर्देशिकाओं में सम्‍मिलित थी क्‍योंकि अधिकांश कमांड / बिन में थे और सभी डिवाइस फ़ाइलें / dev में थीं। बाद में यह प्राथमिक ड्राइव (रूट फाइलसिस्टम, '/') को तेज बूट समय के लिए छोटा बनाने के लिए सोचा गया था। इसलिए अन्य संरचनाएं जैसे / usr / bin, / usr / शामिल और / usr / lib के बारे में आया, जहां / usr एक अलग "ड्राइव" था। बहुत बाद में, यह माना जाता था कि उपयोगकर्ता के घर निर्देशिका / घर में, फिर भी एक और ड्राइव है। और इससे बहुत बाद में, एक / var (चर / परिवर्तनीय के लिए कम) के लिए। / Etc डायरेक्टरी का मतलब 'एट सेटेरा' था, जो सभी सिस्टम कॉन्फ़िगरेशन फ़ाइलों का कैच-ऑल लोकेशन था। / Mnt ड्राइव (अक्सर एक बैकअप ड्राइव) तक पहुंचने के लिए एक अस्थायी स्थान के रूप में उपयोग किया जाता था। निर्देशिकाएँ जैसे विकल्प / विकल्प, / खरीद और / मीडिया बहुत बाद में आए।

बहुत कुछ ऐसा है जिसे छोड़ दिया गया है (जैसे / usr / स्थानीय और / नेट), लेकिन यह इस बात का संक्षिप्त विवरण देता है कि नाम 'कम सहज' क्यों हैं।


2
+1 मुझे ऐतिहासिक संदर्भ पसंद हैं, यह मेरे मस्तिष्क को व्यवस्थित करता है। :) यह लिखने के लिए समय निकालने के लिए धन्यवाद!
मेहरदाद

5

जैसा कि यहां पहले ही उल्लेख किया गया है, लिनक्स वितरण ज्यादातर एफएचएस का उपयोग करते हैं, यहां एक ट्यूटोरियल जैसे अवलोकन के लिए देखें, विशेष रूप से खिड़कियों से आने वाले किसी व्यक्ति के लिए अच्छा अनुकूल है।

एक नोट के रूप में, विंडोज निर्देशिका सहज, सतही लगती हैं । लेकिन मैं आपसे पूछता हूं, प्रोग्राम के लिए सेटिंग्स कहां हैं, *.iniप्रोग्राम फ़ोल्डर में एक फ़ाइल के रूप में, Documents and Settings\User( \Application Dataया \Local Settings\Application Data), या कुख्यात रजिस्ट्री में? कोई नहीं जानता, माइक्रोसॉफ्ट भी नहीं। और इसलिए हम आगे बढ़ सकते हैं।


1
मुझे लगता है कि फ़ोल्डर्स के विंडोज 7 नाम बेहतर हैं। यानी AppData \ Roaming बनाम AppData \ Local - वे वहाँ में डेटा की तरह का वर्णन है। कॉन्फ़िगरेशन जानकारी के लिए: मुझे लगता है कि मुझे पता है कि मुझे इसे देखने के बाद कहां रखना है, लेकिन मैं इसे अच्छी तरह से वर्णन नहीं कर सकता, मैं सहमत हूं। :)
मेहरदाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.