یکی از دستورات لینوکس، دستور which است که به کاربران اجازه میدهد تا لیست مسیرها را در متغیر محیطی $PATH جستجو کنند و در نهایت، مسیر فرمان مشخصشده را بهعنوان یک آرگومان خروجی میدهد. دستور which با مکانیابی فایل اجرایی مطابق با دستور داده شده، کار میکند. در این مقاله بهطور کامل درباره دستور which و نحوه کار با آن میپردازیم.
نحوه کار با دستور which در لینوکس
برای شروع کار در ابتدا باید سیستم لینوکس را اجرا کرده و از طریق مسیر (Ctrl + Alt + T) به ترمینال دسترسی پیدا کنید. دستور which به صورت زیر است:
1 | which -a [argument] |
Arguments:
متغیر [argument] دستور یا دستوراتی که میخواهید پیدا کنید را مشخص میکند.
بهعنوان مثال در دستور زیر، محل دستور cat را خروجی میدهد:
1 | which cat |
![دستور which cat](https://linuxlearning.ir/wp-content/uploads/2022/11/which-cat-command.jpg)
Options:
دستور which فقط یک گزینه )-(a را دارد. این گزینه اختیاری بوده و برای چاپ تمام مواردی که پیدا میکند، از آن استفاده میشود.
این فرمان از چپ به راست موارد منطبق را جستجو میکند. اگر چندین مورد منطبق در دایرکتوریهای فهرست شده در $PATH پیدا کند، فقط اولین مورد را چاپ میکند؛ اما میتوانید با استفاده از گزینه -a همه موارد منطبق را چاپ کنید.
به این نکته توجه داشته باشید که در بسیاری از توزیع های لینوکس، دستورات داخلی پوسته حذف میشوند و امکان خروجی گرفتن از مکان آنها وجود نخواهد داشت.
بهعنوان مثال:
1 | which -a touch |
![دستور which -a touch](https://linuxlearning.ir/wp-content/uploads/2022/11/which-a-touch-command.jpg)
داشتن چندین تطابق گاهی به این معنی خواهد بود که یک تطبیق یک پیوند نمادین به دیگری است. با این حال، ممکن است دو نسخه از یک دستور مشابه در مکانهای مختلف یا دو دستور مختلف با استفاده از یک نام مشابه وجود داشته باشد.
میتوان گفت برخلاف بسیاری از دستورات در لینوکس، دستور which گزینه –help ندارد. برای دیدن توضیحات بیشتر از دستورات و راهنماییها، man which را اجرا کنید.
وضعیت خروج در دستور which
دستور which یکی از مقادیر زیر را که وضعیت خروجی آن را نشان میدهد، برمیگرداند:
0. همه آرگومانها را پیدا کرده که قابل اجرا هستند.
1. یک یا چند آرگومان وجود ندارد یا قابل اجرا نیستند.
2. یک گزینه نامعتبر مشخص شده است.
مثالهایی از دستور which در لینوکس
در ادامه این مقاله قرار است مثالهایی از دستور which را که نشان میدهند، کدام دستور چگونه کار میکند و چگونه از گزینه موجود در آنها استفاده کنید، توضیح خواهیم داد.
مسیر هر فایل اجرایی را نمایش میدهد
برای نمایش مسیر هر دستوری، نام فرمان را به عنوان آرگومان ارسال کرده (tr) و پس از آن، نام دستور را ارسال کنید. (which)
1 | which tr |
![دستور which tr در لینوکس](https://linuxlearning.ir/wp-content/uploads/2022/11/which-tr-command.jpg)
خروجی مسیر فایل اجرایی فرمان tr را نشان میدهد که در مسیر /usr/bin/tr قرار دارد.
نمایش مسیرهای متعدد در فایلهای اجرایی
دستور which چندین آرگومان را میپذیرد و مسیر هرکدام را به ترتیب مشخصشده، خروجی میدهد.
1 | which nc mount sort |
![دستور which nc mount sort در لینوکس](https://linuxlearning.ir/wp-content/uploads/2022/11/which-nc-mount-sort-command.jpg)
این دستور از طریق لیست ارائه شده کار میکند و نتایج را برای دستور nc، دستور mount و دستور sort خروجی میدهد؛ علاوه بر این، هر نتیجه را در خط جدید از دیگر نتایج مشخص میکند.
فهرست همه موارد
دستور which فقط اولین تطابقی را که در فهرست راهنمای متغیر $PATH پیدا میکند، نشان میدهد. از گزینه -a برای نمایش همه موارد مشخصشده، استفاده کنید.
بهعنوان مثال، با جستجوی نمونههایی از دستور less هنگام استفاده از گزینه -a دو نتیجه را به شما نشان میدهد:
1 | which -a less |
![دستور which -a less در لینوکس](https://linuxlearning.ir/wp-content/uploads/2022/11/which-a-less-command.jpg)
شما میتوانید از دستور ls برای بررسی جزئیات فایل و تعیین اینکه آیا هر دو نسخه فایلها قابل اجرا هستند یا خیر، استفاده کنید.
1 2 | ls -lh /usr/bin/less ls -lh /bin/less |
![دستور ls -lh برای بررسی جزعیات](https://linuxlearning.ir/wp-content/uploads/2022/11/ls-lh-command.jpg)
خروجی این دستور، دو نسخه یکسان از یک فرمان را در دو مکان مختلف نشان میدهد که هر دو دارای سایز 176 کیلوبایت و هر دو قابل اجرا هستند.
به این نکته توجه داشته باشید که دایرکتوری bin / حاوی فایلهای قابل اجرایی است که میتواند توسط مدیر سیستم و هر کاربر دیگری استفاده شود و برای تعمیرات اضطراری سیستم مورد نیاز است. پوشه /usr/bin دایرکتوری اولیه برای دستورات اجرایی در سیستم خواهد بود.
لینکهای نمادین را پیدا میکند
استفاده از گزینه -a تمام مسیرهای دستور مشخص شده را فهرست میکند. در حالی که چندین نسخه از یک برنامه میتواند در یک سیستم وجود داشته باشد، گاهی اوقات یکی از نمونههای پیداشده فقط یک پیوند نمادین است و نه یک فایل باینری.
بهعنوان مثال، با اجرای دستور زیر دو نمونه از دستور atq را خروجی داده میشود:
1 | which -a atq |
![دستور which -a atq در لینوکس](https://linuxlearning.ir/wp-content/uploads/2022/11/which-a-atq-command.jpg)
باز هم از دستور ls برای بررسی جزئیات هر دو فایل استفاده کنید.
1 2 | ls -lh /usr/bin/atq ls -lh /bin/atq |
![بررسی جزئیات هر دو فایل](https://linuxlearning.ir/wp-content/uploads/2022/11/ls-baresi-jozeiyat.jpg)
خروجی گرفته شده نشان میدهد که هر دو فایل لینکهای نمادین (->) و دارای 2 بایت هستند که به دستور at اشاره میکنند.
دستورات داخلی پوسته را حذف میکند.
همانطور که قبلا هم به آن اشاره کردیم، دستور which میتواند دستورات داخلی پوسته را از خروجی خودش حذف کند. بهعنوان مثال، شما درخواست مکان دستورات read و man را دارید که فقط مکان فایل اجرایی man نشان داده میشود، زیرا read یک دستور bash shell است.
1 | which read man |
![دستور which read man در لینوکس](https://linuxlearning.ir/wp-content/uploads/2022/11/which-read-man-command.jpg)
کلام آخر
در این مقاله به توضیح کامل دستور which در سرور لینوکس پرداختیم و همچنین نحوه کار و دلیل استفاده از این دستور را نیز بیان کردیم. لینوکس یکی از قدرتمندترین سیستم عاملهای جهان است که بهصورت open surce مورد استفاده قرار میگیرد. علاوه بر این لینوکس بهعنوان جایگزین سیستم عامل یونیکس شناخته شده است.
سوالات متداول
دستور which چه کاربردی دارد؟
در محاسبات کامپیوتری این دستور which است که در سیستم عاملهای مختلف برای شناسایی مکان فایلهای اجرایی مورد استفاده قرار میگیرد. این دستور در سیستمهای یونیکس و لینوکس، پوسته AROS، برای FreeDOS و مایکروسافت ویندوز موجود است. عملکرد دستور which شبیه به اجرای دستور type است.
معنی “$” در لینوکس چیست؟
به این نکته توجه داشته باشید که خط فرمان UNIX/LINUX به حروف کوچک و بزرگ حساس است. “$” شروع فرمان را نشان میدهد و “#” پایان فرمان قبلی و شروع یک فرمان جدید را نشان خواهد داد.
کدام دستور برای اجرا در لینوکس استفاده میشود؟
دستور run در پلتفرمهای دسکتاپ KDE و GNOME با فشاردادن Alt+F2 راهاندازی میشود.
کدام دستور برای نمایش (display) استفاده میشود؟
برای نمایش خروجی برنامه از دستور Print استفاده کنید.
چگونه دستورات لینوکس را یاد بگیرم؟
از جمله دستورات مهم لینوکس به شرح زیر است:
Pwd: وقتی برای اولین بار ترمینال را باز میکنید، شما در فهرست اصلی کاربر خود قرار گرفتهاید.
Is: از دستور “ls” برای اینکه بدانید چه فایلهایی در دایرکتوری شما قرار گرفته است، استفاده کنید.
Cd: از دستور “cd” برای رفتن به دایرکتوری استفاده کنید.
mkdir & rmdir: زمانی که نیاز به ایجاد یک پوشه یا دایرکتوری جدید دارید از دستور mkdir استفاده کنید.
~/ در مسیر به چه معناست؟
به این معنی که دایرکتوری App_Data در ریشه برنامه فعلی قرار دارد.