شما برای مطالعه این مقاله فقط 5 دقیقه وقت نیاز دارید

which-command-in-linux
دسته بندی : آموزش لینوکس

دستور which در لینوکس [مکان یابی فایل اجرایی دستور]

5/5 - (1 امتیاز)

دستور which در لینوکس برای جستجوی مسیر فایل های اجرایی دستورات و برنامه ها در محیط Path استفاده می شود و برای کسانی که قصد خطایابی و دیباگ جریان اجرای دستورات را دارند، بسیار مفید است.

عیب یابی مشکلات مربوط به اجرای دستورات، نصب برنامه ها، رفع تضاد بین نسخه های مختلف ابزارها و برنامه ها و مدیریت محیط توسعه و زبان های برنامه نویسی از مهم ترین کاربرد های دستور which در دنیای واقعی است.

به این ترتیب، حتی اگر خواستید با خرید سرور مجازی لینوکس عملکرد و کیفیت کارهای خود را ارتقا دهید، با دستوراتی مثل which می توانید بسیاری از کارها را برای خود راحت تر کنید.

منظور از Path و فایل اجرایی چیست؟

PATH، یک متغیر محیطی است که به shell و سایر برنامه ها می گوید که کدام دایرکتوری ها را برای فایل های اجرایی جستجو کنند. 

در واقع مسیرهای موجود در PATH، چراغ راه shell هستند. به این صورت که وقتی دستوری مثل ls را در ترمینال تایپ می کنید، شل مسیرهای موجود در  PATH را بررسی می کند تا اینکه فایل اجرایی مربوط به آن را پیدا و اجرا کند.

فایل اجرایی یک دستور هم حاوی کدها و اسکریپت هایی است که سیستم عامل می تواند آنها را پردازش و اجرا کند و وظیفه مرتبط با آنها را انجام دهد.

حالا اگر مسیر فایل اجرایی برای برنامه یا دستور موردنظر در PATH تعریف نشده باشد، در خروجی با خطای not found مواجه خواهید شد.

پیش نیازهای اجرای دستور which 

  • سیستم یا سرور مجازی لینوکس
  • دسترسی به ترمینال
  • نصب بودن دستور which

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

دستور نصب which در اوبونتو / دبیان

sudo apt update

sudo apt install which

دستور نصب which در CentOS / فدورا

sudo yum update

sudo yum install which

یا

sudo dnf update

sudo dnf install which

دستور نصب which در آرچ لینوکس

sudo pacman -Sy

sudo pacman -S which

بعد از اجرا دستور نصب، می توانید از دستور زیر برای اطمینان از نصب بودن آن استفاده کنید:

which --version

با دیدن شماره نسخه می توانید مطمئن شوید که این دستور روی سیستم شما نصب است.

سینتکس دستور which در لینوکس

سینتکس پایه دستور Which لینوکس به صورت زیر است:

which [options] [command_name]

[options]: آپشن ها که تحت عنوان فلگ ها هم شناخته می شود، برای مدیریت رفتار دستور which به کار می روند. البته، این دستور دامنه آپشن کوچکی دارد و a از رایج ترین آنها هستند که در بخش مثال های کاربردی از which به آن اشاره خواهیم کرد.

[command_name]: همان نام فایل اجرایی است که می خواهید مسیر آن را پیدا کنید.

مثال های کاربردی از دستور which در لینوکس

مشاهده مسیر دستور موردنظر

برای اینکه مسیر فایل اجرایی مربوط به دستور موردنظر را ببینید، کافیست اسم آن را به صورت زیر به دستور which اضافه کرده و آن را اجرا کنید:

which ls

دستور which در لینوکس بدون آپشناما چه دستورات و برنامه هایی دارای فایل اجرایی هستند که می توانید مسیر آنها را با which پیدا کنید؟

  • دستورات اصلی لینوکس مثل cd و rm
  • برنامه ها و ابزارهای نصب شده مثل git و python
  • مفسرها (اجرا کننده های برنامه ها) مثل bash
  • دستورات شبکه ای مثل ping و ssh
  • مدیربسته ها مثل apt و yum
کلیک کنید  vim چیست؟ نصب ادیتور vim در لینوکس+دستورات کاربردی

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

بررسی مسیر چند فایل به صورت یکجا

