दिए गए मार्ग से पहले / ./ का क्या अर्थ है?


25

मुझे इसे चलाने के लिए कहा गया है:

./yiic message ./app/messages/config.php

लेकिन मुझे इसका ./मतलब समझ में नहीं आ रहा है , क्या कोई कृपया स्पष्ट कर सकता है।

नोट: मेरा विश्वास करो, हम Google को ऐसा नहीं कर सकते। मैंने कोशिश की:

./ अर्थ ./ ubuntu

यह कुछ भी नहीं के रूप में ही था। :(


3
इन मामलों में, सबसे अच्छा "डॉट स्लैश" देखना है, जिसने इसे बहुत उपयोगी परिणाम दिया: linfo.org/dot_slash.html
heltonbiker

जवाबों:


29

./या .वर्तमान निर्देशिका के लिए यूनिक्स शॉर्टहैंड है।

आपको यह निर्दिष्ट करने की आवश्यकता है जब वर्तमान निर्देशिका आपके पैट में नहीं है। जब आप प्रोग्राम चलाते हैं, तो PATH उन फ़ोल्डरों की सूची होती है, जिन्हें खोजा जाता है। (आप इसे लिखकर निर्धारित कर सकते हैं echo $PATH।) यदि कोई निष्पादन योग्य फ़ाइल आपके PATH में नहीं है, तो इसे चलाने के लिए आपको उस फ़ोल्डर को निर्दिष्ट करना होगा जो आप फ़ाइल में पूर्ण पथ देकर कर सकते हैं, लेकिन यदि फ़ाइल में है। वर्तमान निर्देशिका, आप ./आशुलिपि के रूप में उपयोग कर सकते हैं ।

इसी तरह, ../या ..वर्तमान के ऊपर निर्देशिका के लिए सिर्फ आशुलिपि है।


17
किसी को अपने जवाब में शामिल करना चाहिए कि $ PATH में क्यों नहीं है .। ऐसा इसलिए है क्योंकि स्वचालित रूप से वर्तमान निर्देशिका का उपयोग करना एक सुरक्षा छेद है। कल्पना कीजिए कि कोई और व्यक्ति एक कार्यक्रम बनाता है, उसका नाम lsऔर आप cdउसकी निर्देशिका में लिखते हैं, फिर टाइप करेंls
Zan Lynx

1
@Zan मैं हमेशा यह सोच रहा था, इस सवाल के जवाब के लिए धन्यवाद, जो किसी ने नहीं पूछा, लेकिन किसी को होना चाहिए।
अर्धसैनिक 7'11

@ZanLynx महान टिप्पणी / इसके अलावा, यह जवाब में संपादित किया जाना चाहिए क्योंकि टिप्पणियां खो सकती हैं।
NSGaga

15

कमांड लाइन में प्रत्येक निर्देशिका में दो "विशेष निर्देशिकाएं" होती हैं जिन्हें बुलाया जाता है .और ..। ये क्रमशः, वर्तमान निर्देशिका और वर्तमान निर्देशिका वाली निर्देशिका के लिए शॉर्टहैंड हैं।

तो उदाहरण के लिए, cd ./more/directory/namesबस का मतलब है, "वर्तमान निर्देशिका में शुरू करें और पथ में जारी रखें।" इसी तरह, कमांड का cd ..अर्थ है, "एक डायरेक्टरी को बदलना।

यदि आप अपनी वर्तमान निर्देशिका का नाम चाहते हैं, तो आप pwdकमांड का उपयोग कर सकते हैं । इसके अलावा, यदि आप -aध्वज का उपयोग करते हैं, तो आप lsइन दो विशेष निर्देशिकाओं को देख सकते हैं। यही है, के ls -aसाथ शुरू होने वाली एक सूची का उत्पादन करेगा .और ..


उत्कृष्ट अलावा root45 +1 :)
Rinzwind

4

दूसरों ने पहले से ही समझाया है कि क्या .और क्या ..मतलब है (वर्तमान निर्देशिका और क्रमशः मूल निर्देशिका)। यह सभी पथ नामों पर लागू होता है।

जब आप एक टर्मिनल खोलते हैं, तो आप आमतौर पर अपने होम डायरेक्टरी में शुरू करते हैं: ~(जो फैलता है /home/username)। नीचे दिए गए रास्ते सभी समतुल्य हैं, बशर्ते आपकी वर्तमान कार्यशील निर्देशिका यह हो /home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username( /अभी भी मूल जनक है /)
  • ./././././. (वर्तमान निर्देशिका में वर्तमान निर्देशिका ...)
  • ./ (निर्देशिकाओं के लिए अनुगामी स्लैश की अनुमति है)
  • /home////username/// (और इतने सारे स्लैश हैं)

करो नहीं भ्रमित ./programसाथ . program./programवर्तमान निर्देशिका में एक फ़ाइल को निष्पादित बिट सेट के साथ चलाता है। . ./programएक बाश चीज है और वैकल्पिक रूप से लिखा जा सकता है source ./programजो programवर्तमान निर्देशिका में फ़ाइल से बैश कमांड पढ़ता है और उन्हें वर्तमान शेल में निष्पादित करता है।

यदि आप आश्चर्य करते हैं कि आप geditइसके बजाय सिर्फ क्यों /usr/bin/geditनहीं दौड़ सकते programहैं ./programया नहीं /home/username/program, तो संबंधित प्रश्न देखें:


3

इसका मतलब है शुरू से current directory path

मान लेते हैं कि आपके पास pathऐसा है:

/usr/ /usr/bin/ /usr/local/bin

और अंदर /usr/bin/एक निष्पादन योग्य कहा जाता है yiic

यदि आप yiicइसे जारी करते हैं तो यह एक में शुरू होगा /usr/bin/

जारी करके ./yiicआप सिस्टम को इस निष्पादन योग्य के लिए वर्तमान निर्देशिका के अंदर देखने के लिए कहते हैं।


ठीक है ... लेकिन मुझे अभी भी नहीं मिला है। मान लें कि मेरे पास yiic है /home/mysuser/और मैं उपयोग करके वहां नेविगेट करता हूं cd /home/myuser। एक बार अंदर, मुझे विश्वास था कि सिर्फ यिक करना, यह काम करना चाहिए क्योंकि मैंने उस निर्देशिका पर कॉल किया है। लेकिन वह कहते हैं कि कमांड फाइल नहीं। यदि मैं ऐसा ही करता हूं, और मैं / ./ का उपयोग करता हूं, तो यह ठीक से चलता है ... क्या आप कृपया थोड़ा और स्पष्ट कर सकते हैं?
एमईएम

@frabjous ने इस टिप्पणी का भी जवाब दिया।
एमईएम

नहीं! जब तक आप इसे वर्तमान निर्देशिका (उपयोग करके ./) का उपयोग करने के लिए नहीं कहते, तब तक यह हमेशा PATH निर्देश में दिखेगा। User45 के उत्तर को देखें: .एक फ़ोल्डर के अंदर एक विशेष फ़ाइल है जिसे आप ls -laनिर्देशिका में करते समय देख सकते हैं ;)
रिनविंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.