वर्तमान (।) और माता-पिता (..) निर्देशिका के लिए तकनीकी शब्द क्या है?


20

मुझे एक फ़ंक्शन मिला है जो यह जांचता है कि फ़ाइल नाम में पारित किया गया है .या नहीं ..। लेकिन मुझे नहीं पता कि इसे कैसे ठीक से नाम दिया जाए। कुछ IsCurrentOrParentDirectory()ऐसा अस्पष्ट है, क्योंकि फ़ंक्शन फ़ाइल नाम लेता है और पूर्ण पथ नहीं। ( वास्तव में एक साथी प्रोग्रामर से उम्मीद करूंगा कि /usr/जब मैं /usr/वापस आऊंगा true, तब तक यह होगा , जबकि वास्तव में ऐसा नहीं है।)

क्या इन निर्देशिका प्रविष्टियों के लिए एक तकनीकी शब्द है? अगर एक है, तो वह क्या है?


1
। और .. फ़ाइल नाम बिल्कुल नहीं हैं, लेकिन फ़ोल्डर। यदि इनपुट एक मान्य फ़ाइल (स्टेट के अनुसार टाइप है) (IF_REG है) तो आप केवल यह क्यों नहीं चेक करते हैं? PS यह संभवतः StackOverflow
Tonny

7
@ टोन .और POSIX मानक के अनुसार फ़ाइल नाम .. हैं । मेरा उद्धरण नीचे देखें। मैं कहता हूँ कि यह यहाँ ठीक है क्योंकि यह सामान्य कंप्यूटिंग अवधारणाओं के बारे में है।
slhck

मुझे यह स्वीकार करना होगा कि मेरा शब्दांकन फिर से अस्पष्ट था। समारोह के लिए एक एकल फ़ाइल या निर्देशिका का नाम (लेता है foo.bar, foo, ...) नहीं बल्कि एक रास्ता ( foo/bar, /foo/, ...)। लेकिन चूंकि डाइरेक्टरीज़, लिंक आदि भी फाइल हैं, इसलिए मैं इसे ऐसे ही छोड़ दूँगा।
मैक्स Truxa

@slhck POSIX इसे एक फ़ाइल कहता है, लेकिन किसी भी फ़ाइल-सिस्टम ऑब्जेक्ट के लिए ऐसा करता है। POSIX शब्दावली में फ़ाइल को आमतौर पर "फ़ाइल सिस्टम ऑब्जेक्ट" के संक्षिप्त नाम के रूप में पढ़ा जाना चाहिए। प्रारंभिक यूनिक्स में और यह सभी एफएसओ की वास्तव में फाइलों को व्युत्पन्न करता है, लेकिन यह कुछ आधुनिक कार्यान्वयनों के लिए सच नहीं है और निश्चित रूप से गैर-यूनिक्स के लिए नहीं है, लेकिन पॉसिक्स अनुपालन ऑपरेटिंग सिस्टम (विंडोज एनटी सबसे स्पष्ट उदाहरण के रूप में)। - मेरी टिप्पणी में "मान्य फ़ाइल" के बजाय शायद मुझे "एक नियमित फ़ाइल" लिखना चाहिए था, लेकिन मैक्स ट्रूक्स की टिप्पणी इसे वैसे भी एक मूक बिंदु बनाती है।
टोनही

जवाबों:


23

से POSIX मानक :

विशेष फ़ाइल नाम डॉट अपने पूर्ववर्ती द्वारा निर्दिष्ट निर्देशिका को संदर्भित करेगा। विशेष फ़ाइल नाम डॉट-डॉट अपने पूर्ववर्ती निर्देशिका की मूल निर्देशिका को संदर्भित करेगा। एक विशेष मामले के रूप में, रूट डायरेक्टरी में, डॉट-डॉट रूट डायरेक्टरी को संदर्भित कर सकता है।

