سؤال الذي / أين الاختلافات


ما الفرق بين which و whereis ؟


95
2017-09-12 20:12


الأصل


أنا آسف ولكن على نظام التشغيل 10.5.8 OS X الخاص بي وحيث دائما تعطي نفس النتائج. ربما هذا هو سؤال محدد للغاية OS X ، لأنني أوافق ، ومن المتوقع نتيجة مختلفة. ربما لا يتوافق ذلك مع ما يجب أن يفعله. على الأقل المثالان (انظر أدناه) لا يعملان: حيث تعطي ls و whereis php دائما نفس النتيجة التي ... هل يمكن لأي شخص تأكيد ذلك؟ هل يتصرف سنو ليوبارد بنفس الطريقة؟ - Wolf
نعم ، أعلم ، لماذا سألت هذا السؤال. - mk12
@ وولف هنا مثال which و whereis إعطاء مخرجات مختلفة (على نظام MacOS Sierra) apple.stackexchange.com/questions/259047/... - Matthew
@ mk12 أشعر type هو متفوق. كما يعرف عن الأسماء المستعارة المحددة ، وظائف إلخ - Blauhirn


الأجوبة:


ماذا عن التعلم 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

107
2017-09-12 20:38



لم أكن أعرف ماذا ، شكرا. - mk12
راجع للشغل ، سأزيل علامة "osx" ، حيث ينطبق هذا السؤال على جميع المتغيرات unix (بما في ذلك Linux و BSD و Mac OS X و ...) - Denilson Sá Maia
تغيرت إلى يونيكس - mk12
هناك أكثر من ذلك. على نظام بلدي ، حيث والتي إرجاع مسارات قابلة للتنفيذ مختلفة. لا يسعني إلا أن أتمكن من الوصول إلى الطريق الذي يمتد في الواقع whereisوليس واحد من أجل which. - Jordan Reiter
JordanReiter: لا يمكن أن يكون! which يبين المسار الفعلي. هل أنت متأكد من المسار الذي أشار إليه which ليس مجرد رابط إلى المسار المشار إليه whereis؟ ربما هو اسم مستعار قذيفة. في bash ، حاول تشغيل type your_cmd_here. - Denilson Sá Maia


whereis يبحث عن المواقع * nix القياسية للأمر المحدد.

which البحث في PATH الخاص بالمستخدم (والذي قد يتضمن بعض المواقع التي يتم البحث فيها ، ولا يجوز أن يتضمن ملفات أخرى - قد يتضمن أيضًا بعض الأماكن التي whereis لا تبحث إذا كنت قد أضفت إلى PATH)


21
2017-09-12 20:16



ما هو * لا شىء؟ - mk12
يونيكس ولينكس وما إلى ذلك (ماكنتوش التي تنتمي إلى ما إلى ذلك)
أوه ، هاها ، اعتقدت دائما أن التدفق الفائض كان يراقب U في unix كلما رأيت ذلك لسبب ما .. - mk12
كلا. مجرد اتفاقية شائعة إلى حدٍ بعيد لاستخدام البدل الإبداعي للإشارة إلى عائلة من أنظمة التشغيل المماثلة. ؛)


نقلا عن صفحات رجلهم:

أين هو :

حيث يحدد المصدر / ثنائي و   أقسام أدلة للملفات المحددة.

على سبيل المثال :

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

أي ، "php" القابل للتنفيذ ، وبعض الأشياء الأخرى (مثل صفحات الرجل).


و التي :

والتي ترجع اسم المسار الى   الملفات التي سيتم تنفيذها في   البيئة الحالية

على سبيل المثال :

$ which php
/usr/bin/php

أي ، فقط "php" قابل للتنفيذ.


6
2017-09-12 20:17





التي البحث عن الملفات التنفيذية في الدلائل المحددة بواسطة متغير البيئة PATH. وإذا تم العثور على ، سيتم طباعة المسار الكامل لهذا الملف القابل للتنفيذ.

$ أي ls
  / بن / ليرة سورية
  $ التي ifconfig
  $ # لا يوجد مخرج ، لأن ifconfig موجود فقط في PATH الخاص بالجذر.

أين هو البحث عن الملفات التنفيذية والملفات المصدر والصفحات اليدوية باستخدام قاعدة بيانات تم إنشاؤها بواسطة النظام تلقائيًا.

دولار أقل
  less: / bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz

لكن يبدو ذلك أين هو و حدد لا تستخدم نفس قاعدة البيانات. عندما قمت بتثبيت برنامج ثم استخدامها أين هو و حدد على الفور للبحث عن هذا البرنامج. والنتيجة هي ذلك أين هو يمكن معرفة بعض الملفات المتعلقة بهذا البرنامج في حين حدد لم أستطع. هل يستخدمون حقا قاعدة بيانات مختلفة؟ كيف تعمل قاعدة البيانات؟ - حسنا ، ماذا عن رفض أن يكون المتحذلق؟ :)


1
2018-01-24 15:09



هل قمت بتشغيل الأمر updatedb؟ تحديد يعتمد على ذلك بقدر ما أتذكر - Oliver M Grech