कमांड लाइन से एप्लिकेशन का रास्ता कैसे खोजें?


109

उदाहरण के लिए, मैंने gitअपने सिस्टम पर स्थापित किया है। लेकिन मुझे यह याद नहीं है कि मैंने इसे कहाँ स्थापित किया है, इसलिए यह पता लगाने के लिए कौन सी कमांड फिट है?


45
हेह, हेह " whichकमांड" वास्तव में :)
तिखन जेल्विस

जवाबों:


123

यदि यह आपके रास्ते में है, तो आप type gitया तो चला सकते हैं which gitwhichआदेश समस्याओं उचित पथ (पर्यावरण और डॉट फ़ाइलों के बीच भ्रम की स्थिति) हो रही पड़ा है। के लिए type, आप सिर्फ -pतर्क के साथ रास्ता पा सकते हैं ।

यदि यह आपके रास्ते में नहीं है, तो इसके लिए इसे देखना सबसे अच्छा है क्योंकि इसमें locate -b git 'git' नाम की कोई भी चीज़ मिलेगी। यह एक लंबी सूची होगी, इसलिए इसके साथ अर्हता प्राप्त करना अच्छा हो सकता है locate -b git | fgrep -w bin


10
मैं locateअंतहीन रूप से उपयोग करता हूं (यह बहुत तेज है), लेकिन इसके बारे में अनजान लोगों के लिए, locateयह केवल अपने सबसे हालिया डेटाबेस अपडेट के रूप में अद्यतित है, जो मेरे उबंटू पर दैनिक रूप से चलाया जाता है। ताज़ा आदेश है sudo updatedb... इसके अलावा locate: निर्मित regex क्षमता है, इसलिए इस तरह आदेशों काम करता है locate -br "^git$"-b` साधन करने के लिए बस खोज को सीमित ... basename ... या बिना -b, यह पूर्ण पथ नाम खोज .. इसके अलावा , यह केवल उन रास्तों को खोजता है जिन्हें आपने इसे खोजने के लिए कॉन्फ़िगर किया है .. आपके रेगेक्स फिल्टर के अलावा इस का कोई कमांड-लाइन नियंत्रण नहीं है।
पीटर।

7
के लिए पसंद typeकरते हैं whichwhichआसानी से भ्रमित हो जाता है
गाइल्स

@ गिल्स, मेरे लिए यह मजाकिया व्यवहार बिल्कुल विपरीत है: typeएक शेल बिलिन है जो मुझे उपनाम और ऐसे बताता है, और whichएक बाहरी कार्यक्रम है जो मुझे एक निष्पादन योग्य का रास्ता दिखाता है ... हालांकि अगर कोई ऐसा बेसिन है जो अंदर मिलता है जिस तरह से निष्पादन योग्य नहीं कहा जाएगा।
क्वॉडलिबेटर 21

@quodlibetor के साथ समस्याएं whichयह हैं कि यह शेल बिल्ट-इन और फ़ंक्शंस के बारे में नहीं जानता है (जो प्रासंगिक है जब आप सोच रहे हैं कि कमांड टाइपिंग क्या करेगा), और यह $PATHकुछ सिस्टम पर एक अलग का उपयोग करता है ।
गाइल्स

48

ऐसा करने का POSIX मानक तरीका है command -v git। सभी UNIX- जैसी प्रणालियों को इसका समर्थन करना चाहिए।


4
मुझे पता है कि यह एक साल से अधिक पुराना है, लेकिन यह वही था जो मैं देख रहा था; आश्चर्य है कि यह स्वीकृत उत्तर नहीं है।
एकोई Meexx

13

whereis git और आपको आज्ञा का मार्ग मिलता है।

अगर आपके पास git PATH वैरिएबल में है, तो यदि आपने इसे पैकेज मैनेजर के माध्यम से स्थापित नहीं किया है, तो यह अधिक जटिल है और आपको findया locateकमांड्स का उपयोग करना चाहिए ।


1
के उपयोग whichको भी प्रोत्साहित किया जाता है।
निखिल मुल्ले

5
@ निखिल type, बल्कि, नहीं which। देखें कि अलियास कमांड पर कैसे उपयोग करें which?
गिल्स

13

यहाँ अन्य उत्तर मोटे तौर पर लिनक्स का आधुनिक संस्करण की दिशा में सक्षम हो रहे हैं, इसलिए यदि आप उपयोग करने के लिए हो gitएक OS नहीं है पर locate, whereis, which, या apropos(सोलारिस, HPUX, आदि जैसे), तो वहाँ हमेशा वर्ष अतिरिक्त है find

find / -name git 

ऊपर सूचीबद्ध प्रणालियों के कुछ पुराने संस्करण, आपको -printआपूर्ति किए गए विकल्प की आवश्यकता हो सकती है find

find / -name git -print

और यदि आप उपयोग करते हैं locate, तो सुनिश्चित करें कि आप समय updatedb-समय पर चलाते हैं । ( locate.updatedbकुछ BSD डेरिवेटिव्स पर)


8
पथ में कार्यक्रमों के लिए, उपयोग करेंtype ; यह विश्वसनीय और पोर्टेबल है (30-वर्षीय प्रणालियों को छोड़कर)।
गाइल्स

धन्यवाद, @ गिल्स। मुझे कभी पता नहीं चला type। :) यह निश्चित रूप से प्रदर्शनों की सूची में जा रहा है!
टिम कैनेडी

यह संभवत: यह इंगित करने के लायक है कि findफ़ाइल सिस्टम की पूरी गहराई-पहली खोज जहां भी आप इसे शुरू करते हैं, वहां से रूट करते हैं। तो find / -name gitआपके पूरे सिस्टम को पीछे छोड़ देगा। यदि आप जानते हैं कि कार्यक्रम आपके रास्ते पर है IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, तो आप आमतौर पर कर सकते हैं , हालांकि यूनिक्स फाइलसिस्टम पर्याप्त रूप से अनुमति देते हैं कि अगर आपके पास अजीब अक्षर हैं तो यह कई तरह से टूट सकता है PATH
quodlibetor

वास्तव में जो कमांड मैंने पहले दी थी वह आपकी PATH, सही चीज (पहले की तरह ही कैविट्स के साथ) टूट जाएगी IFS=":"; for dir in $PATH; do find "$dir" -name git; done। इसके अलावा, दोहराते हैं, इस सवाल का जवाब केवल लोग हैं, जो करने के लिए पहुँच नहीं है द्वारा इस्तेमाल किया जाना चाहिए typeया which या locate , यानी, लगभग कोई भी नहीं। @ आर्सगे का उत्तर सही है।
क्वॉडलिबेटर 21

5

स्थापित प्रोग्राम के लिए पथ प्राप्त करने के लिए जिसका आप या तो उपयोग करते हैं whereisया which। यदि आप यह नाम भूल जाते हैं, तो आप aproposअपनी उपयोगिता के एक पर्याय या विवरण के साथ उपयोग कर सकते हैं , जैसे apropos "version control"पाएंगे git। इसके बाद निश्चित whatisरूप से एक कार्यक्रम के कार्य को संक्षेप में प्रस्तुत करने की आज्ञा है। हालाँकि यह आपके सिस्टम पर सभी कार्यक्रमों और कार्यों पर लागू नहीं होता है। उदाहरण के लिए प्रयास करें whatis "the meaning of life, universe and everything"


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