مقدمه

دنیای لینوکس پر از دستورات قدرتمند است و هر کدام از این دستورات می‌توانند ده‌ها گزینه (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.
...

کدام راهنما برای کدام دستور؟

با وجود این سه روش، ممکن است کمی سردرگم شده باشید که از کدام یک استفاده کنید. یک راهکار ساده و مؤثر به صورت زیر است:

  1. ابتدا با دستور type command_name ماهیت دستور را پیدا کنید.
  2. اگر دستور یک alias بود، ببینید به چه دستوری اشاره می‌کند و راهنمای آن را بخوانید.
  3. اگر یک برنامه اجرایی بود (مثلاً /usr/bin/cp)، برای راهنمایی سریع از command --help و برای اطلاعات کامل از man command استفاده کنید.
  4. اگر یک دستور داخلی شل (shell builtin) بود، از help command استفاده کنید.

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