किसी विशेष सॉफ्टवेयर का मार्ग कैसे जानें?


13

संदर्भ: जब मैं लॉगिन करता हूं तो मैं स्वचालित रूप से एक आवेदन शुरू करने की कोशिश कर रहा हूं। इसके लिए मुझे pathएप्लिकेशन के लिए चयन करना होगा ।

यहाँ छवि विवरण दर्ज करें

यहाँ वे रास्ते हैं जिन पर मैंने पहले ही गौर किया था:

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

यदि यह मदद कर सकता है, तो मैं जिस एप्लिकेशन को ढूंढने की कोशिश कर रहा हूं उसे " स्क्रीनक्लाउड " कहा जाता है और मैंने इसे उबंटू सॉफ्टवेयर सेंटर से डाउनलोड किया।

लेकिन मुझे यह नहीं मिल रहा है, क्या कोई ऐसा तरीका है जिससे मुझे पता चल सकता है कि किसी विशेष सॉफ़्टवेयर को कहाँ स्थापित किया गया है? क्योंकि अगर मैं इस एक के लिए भी मिला, तो मैं भविष्य में एक ही मुद्दा होने से बचना चाहूंगा।


2
क्या यह काम नहीं करता है यदि आप कमांड लाइन में केवल स्क्रेंक्लॉउड टाइप करते हैं?
ग्राहम

क्या आप इसे स्नैप स्टोर से या उबंटू सॉफ्टवेयर सेंटर से प्राप्त कर सकते हैं क्योंकि मैं इसे उबंटू एपेट रिपॉजिटरी में से किसी में नहीं ढूंढ सकता।
mchid

2
@ एमकिड मैं ओपी के लिंक को नहीं बल्कि आपकी टिप्पणी को संबोधित कर रहा था: "क्योंकि मैं इसे उबंटू एपॉट रिपॉजिटरी में से किसी में नहीं ढूंढ सकता हूं" स्क्र्रेन्क्लॉड .debपैकेज से स्थापित किया जा सकता है लेकिन आपको पीपीए जोड़ने की आवश्यकता है।
विनयुनुच्स

1
@mchid मुझे पता था कि आदेश से बदल गया था screencloud.shकरने के लिए screencloudऔर संदिग्ध इसे से बाहर ले जाया गया था /opt। मेरा उत्तर का वह भाग उनका कहना था कि कैसे typeऔर whichनहीं मिलेगा screencloudलेकिन locateहोगा।
विनयुनुच्स

1
@ WinEunuuchs2Unix सही पर। screencloud.shवास्तव में अभी भी मौजूद है, लेकिन मुझे यकीन नहीं है कि यह screencloudइस तथ्य से अलग है कि .shफाइल एक स्क्रिप्ट है और screencloudनहीं है। मैं वास्तव में इस एप्लिकेशन से परिचित नहीं हूं। के तहत /usr/bin/एक है screencloud, एक screencloud.sh, और भी screencloud-कैसे की तरह संस्करण संख्या के बाद gimpहै।
mchid

जवाबों:


16

एक निष्पादन योग्य का मार्ग खोजें

सर्वोत्तम मार्ग

  • type executable

की जाँच करें इस सवाल के बारे में अधिक जानने के लिए typeबेहतर है। (धन्यवाद, टिप्पणियाँ!)

दूसरा तरीका

  • whereis executable
  • which executable

वे आदेश केवल PATH चर ( echo $PATH) में खोजते हैं , इस प्रकार वे कुछ मामलों में मान्य नहीं हैं (अंतर्निहित फ़ंक्शन, उपनाम या बैश फ़ंक्शन, और अधिक)।


3
अविश्वसनीय रूप से पर्याप्त यह ubuntu पूछने पर अभी तक एक सवाल नहीं था। अच्छा सवाल @Ced!
Tatsu

वास्तव में, मैं शायद ही विश्वास कर सकता हूँ!
बिग्गबी

1
मुझे एक अन्य प्रश्न का पता चला, जो शेल शेलिन के रूप typeमें पसंद किया whichजाता है और यह निर्धारित कर सकता है कि क्या कमांड एक उपनाम है। वो मेरे लिए भी नया था!
शाम

1
क्यों typeपसंद किया जाता है की एक (लंबी) स्पष्टीकरण के लिए यहां देखें : "जो" का उपयोग क्यों न करें? तब क्या उपयोग करें?
टेराडॉन

