ما الفرق بين which
و whereis
؟
ماذا عن التعلم عن 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
whereis
يبحث في المواقع * nix القياسية للأمر المحدد.
which
يبحث في PATH الخاص بالمستخدم (والذي قد يتضمن بعض المواقع التي يبحث فيها الموقع ، وقد لا يشمل مواقع أخرى - قد يتضمن أيضًا بعض الأماكن التي لا يبحث عنها whereis
إذا أضفت إلى PATH)
نقلا عن صفحات رجلهم:
whereis :
حيث يحدد موقع أقسام المصادر/الثنائية والأدلة للملفات المحددة.
على سبيل المثال :
$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz
أي ، "php" قابل للتنفيذ ، وبعض الأشياء الأخرى (مثل صفحات الرجل).
و والتي :
الذي يعرض أسماء ملفات الملفات التي سيتم تنفيذها في البيئة الحالية
على سبيل المثال :
$ which php
/usr/bin/php
أي فقط "php" قابل للتنفيذ.
والتي تبحث عن الملفات التنفيذية في الدلائل المحددة بواسطة متغير البيئة PATH. وفي حالة اكتشاف ذلك ، سيتم طباعة اسم المسار الكامل لهذا الملف القابل للتنفيذ.
$ الذي ليرة سورية
/بن/ليرة سورية
$ الذي ifconfig
$ # لا يوجد إخراج ، لأن ifconfig موجود فقط في PATH للجذر.
whereis ابحث عن الملفات التنفيذية والملفات المصدر والصفحات اليدوية باستخدام قاعدة بيانات تم إنشاؤها بواسطة النظام تلقائيًا.
حيث أقل
أقل:/bin/less/usr/bin/less/usr/bin/X11/less /usr/share/man/man1/less.1.gz
ولكن يبدو أن whereis و حدد موقع لا تستخدم نفس قاعدة البيانات. عندما قمت بتثبيت أحد البرامج ثم استخدمت whereis و حدد موقع على الفور للبحث عن هذا البرنامج. والنتيجة هي أن whereis يمكنه معرفة بعض الملفات ذات الصلة بهذا البرنامج بينما تحديد موقع لا يمكن. هل حقا استخدام قاعدة بيانات مختلفة؟ كيف تعمل قاعدة البيانات؟ - حسنا ، ماذا عن رفض أن يكون المتحذلق؟ :)