آشنایی با دستور whereis در لینوکس

دستور Whereis در لینوکس یک ابزار خط فرمان قدرتمند برای مکان‌یابی فایل‌های باینری، سورس و manual page برای یک دستور یا فایل هدف است. دستور Whereis دیتابیس etc/locate.db/ را که شامل فهرستی از دایرکتوری‌های ایندکس شده و مسیر آنها در سیستم لینوکس است، جستجو می‌کند.


سینتکس دستور whereis  لینوکس به شرح زیر است:

whereis [options] [command_name or filename]

دستور Whereis در لینوکس کمک می‌کند تا مکان فایل‌های مربوط به فرمان خاص (باینری (قابل اجرا)، سورس، فایل‌های مستند آن) را به سرعت پیدا کنید.

تسلط بر دستور Whereis در سیستم لینوکس، به ویژه در محیط VPS لینوکس، مزایای ارزشمندی برای مدیران سیستم لینوکس برای مدیریت کارآمد، عیب یابی و سفارشی سازی برنامه‌ها دارد.


پیش نیازهای استفاده از دستور Whereis در لینوکس 

گزینه‌های زیر را در نظر بگیرید تا از دستور Whereis به درستی و بدون مواجه شدن با خطا استفاده کنید:

  • یک VPS لینوکس که اوبونتو، دبیان، CentOS و غیره را اجرا می‌کند
  • دسترسی به ترمینال یا رابط خط فرمان

توجه: برای اجرای دستور Whereis لینوکس، نیازی به دسترسی root با امتیازات sudo ندارید، هر کاربر معمولی می‌تواند از آن استفاده کند.

 

گزینه‌های تنظیمات دستور whereis
 

عملکرد گزینه
فقط مکان فایل‌های باینری (فایل اجرایی) را جستجو می‌کند. -b
مسیر فایل‌های سورس را چاپ می‌کند. -s
فقط مکان‌ manual page را پیدا می‌کند. -m
مکان‌های جستجوی فایل‌های باینری را محدود می‌کند. -B [/path/to/dir]   
مسیر سورس را برای جستجو تعریف می‌کند. -S [/path/to/dir]  
مکان جستجوی manual page را مشخص می‌کند. -M [/path/to/dir]   
ورودی‌های غیرعادی را که صفحه باینری، سورس یا man ندارند چاپ می‌کند -u
فهرست آرگومان دایرکتوری را خاتمه می دهد. (اغلب با -B،-M و -S استفاده می شود) -f
دایرکتوری‌هایی را که دستور Whereis به آنها تکیه دارد جستجو می‌کند -l
فقط مکان دستور باینری را جستجو می‌کند. -p
اطلاعات نسخه مربوط به دستور Whereis را نشان می‌دهد. -V
پیامهای راهنما را نمایش می‌دهد. -h

 

9 مثال عملی برای درک دستور whereis لینوکس 

مثال‌های دستور Whereis برای درک بهتر نحوه استفاده از دستور Whereis مفید خواهد بود و به شما امکان می‌دهد قدرت بالقوه آن را برای بسیاری از موارد استفاده در سیستم‌های لینوکس باز کنید.

  1. دستور هدف خود را پیدا کنید

دستور Whereis در لینوکس به یافتن مکان یک دستور و دسترسی به اسناد دستورات داده شده کمک می‌کند تا بینشی در مورد مکان اجرای دستور و کدهای سورس آن داشته باشید. به عنوان مثال، محل فرمان grep را با اجرای:


whereis grep
Output:
grep: /bin/grep /usr/share/man/man1/grep.1

توضیح خروجی:

  •  bin/grep/: مسیر فایل باینری (قابل اجرا) را برای grep نشان می‌دهد.
  • usr/share/man/man1/grep.1/: مسیر صفحه راهنمای grep را نشان می‌دهد.

بنابراین، دستور Whereis در لینوکس مسیر / مسیر سورس / فایل صفحه man را برای دستور grep چاپ می‌کند.
نکته: دستور whereis فقط نام دستور را برمی‌گرداند، به این معنی که این دستور در سیستم لینوکس شما وجود ندارد.

  1. دستور Whereis را پیدا کنید

اگر در مورد دایرکتوری از پیش تعریف شده‌ای که در آن دستور Linux به طور پیش فرض مسیرهای فایل‌های مربوط به دستور را جستجو می‌کند کنجکاو هستید، می توانید از گزینه -l با دستور Whereis در لینوکس استفاده کنید:


whereis -l


