Whereis Command

1) ما هو أمر whereis ولماذا نستخدمه؟

أمر whereis يُستخدم لإيجاد أماكن:

  • ملف التشغيل (binary) للبرنامج
  • صفحات المساعدة (man pages)
  • وأحيانًا ملفات المصدر/المكتبات المتعلقة (حسب ما هو موجود على النظام)

يعني بدل ما يعطيك مكان executable فقط مثل which، غالبًا يعطيك:

  • binary
  • man
  • source / library paths (إن كانت موجودة)
2) الصيغة العامة (Syntax)
whereis [OPTIONS] COMMAND
Bash

مثال:

whereis ls
Bash
3) أمثلة أساسية
أ) معرفة مكان ls (binary + man غالبًا)
whereis ls
Bash

قد يعطي:

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
Bash
ب) مثال مع python3
whereis python3
Bash

قد يعطي مثلًا:

python3: /usr/bin/python3 /usr/lib/python3.10 /usr/share/man/man1/python3.1.gz
Bash
4) متى تستخدم whereis بدل which؟

which

يعطيك “الأمر الذي سيُشغَّل” حسب PATH:

which python3
Bash

whereis

يعطيك “أماكن مرتبطة” (binary + man + libs…):

whereis python3
Bash

الخلاصة:

  • إذا هدفك: أعرف أي نسخة ستشتغل عند كتابة الأمر → which أو command -v
  • إذا هدفك: أعرف أين الباينري + المان + ملفات مرتبطة → whereis
5) أهم خيارات whereis (مهمة للمبتدئ)
أ) البحث عن ملفات التشغيل فقط (binaries): -b
whereis -b gcc
Bash
ب) البحث عن صفحات المساعدة فقط (man): -m
whereis -m gcc
Bash
ج) البحث عن “المصدر/أشياء مرتبطة بالمصدر” فقط: -s
whereis -s gcc
Bash
د) دمج الخيارات (مثال: binary + man فقط)
whereis -b -m python3
Bash
6) مثال عملي واضح

جرّب هذه الأوامر وشوف الفرق في المخرجات:

which ls
whereis ls

which gcc
whereis gcc
whereis -b gcc
whereis -m gcc
Bash
7) حدود whereis (مهم تفهمها)
  • whereis لا يبحث في كل مكان مثل find أو locate.
  • هو يبحث في “قائمة مسارات قياسية” معروفة، لذلك:
    • قد لا يجد سكربتاتك داخل ~/project
    • وقد لا يجد أشياء مثبتة في أماكن غير معتادة

مثال: سكربت داخل home غالبًا لن يظهر:

cd ~/project
printf '#!/bin/bash\necho HI\n' > mytool
chmod +x mytool
whereis mytool
Bash

غالبًا سيخرج:

mytool:
Bash

(يعني لم يجد شيء)

للبحث عنه فعليًا استخدم:

find ~/project -name mytool
Bash

أو إذا محدّث قاعدة locate:

locate mytool
Bash
8) مقارنة سريعة جدًا (مفيدة للحفظ)
  • which: أول executable في PATH
  • whereis: binary + man + (source/libs) في مسارات قياسية
  • locate: سريع جدًا (قاعدة بيانات)، قديم إذا ما عملت updatedb
  • find: بحث مباشر الآن، قوي جدًا لكنه أبطأ
9) تدريب سريع (Practice)

نفّذ هذا:

# 1) جرب أوامر معروفة
whereis ls
whereis -b ls
whereis -m ls

# 2) بايثون
whereis python3
whereis -b -m python3

# 3) قارن مع which
which python3
which -a python3
Bash
هل الشرح الأصلي كافي؟

نعم ممتاز، والإضافات اللي يحتاجها المبتدئ عادةً:

أمثلة على -b و -m و -s بشكل عملي

توضيح الفرق الحقيقي بين whereis و which

التنبيه أن whereis لا يبحث في كل مكان (ليس مثل find/locate)