तो, वास्तव में, यदि आप यह जांचना चाहते हैं कि फ़ाइल नाम क्या है .या ..आपको इसे कॉल करना होगा IsDotOrDotDot(), या, pathname संकल्प के POSIX शब्दावली का उपयोग करके IsPredecessorOrParentOfPredecessor(), या शायद यहां तक ​​कि PointsToPredecessorOrParentOfPrecedessor()... आपको विचार मिलता है। समस्या यह है कि बाद की शब्दावली केवल तभी समझ में आती है जब पूर्ण मार्ग की ओर देखती है। लेकिन किसी को भी यह समझ में नहीं आएगा।

इसे देखते हुए .और ..मान्य फ़ाइल नाम हैं (बस अलग तरह से व्याख्या की गई है), आपको बस वही होना चाहिए जो आपके पास है, इस अर्थ पर भरोसा करने के बजाय कि उन्हें आंतरिक रूप से कैसे कहा जाता है।


है .bash_historyडॉट या नहीं डॉट? मुझे यकीन नहीं है कि यदि ओपी प्रस्तावित खुले की तुलना में उस फ़ंक्शन का नाम अधिक वर्णनात्मक है।
जेन्स एराट

@JensErat यह समस्या के लिए अप्रासंगिक है। सवाल यह था कि क्या फ़ाइलनाम घटक था .या ..नहीं, और क्या यह सिर्फ ए के साथ शुरू हुआ था .। बेशक ओपी के फ़ंक्शन का नाम अधिक वर्णनात्मक है; मैं सिर्फ उसे इंगित कर रहा था कि इसे तकनीकी रूप से कैसे संदर्भित किया जाता है।
19'14

2
यकीन है कि यह है, लेकिन IsDotOrDotDot()समारोह में क्या कर रहा है के बारे में बहुत ज्यादा कुछ नहीं कहते हैं।
जेन्स एराट

"पूर्ववर्ती" पथ विनिर्देश में इसके तुरंत पहले पथ तत्व को संदर्भित करता है। यदि आप केवल एक निर्देशिका में प्रविष्टियों के नाम देख रहे हैं, तो "वर्तमान" या "माता-पिता" बेहतर शब्दावली है।
साइमन रिक्टर

2
@JensErat मैं उपयोग करेंगे IsDotOrDotDot। फाइलसिस्टम अवधारणाओं का जानकार कोई भी व्यक्ति इसे तुरंत समझ जाएगा। यह बहस योग्य है कि क्या .bash_history"डॉट" है क्योंकि कोई संदर्भ प्रदान नहीं किया गया है तो "डॉट" के अर्थ के लिए, लेकिन यह निश्चित रूप से "डॉट या डॉट डॉट" नहीं है।
किनोकिजुफ

4

.और ..आमतौर पर रिश्तेदार पथ बनाम निरपेक्ष जैसे वर्णन करने के लिए उपयोग किया जाता है /usr। मैं इस अंतर का उपयोग करता हूं और फ़ंक्शन को घोषित करता हूं IsRelativeCurrentOrParentDirectory()

राह में कहीं भी डॉट-रेफरेंस हो सकते हैं। किस बारे में /usr/local/..?


मैं यह इंगित करने में विफल रहा कि फ़ंक्शन केवल फ़ाइल नाम लेता है और पूर्ण पथ नहीं है। मैंने उसी हिसाब से सवाल अपडेट किया।
मैक्स Truxa

2

POSIX मानक, जो विशेष रूप से उद्धृत किया जाता है, कहता है,

विशेष फ़ाइल नाम डॉट को संदर्भित करेगा ...  विशेष फ़ाइल नाम डॉट-डॉट को संदर्भित करेगा ...

(महत्व दिया)। इसलिए, जब यह बिल्कुल तकनीकी नहीं है , तो यह "विशेष फ़ाइलनाम" जैसा दिखता है, बस आधिकारिक नाम हो सकता है । आपके उपयोगकर्ताओं को शायद यह समझना होगा कि अगर आप अपने समारोह निम्न में से कोई बुलाया: IsSpecialDirectory(), IsSpecialFilename(), या बस IsSpecialName()

