مقدمه
دنیای لینوکس پر از دستورات قدرتمند است و هر کدام از این دستورات میتوانند دهها گزینه (option) و
آرگومان مختلف داشته باشند. به خاطر سپردن تکتک این موارد تقریباً غیرممکن و البته غیرضروری است.
یک کاربر حرفهای لینوکس کسی نیست که همه چیز را حفظ باشد؛ بلکه کسی است که میداند چگونه اطلاعات
مورد نیازش را به سرعت پیدا کند. خوشبختانه، لینوکس ابزارهای قدرتمندی برای دسترسی به مستندات داخلی
خود فراهم کرده است.
در این درس، با سه روش اصلی برای دریافت راهنمایی در مورد دستورات مستقیماً از طریق خط فرمان آشنا
میشویم. این سه ابزار عبارتند از:
- گزینهی --help برای دریافت راهنمای سریع.
- دستور man برای دسترسی به صفحات راهنمای جامع (Manual Pages).
- دستور help برای دریافت اطلاعات در مورد دستورات داخلی شل.
تسلط بر این سه روش، شما را از جستجوهای مکرر در اینترنت بینیاز میکند و به شما استقلال عمل در
محیط ترمینال میبخشد.
سریعترین راهنما: گزینهی --help
بسیاری از برنامههای اجرایی در لینوکس (بهویژه برنامههای پروژهی گنو - GNU) از یک گزینهی
استاندارد به نام --help پشتیبانی میکنند. با اضافه کردن این گزینه به انتهای یک دستور،
یک خلاصهی مفید از کاربرد دستور و لیست گزینههای آن مستقیماً در خروجی ترمینال چاپ میشود. این
روش معمولاً سریعترین راه برای یادآوری نام یک گزینه یا نحوهی کلی استفاده از یک دستور است.
$ cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
-a, --archive same as -dR --preserve=all
--attributes-only don't copy the file data, just the attributes
...
همانطور که میبینید، خروجی به سرعت ظاهر میشود و اطلاعات کلیدی را در اختیار ما قرار میدهد.
البته به خاطر داشته باشید که این یک قرارداد است، نه یک قانون. بنابراین ممکن است برخی دستورات
(بهویژه دستورات قدیمیتر و غیر گنو) از این گزینه پشتیبانی نکنند.
راهنمای جامع: دستور man و صفحات Man
قلب تپندهی سیستم مستندات در دنیای یونیکس و لینوکس، صفحات راهنما یا Man Pages هستند. این
صفحات، مستندات کاملی برای اکثر دستورات، فایلهای پیکربندی و حتی توابع برنامهنویسی ارائه
میدهند. برای دسترسی به این صفحات از دستور man (مخفف manual) استفاده میکنیم.
صفحات man بسیار جامعتر از خروجی --help هستند و اطلاعات را در یک محیط صفحهبندی شده
(معمولاً با ابزار less که قبلاً با آن آشنا شدیم) نمایش میدهند. این یعنی شما میتوانید با
کلیدهای جهتنما، Space و b در متن جابجا شوید، با کلید / کلمهای
را جستجو کنید و با کلید q از آن خارج شوید.
$ man ls
ساختار یک صفحهی man
صفحات man از یک ساختار استاندارد و مشخص پیروی میکنند که پیدا کردن اطلاعات را آسان میسازد.
بخشهای اصلی یک صفحهی man عبارتند از:
بخش (Section) |
توضیح |
NAME |
نام دستور به همراه یک توضیح یکخطی از کاربرد آن. |
SYNOPSIS |
نحوهی کلی استفاده از دستور، شامل گزینهها و آرگومانهای ضروری و اختیاری. |
DESCRIPTION |
توضیح کامل و مفصل در مورد عملکرد دستور. |
OPTIONS |
لیست تمام گزینههای موجود به همراه شرح کامل هر یک. |
FILES |
لیست فایلهایی که برنامه از آنها استفاده میکند (مانند فایلهای پیکربندی). |
SEE ALSO |
ارجاع به دستورات یا صفحات man مرتبط دیگر. |
بخشهای مختلف Manual
کل مجموعه مستندات man خود به بخشهای شمارهگذاری شده تقسیم میشود تا بین موضوعات مختلف تمایز
قائل شود. برای مثال، ممکن است نام یک دستور اجرایی با نام یک فایل پیکربندی یکسان باشد. این بخشها
به ما کمک میکنند تا دقیقاً به مستندات مورد نظر خود دسترسی پیدا کنیم.
بخش |
موضوع |
1 |
برنامههای اجرایی و دستورات شل |
2 |
فراخوانیهای سیستمی (System calls) |
3 |
روالهای کتابخانهای (Library routines) |
4 |
فایلهای خاص (معمولاً در /dev) |
5 |
فرمت فایلها و قراردادها (مثلاً /etc/passwd) |
6 |
بازیها (Games) |
7 |
بستهها و استانداردهای متفرقه |
8 |
دستورات مدیریت سیستم (معمولاً برای root) |
بهطور پیشفرض، دستور man از اولین بخش شروع به جستجو میکند. اما گاهی لازم است ما بخش
مورد نظر را مشخص کنیم. برای مثال، هم دستوری به نام passwd در بخش ۱ وجود دارد و هم
فایلی به همین نام در بخش ۵. برای دیدن مستندات فایل، باید بنویسیم:
$ man 5 passwd
راهنمای اختصاصی: دستور help برای کامندهای داخلی
همانطور که دیدیم، --help و man برای برنامههای اجرایی عالی هستند. اما برای
دستورات داخلی شل (shell built-ins) مانند cd، alias یا exit چه باید کرد؟ این
دستورات فایلهای جداگانهای نیستند و صفحهی man ندارند. برای این موارد، شل یک دستور داخلی دیگر
به نام help فراهم کرده است.
استفاده از آن بسیار ساده است:
$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
...
کدام راهنما برای کدام دستور؟
با وجود این سه روش، ممکن است کمی سردرگم شده باشید که از کدام یک استفاده کنید. یک راهکار ساده
و مؤثر به صورت زیر است:
- ابتدا با دستور type command_name ماهیت دستور را پیدا کنید.
- اگر دستور یک alias بود، ببینید به چه دستوری اشاره میکند و راهنمای آن را بخوانید.
- اگر یک برنامه اجرایی بود (مثلاً /usr/bin/cp)، برای راهنمایی سریع از
command --help و برای اطلاعات کامل از man command استفاده کنید.
- اگر یک دستور داخلی شل (shell builtin) بود، از help command استفاده
کنید.
این رویکرد ترکیبی از درس قبل و این درس است و به شما کمک میکند همیشه ابزار مناسب را برای
یافتن پاسخ انتخاب کنید.