اگر می خواهید چند آرگومان را به صورت یکجا در دستور which لحاظ کنید و مسیر آنها را با هم ببینید، می توانید which را به شکل زیر اجرا کنید:

which nc mount sort

اجرای دستور which برای چند فایل اجراییاین دستور، مسیر فایل های اجرایی دستور mount ،nc و sort را به ترتیب نشان می دهد.

مشاهده تمام نسخه های اجرایی دستور و برنامه موردنظر

اگر چند نسخه از یک برنامه روی سیستم نصب است و دوست دارید مسیر همه آنها را با هم ببینید تا نسخه ای که در اولویت قرار دارد را پیدا کنید، می توانید آپشن a را هم به دستور which اضافه کنید.

به عنوان مثال اگر می خواهید مسیر فایل های اجرایی پایتون را بررسی کنید، می توانید از دستور زیر استفاده کنید:

which -a python

خروجی چیزی شبیه دستور زیر خواهد بود:چند مسیر فایل اجرای برای برنامه موردنظر

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

نادیده گرفتن بزرگ/کوچک بودن حروف برنامه یا دستور 

اگر صرفاً می خواهید مسیر فایل اجرایی دستور یا برنامه موردنظر را پیدا کنید و بزرگ/کوچک بودن حروف موجود در اسم آن برای شما اهمیتی ندارد، می توانید آپشن i را به دستور اضافه کنید:

which -i Python

این دستور، همان مسیر python را به شما نشان می دهد و کاری با بزرگ بودن حرف P در دستور ندارد.

بررسی alias بودن دستور موردنظر

اگر یک دستور به صورت alias تعریف شده باشد یا به نوعی سفارشی سازی شده باشد، با همان آپشن a می توانید بررسی کنید که این دستور حالت alias چه دستوری است و فایل اجرایی آن در چه مسیری قرار دارد.

به عنوان اگر ll آلیاس دستور ls –color=auto باشد و دستور زیر را اجرا کنید:

which -a ls

با چنین خروجی مواجه خواهید شد:دستور whisch برای شناسایی alias

ترکیب which با دستور cd

اگر می خواهید با یک دستور، مستقیماً به مسیر فایل اجرایی دستور یا برنامه موردنظر بروید، می توانید از دستور cd کمک بگیرید:

cd $(dirname $(which python))

این دستور، مسیر فعلی خط فرمان را به دایرکتوری حاوی فایل اجرایی پایتون تغییر می دهد.

مشاهده اطلاعات بیشتر در مورد دستور موردنظر

کافیست آپشن v را به دستور اضافه کنید:

which -v echo

برای دسترسی به اطلاعات بیشتر در مورد دستور which در لینوکس می توانید از دستورات زیر استفاده کنید:

man which

which -h

info which

کاربردهای مهم دستور which

  • بررسی نصب بودن/نبودن دستور یا فایل اجرایی خاص
  • ارائه مسیر دقیق فایل اجرایی موردنظر
  • عیب یابی مسائل مربوط به متغیر PATH
  • مشاهده نسخه های مختلف مربوط به دستورها و برنامه ها
  • بررسی نسخه اولویت دار دستور و برنامه موردنظر
  • تغییر اولویت نسخه های مختلف یک فایل 

حالا این شما هستید که باید بر اساس نیاز خود دست به کار شوید و از قدرت دستور which برای اجرای تسک های موردنظر خود استفاده کنید.

سخن آخر

دستور which در لینوکس برای نمایش مسیر فایل های اجرایی دستورات یا برنامه های موردنظر استفاده می شود و می توان آن را در زمینه هایی مثل شناسایی مسیر فایل های اجرایی، بررسی وضعیت نصب دستورات، حل تضادهای مربوط به مسیر دستورات و برنامه ها و … به کار برد.

مطالب مشابهی که شاید علاقمند باشید

من زهرا پیرجانی دانشجوی رشته نرم افزار هستم. علاقه ای که به یادگیری مطالب جدید دارم باعث شد که انگیزم برای فعالیت در حوزه تولیدمحتوا بیشتر شود. تمام تلاشم این است که با درک کامل موضوع، محتوایی ساده و کامل تهیه کنم که برای همه علاقمندان مفید و کاربردی باشد. یادگیری مطالب جدید و آموزش اونها به بقیه، بهترین کاری هست که می توانم برای رشد خودم و همچنین کمک به رشد علاقمندان به مباحث مورنظر انجام بدم.

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید