1) ما هو أمر whereis ولماذا نستخدمه؟
أمر whereis يُستخدم لإيجاد أماكن:
- ملف التشغيل (binary) للبرنامج
- صفحات المساعدة (man pages)
- وأحيانًا ملفات المصدر/المكتبات المتعلقة (حسب ما هو موجود على النظام)
يعني بدل ما يعطيك مكان executable فقط مثل which، غالبًا يعطيك:
- binary
- man
- source / library paths (إن كانت موجودة)
2) الصيغة العامة (Syntax)
whereis [OPTIONS] COMMANDBashمثال:
whereis lsBash3) أمثلة أساسية
أ) معرفة مكان ls (binary + man غالبًا)
whereis lsBashقد يعطي:
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gzBashب) مثال مع python3
whereis python3Bashقد يعطي مثلًا:
python3: /usr/bin/python3 /usr/lib/python3.10 /usr/share/man/man1/python3.1.gzBash4) متى تستخدم whereis بدل which؟
which
يعطيك “الأمر الذي سيُشغَّل” حسب PATH:
which python3Bashwhereis
يعطيك “أماكن مرتبطة” (binary + man + libs…):
whereis python3Bashالخلاصة:
- إذا هدفك: أعرف أي نسخة ستشتغل عند كتابة الأمر →
whichأوcommand -v - إذا هدفك: أعرف أين الباينري + المان + ملفات مرتبطة →
whereis
5) أهم خيارات whereis (مهمة للمبتدئ)
أ) البحث عن ملفات التشغيل فقط (binaries): -b
whereis -b gccBashب) البحث عن صفحات المساعدة فقط (man): -m
whereis -m gccBashج) البحث عن “المصدر/أشياء مرتبطة بالمصدر” فقط: -s
whereis -s gccBashد) دمج الخيارات (مثال: binary + man فقط)
whereis -b -m python3Bash6) مثال عملي واضح
جرّب هذه الأوامر وشوف الفرق في المخرجات:
which ls
whereis ls
which gcc
whereis gcc
whereis -b gcc
whereis -m gccBash7) حدود whereis (مهم تفهمها)
whereisلا يبحث في كل مكان مثلfindأوlocate.- هو يبحث في “قائمة مسارات قياسية” معروفة، لذلك:
- قد لا يجد سكربتاتك داخل
~/project - وقد لا يجد أشياء مثبتة في أماكن غير معتادة
- قد لا يجد سكربتاتك داخل
مثال: سكربت داخل home غالبًا لن يظهر:
cd ~/project
printf '#!/bin/bash\necho HI\n' > mytool
chmod +x mytool
whereis mytoolBashغالبًا سيخرج:
mytool:Bash(يعني لم يجد شيء)
للبحث عنه فعليًا استخدم:
find ~/project -name mytoolBashأو إذا محدّث قاعدة locate:
locate mytoolBash8) مقارنة سريعة جدًا (مفيدة للحفظ)
- 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 python3Bashهل الشرح الأصلي كافي؟
نعم ممتاز، والإضافات اللي يحتاجها المبتدئ عادةً:
أمثلة على -b و -m و -s بشكل عملي
توضيح الفرق الحقيقي بين whereis و which
التنبيه أن whereis لا يبحث في كل مكان (ليس مثل find/locate)