1
@ उत्तर में सभी बिंदुओं को लागू करें। "उपयोग मामले" अनुभाग शामिल है जो इंगित करता है कि whichवास्तव में शेल स्क्रिप्ट के विशिष्ट संदर्भ में उपयोगी है। हालांकि, उस संदर्भ के बाहर, typeलगभग हमेशा बेहतर विकल्प होता है।
टेराडॉन

1

पथ के अंदर या बाहर कमांड स्थान ढूंढें

मान लें कि आप उस स्थान को ढूंढना चाहते हैं uname, जो एक कार्यक्रम है जो सिस्टम जानकारी को सूचीबद्ध करता है। यदि आप जानना चाहते हैं कि आपके पास शीर्ष स्तर की कमांड किस निर्देशिका में संग्रहीत है, तो कई विकल्प हैं:

$ which uname
/bin/uname

$ type -a uname
uname is /bin/uname

$ command -v uname
/bin/uname

$ locate uname
/bin/uname
    (... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz

लाभ का पता लगाएँ

अंतिम विकल्प कमांड प्रॉम्प्ट से चलाए जा रहे प्रोग्राम locateको unameनहीं बल्कि सभी फाइलों को लौटाता है ।

इसका लाभ locateयह है कि आपके खोज पथ में कमांड नहीं मिलेंगे । type -a(सरल पर पसंदीदा type) और whichकेवल आपके खोज पथ में कमांड प्राप्त करेगा। अपने खोज पथ का उपयोग देखने के लिए echo $PATH

उदाहरण के लिए इस उत्तर को लें कि कैसे स्क्रेंक्लड शुरू करें? :

प्रयत्न...

/opt/screencloud/screencloud.sh

locate screencloudआदेश में यह मिल जाएगा, लेकिन which screencloudऔर type -a screencloudनहीं होगा क्योंकि:

  • पूरा नाम है screencloud.shऔर केवल locateआंशिक मैच पर कमांड खोजता है।
  • /opt/screencloudशायद खोज पथ में नहीं है। whichऔर typeकेवल खोज पथ में निष्पादन योग्य फ़ाइलों की तलाश करें।

नोट: यह एक पुराना उत्तर है। मॉडर्न स्क्रीनक्लाउड के साथ कहा जाता है screencloud

findकमांड पर लोकेट का फायदा यह है कि यह सैकड़ों या हजारों गुना तेज हो सकता है। इसके अलावा findसे शुरू होने वाली /कई अनुमति त्रुटियां हैं जिनके साथ आप अनुभव नहीं करेंगे locate

नुकसान का पता लगाएं

यदि आपने अभी कार्यक्रम स्थापित किया है, तो आपको sudo updatedbपता लगाने के डेटाबेस को अपडेट करने के लिए उपयोग करना होगा ।


1

अपनी सभी $PATHनिर्देशिकाओं को सूचीबद्ध करने के लिए निम्नलिखित कमांड का उपयोग करें :

echo $PATH | sed 's/:/\n/g'

इसके लिए पूरा रास्ता खोजने के लिए निम्नलिखित कमांड का उपयोग करें screencloud:

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

यदि आपने पैकेज स्थापित करने के लिए उपयोग किया है apt, apt-getया उबंटू सॉफ्टवेयर सेंटर, तो आप पूरा रास्ता खोजने के लिए निम्न कमांड का उपयोग कर सकते हैं:

dpkg -L screencloud | grep bin

यह मानकर कि आपने इस भंडार का उपयोग किया है , आपको इसमें खोजने screencloud में सक्षम होना चाहिए /usr/bin/

पूरा रास्ता है:

/usr/bin/screencloud

या

/usr/bin/screencloud-*

हालांकि, यदि आपने अपने प्रश्न में दिए गए लिंक के अनुसार स्नैपक्राफ्ट स्टोर का उपयोग किया है , तो पथ निम्नलिखित निर्देशिका के अंतर्गत होगा:

/snap/bin

और जानकारी

इसके अलावा, कृपया याद रखें कि उबंटू मामला संवेदनशील है, इसलिए आपको बिना किसी बड़े अक्षरों के सभी लोअरकेस का उपयोग करना होगा।


यह बहुत ही विस्तृत उत्तर के लिए धन्यवाद, आप एक वोट दें :) जीता
Ced

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