या फिर आप के साथ जा सकते हैं IsStandardDirectory(), IsStandardFilename()या, IsStandardName()। यह उन चीजों के लिए यूनिक्स नामकरण सम्मेलन (मानक इनपुट, मानक आउटपुट) का अनुसरण करता है जो आपके लिए स्वचालित रूप से स्थापित होते हैं (इस मामले में, द्वारा mkfsऔर mkdir)।  IsAutomatic…()या IsDefault…(), दूसरी ओर, शायद पर्याप्त सहज नहीं हैं।


वास्तव में मैंने जो पहला नाम लिया था, IsMagicDirectory()वह उसके बहुत करीब था, लेकिन मुझे लगता है कि आपका शब्दांकन बहुत अधिक सहज और उपयुक्त है (विशेषकर चूंकि यह स्थापित नामकरण परंपराओं का उपयोग करता है)। उपयोग करने से IsSpecialFileNameयह भी स्पष्ट हो जाएगा कि फ़ंक्शन को एक पथ नहीं मिलता है, लेकिन एक फ़ाइल (या निर्देशिका, लिंक, आदि) का नाम है।
मैक्स ट्रूक्सा

अच्छा सुझाव। "विशेष" हालांकि संभवतः लिंक, FIFO आदि भी शामिल होंगे, है ना?
slhck

@ स्लैक: हां, डिवाइस (जैसे, डिस्क और ट्टी) को "विशेष फाइल" कहा जाता है। और, हाँ, यह शब्द प्रतीकात्मक लिंक, एफआईएफओ और फ़ाइल सिस्टम के अन्य विदेशी denizens के लिए शिथिल रूप से लागू किया जा सकता है - "नियमित फ़ाइल" के अलावा किसी भी प्रकार की फ़ाइल (आई-नोड)। (हां, निर्देशिकाएं इस बाल्टी में भी गिर जाती हैं।) तो IsSpecialFile()यह एक बुरा सुझाव होता। लेकिन मैंने सुझाव नहीं दिया कि; मैंने सुझाव दिया IsSpecialFilename()। जबकि नाम sda1, console, kmem, myfifoऔर urandomसूचक हैं, वे सुरक्षित और स्वाभाविक विशेष नहीं कर रहे हैं नहीं कर रहे हैं। लेकिन .और ..स्वाभाविक रूप से विशेष फ़ाइल नाम हैं
स्कॉट

1

केवल एक शब्द जिसे मैं * निक्स दुनिया से जानता हूं वह CWDवर्तमान कार्य निर्देशिका के लिए है। यह वास्तव में काफी अक्सर इस्तेमाल किया जाता है। उदाहरण के लिए देखें, /proc/$$/cwdजो उस निर्देशिका का लिंक है जिसे आप कमांड चलाते हैं।

मुझे इसके ..अलावा dot-dotऔर किसी भी मानक नाम की जानकारी नहीं है, क्योंकि @slhck ने बताया कि यह एक अच्छा विकल्प नहीं है।


0

पेरिक्स-चाइल्ड डायरेक्टरी रिलेशनशिप के बारे में बोलने में पॉज़िक्स काफी अस्पष्ट है। के रूप में अन्य लोगों ने कहा, ./ ..बात करते समय या अन्य मनुष्यों के साथ संवाद स्थापित उपयोगी नहीं है।

फ़ाइल संरचनाओं के बारे में एक पेड़ डेटा संरचना के रूप में सोचा जा सकता है। यहां, आम तौर पर "माता-पिता" और "बच्चा" या "बेटी" अर्थ बताने के लिए पर्याप्त हैं। आप देखेंगे कि डेटा संरचना पाठ्यपुस्तकें इस सम्मेलन को ले जाती हैं

वैकल्पिक रूप से, ऐसा लगता है कि पेड़ों को "ऊपर" और "नीचे" पेड़ के रूप में बात की जा सकती है। कन्वेंशन द्वारा, "अप" का अर्थ है रूट डायरेक्टरी के करीब, और "डाउन" बच्चे (रेन) को संदर्भित करता है।

मैं या तो लगता है कि IsCurrentOrUp()या IsCurrentOrParent()कार्यों के नामकरण के लिए अच्छा अभ्यास के रूप में तर्क दिया जा सकता।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.