जो / जहां अंतर


112

बीच क्या अंतर है whichऔर whereis?


मुझे खेद है लेकिन मेरे 10.5.8 OS X सिस्टम पर जो और जहां हमेशा एक ही परिणाम देता है। हो सकता है कि यह है एक बहुत ही ओएस एक्स विशिष्ट प्रश्न एक अलग परिणाम की उम्मीद है, के बाद से मैं सहमत हूं। हो सकता है कि जहां यह क्या करना चाहिए अनुपालन नहीं करता है। कम से कम दो उदाहरण (नीचे देखें) काम नहीं कर रहे हैं: जिसमें एलएस और एलईएसफिस हमेशा एक ही परिणाम देते हैं जैसे कि ... क्या कोई इसकी पुष्टि कर सकता है? क्या हिम तेंदुआ समान व्यवहार करता है?
वुल्फ

हाँ, मुझे पता है, यही कारण है कि मैंने यह सवाल पूछा।
एमके

@ वोल्फ का एक उदाहरण है whichऔर whereisविभिन्न आउटपुट ( macOS
मैथ्यू

@ mk12 मुझे लगता है typeकि बेहतर है। यह परिभाषित
अलियास

जवाबों:


121

कैसे के बारे में सीखने whereisऔर whichउपयोग करने के बारे में whatis?

$  whatis which
which                (1)  - shows the full path of (shell) commands

$  whatis whereis
whereis              (1)  - locate the binary, source, and manual page files for a command

मूल रूप से, whereis"संभवतः उपयोगी" फ़ाइलों के whichलिए खोज करता है, जबकि केवल निष्पादन योग्य के लिए खोज करता है।

मैं शायद ही कभी उपयोग करता हूं whereis। दूसरी ओर, whichबहुत उपयोगी है, विशेष रूप से लिपियों में। whichनिम्नलिखित प्रश्न का उत्तर है: यह आदेश कहां से आया है?

$  which ls
/bin/ls

$  whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2

34
व्हाट्स के बारे में नहीं पता था, धन्यवाद।
mk12

1
BTW, मैं "osx" टैग को हटा दूंगा, क्योंकि यह सवाल सभी यूनिक्स वेरिएंट (लिनक्स, बीएसडी, मैक ओएस एक्स, ... सहित) पर लागू होता है
डेनिलसन सिया मिया

बदलकर unix
mk12

1
इसके अलावा और भी बहुत कुछ है। मेरे सिस्टम पर, जिसमें और जो अलग-अलग निष्पादन योग्य पथ लौटाते हैं। मैं केवल उसी के लिए रास्ता पा सकता हूं जो वास्तव में साथ चलता है whereis, न कि वह जिसके लिए चलता है which
जॉर्डन रीटर

1
@ जोर्डन राइटर: यह नहीं हो सकता! whichवास्तविक रास्ता दिखाता है। क्या आप सुनिश्चित हैं कि जिस मार्ग द्वारा इंगित किया गया whichहै, वह केवल उस मार्ग के लिए सहानुभूति नहीं है जिसके द्वारा इंगित किया गया है whereis? हो सकता है कि वह शेल उर्फ ​​हो। बैश में, दौड़ने की कोशिश करें type your_cmd_here
डेनिल्सन सआ मिया

23

whereis एक निर्दिष्ट कमांड के लिए मानक * निक्स स्थान खोजता है।

whichआपके उपयोगकर्ता-विशिष्ट PATH को खोजता है (जिसमें कुछ ऐसे स्थान शामिल हो सकते हैं जहाँ खोज करता है, और दूसरों को शामिल नहीं कर सकता है - इसमें कुछ ऐसे स्थान भी शामिल हो सकते हैं जो whereisआपके PATH में जुड़ने पर खोज नहीं करते हैं)


* निक्स क्या है?
एमके

2
यूनिक्स, लिनक्स आदि (मैक ओएस एक्स आदि में संबंधित)

8
ओह, हाहा, मैंने हमेशा सोचा था कि स्टैक ओवरफ्लो यूनिक्स में यू को सेंसर कर रहा था जब भी मैंने किसी कारण से देखा ..
mk12

नहीं। समान ऑपरेटिंग सिस्टम वाले परिवार को संदर्भित करने के लिए रचनात्मक वाइल्डकार्ड का एक सामान्य रूप से सामान्य उपयोग। ;)

6

उनके मैन पेजों का उद्धरण:

जिसमें :

जिसमें निर्दिष्ट स्रोत के लिए स्रोत / बाइनरी और मैनुअल अनुभागों का पता चलता है।

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

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

यानी, "php" निष्पादन योग्य, और कुछ अन्य सामान (जैसे मैन पेज)।


और जो :

जो वर्तमान परिवेश में निष्पादित की गई फ़ाइलों के पथनाम को लौटाता है

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

$ which php
/usr/bin/php

यानी, केवल "php" निष्पादन योग्य है।


1

जो पर्यावरण चर PATH द्वारा निर्दिष्ट निर्देशिकाओं में निष्पादन योग्य है। और अगर पता चला, तो इस निष्पादन योग्य का पूरा मार्ग प्रिंट हो जाएगा।

$ जो ls
/ bin / ls
$ जो ifconfig
$ # नो आउटपुट है, क्योंकि ifconfig केवल रूट के PATH में मौजूद है।

whereis निष्पादनयोग्य, स्रोत फ़ाइलों, और मैनुअल पृष्ठों एक डेटाबेस सिस्टम द्वारा स्वत: निर्मित उपयोग करने के लिए खोज।

$ कम से
कम

लेकिन ऐसा लगता है कि whereis और पता लगाने में एक ही डेटाबेस का उपयोग नहीं करते। जब मैं एक सॉफ्टवेयर स्थापित और फिर इस्तेमाल किया whereis और पता लगाने के लिए इस सॉफ्टवेयर के लिए खोज करने के लिए तुरंत। इसका परिणाम यह है कि जहां इस सॉफ्टवेयर से संबंधित कुछ फाइलों का पता लगा सकते हैं, वहीं पता नहीं लगा सकते हैं। क्या वे वास्तव में विभिन्न डेटाबेस का उपयोग करते हैं? डेटाबेस कैसे काम करता है? - फिर, कैसे एक पेडेंट होने से इनकार करते हैं? :)


क्या आपने अपडेटेड कमांड चलाया है? जहां तक ​​मुझे याद है, उस पर निर्भरता का पता लगाएं
ओलिवर एम ग्रीच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.