Output:
bin: /usr/bin
bin: /usr/sbin
bin: /usr/libx86_64 linux-gnu
bin: /etc
bin: /usr/lib
bin: /usr/lib32
bin: /usr/local/bin
bin: /usr/local/sbin
bin: /usr/local/lib
bin: /usr/local
bin: /usr/libexec

 

  1. دستورات متعدد را پیدا کنید

دستور Whereis در لینوکس به شما این امکان را می‌دهد که با تایپ هر نام جدا شده با فاصله، مسیر فایل‌های مربوط به چند دستور را به طور همزمان جستجو کنید. به عنوان مثال، برای جستجوی محل less  ، cat و ls دستور زیر را اجرا کنید:


whereis ls cat less

Output:
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
less: /usr/bin/ less  /usr/share/man/man1/less.1.gz

این دستور باعث صرفه جویی در وقت شما برای به دست آوردن اطلاعات در مورد بسیاری از دستورات با تایپ یک به یک آنها می‌شود.

  1. فایل‌های باینری دستور را پیدا کنید

می‌توانید خروجی دستور Whereis را فیلتر کنید تا فقط فایل‌های باینری دستور داده شده را با سینتکس زیر نمایش دهید:


whereis -b [command_name]

به عنوان مثال، فقط مسیر فایل‌های باینری دستور ping را با استفاده از:


whereis -b ping

Output:
ping: /usr/bin/ping

  1. مکان manual page دستور را جستجو کنید

با استفاده از گزینه –m می‌توانید فقط مکان صفحه راهنمای دستور هدف را جستجو کنید:


whereis -m [command_name]


برای مثال:

whereis -m whoami

Output:
whoami: /usr/share/man/man1/whoami.1.gz

بنابراین، فقط مسیر صفحه man دستور ls را برمی‌گرداند.

  1. فقط فایل های سورس کد را پیدا کنید

دستور Whereis لینوکس به شما امکان می‌دهد خروجی خود را طوری تنظیم کنید که فقط محل فایل‌های سورس کد مربوط به دستور هدف شما را چاپ کند. برای این کار از گزینه -s با دستور Whereis استفاده کنید:

whereis -s bash
Output:
bash: /etc/bash.bashrc

اگر فایل‌های سورس در سیستم لینوکس شما وجود داشته باشد، این دستور مکان آنها را خروجی می‌دهد.

  1. ورودی‌های غیر معمول را جستجو کنید

با استفاده از گزینه -u با دستور Whereis، ورودی‌ها، فایل‌ها یا دستوراتی غیرعادی را جستجو کنید که هیچ فایل باینری، راهنما یا سورس مورد انتظاری ندارند. برای این کار دستور زیر را اجرا کنید:

whereis -u *

این دستور تمام ورودی‌های غیرعادی را در دایرکتوری فعلی نمایش می‌دهد.

  1. مسیر جستجو را تعریف کنید

دستور Whereis تغییر مکان پیش فرض را می‌پذیرد که در آن سند دستور را جستجو می‌کند. هنگام استفاده از دستور Whereis می توانید مسیر معتبر به باینری‌ها، سورس‌ها و فایل‌های صفحه راهنما را با استفاده از گزینه‌های -B، -S و -M مشخص کنید. سینتکس اصلی به شرح زیر است:

whereis -B [binary_path] -M [manual_path] -S [source_path] -f [command_name]

شما می توانید یک مسیر معتبر بعد از گزینه مورد نظر با / مشخص کنید.

به عنوان مثال، برای محدود کردن مکان‌هایی که Whereis فقط فایل‌های باینری دستور cp را در پوشه /bin جستجو می‌کند، دستور زیر را اجرا کنید:


whereis -b -B /bin -f cp

Output:
cp: /bin/cp

گزینه -f معمولا با گزینه‌های -B، -S و -M استفاده می شود و آرگومان دایرکتوری را خاتمه داده و استفاده از نام فایل‌ها را نشان می‌دهد.

اگر این دستور نتایج خالی را چاپ می‌کند، به این دلیل است که دستور هدف شما هیچ سندی در پوشه/bin ندارد.

 

  1. ترکیب دستور whereis با سایر دستورات در لینوکس

دستور Whereis لینوکس را می‌توان با سایر ابزارهای خط فرمان برای مدیریت موثر سیستم و وظایف مدیریت فایل ترکیب کرد.

مثال 1: با ترکیب Whereis و ping می توانید مکان باینری دستور ping را پیدا کنید و سپس مستقیم آن را اجرا کنید تا چهار بار به گوگل پینگ شود:


whereis -b ping | xargs ping -c 4 google.com

مثال 2: می توانید مکان صفحه باینری و دستی را برای دستورات ls و tr در لینوکس بررسی کنید و تنها صفحه راهنمای دستور gcc را با استفاده از:


whereis -bm ls tr -m gcc
Output:
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
tr: /usr/bin/tr /usr/share/man/man1/tr.1.gz
gcc: /usr/share/man/man1/gcc.1.gz

مثال 3: با ترکیبی از whereis با دستورات xargs و ls، جزئیاتی در مورد مکان فایل‌هایی که توسط دستور Whereis پیدا شده است را دریافت کنید:


whereis ls | xargs ls -l

سرور مجازی لینوکس یک ماشین مجازی کامل که انواع توزیع‌های لینوکس روی آن قابل نصب و پیکربندی است.
خرید وی پی اس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.

استفاده از دستور Whereis لینوکس چیست؟

برای اهداف زیر می‌توانید از دستور Whereis لینوکس استفاده کنید:

  • به سرعت به محل دقیق فایل‌های باینری، سورس و صفحه راهنمای دستورات یا فایل‌های خاص دسترسی پیدا کنید
  • یافتن محل نصب فایل‌های اجرایی برای عیب یابی سیستم
  • تایید نصب با بررسی مسیرهای نصب و مکان یابی فایل‌های از دست رفته
  • سفارشی کردن یا دیباگ برنامه‌ها با دسترسی به فایل‌های سورس
  • ویرایش و بررسی دستورات با مکان یابی سورس کد


خطاهای رایجی که ممکن است هنگام استفاده از دستور Whereis رخ دهد چیست؟

  • Error: whereis: command not found

عیب یابی: اگر دستور Whereis در سیستم لینوکس شما موجود نباشد، ممکن است با این خطا مواجه شوید که برای توزیع های مدرن لینوکس نادر است. با این حال، برای رفع این خطا باید بسته util-Linux را نصب کنید که شامل دستورات زیر است:


sudo apt-get install util-linux  # For Debian/Ubuntu
sudo yum install util-linux      # For RHEL/CentOS

 

  • Error: no output after running whereis [command]

عیب یابی: این خطا به این دلیل رخ می‌دهد که فایل‌های مربوط به دستور در مسیرهای جستجوی پیش فرض وجود ندارند. برای حل این خطا ابتدا از نصب دستور اطمینان حاصل نموده و از دستور find یا دستور locate به عنوان جایگزین استفاده کنید.

  • Error: Unable to find files due to restricted permissions.

عیب یابی: به دلیل نداشتن مجوز خواندن برای دایرکتوری‌های خاص است. برای رفع این مشکل باید مجوزهای فایل یا دایرکتوری را با دستور chmod در لینوکس تغییر دهید و دستور whereis را با امتیازات sudo اجرا کنید.

  • Error: whereis does not find the given directories

عیب یابی: به دلیل دایرکتوری‌های غیر استانداردی است که تحت پوشش Whereis نیستند. برای حل این خطا می‌توانید هنگام استفاده از دستور Whereis مسیر جستجو را مشخص کنید.

تفاوت دستور  Whereis و which  در لینوکس چیست؟

از دستور which  در لینوکس برای جستجوی مسیر فایل‌های اجرایی استفاده می شود، در حالی که، دستور Whereis لینوکس فایل‌های اجرایی، سورس کد و صفحه راهنمای دستورات را مشخص می‌کند.


نتیجه گیری

دستور Whereis در لینوکس در درجه اول برای یافتن محل فایل‌های اجرایی، سورس کد و صفحات راهنما استفاده می‌شود، بنابراین نمی‌تواند انواع فایل‌های دیگر را پوشش دهد. شما می‌توانید از قدرت دستور Whereis در لینوکس برای مدیریت و نگهداری بهینه VPS لینوکس استفاده کنید.

همچنین، می‌توانید گزینه‌های دستور Whereis را برای تنظیم خروجی بر اساس نیاز خود ترکیب کنید.

از آنجایی که دستور Whereis به دیتابیس /etc/locate.db متکی است، باید قبل از اجرای دستور Whereis برای به دست آوردن اطلاعات صحیح، از به روز بودن دیتابیس اطمینان حاصل کنید. با اجرای دستور updatedb می توانید دیتابیس /etc/locate.db را به صورت دستی به روز کنید.