فهرست مندرجات

دستور man (دریافت راهنمای دستورات)

اگر فکر میکنید که برای کار کردن با لینوکس باید تمامی دستورات لینوکس را با تمامی جزئیات یاد داشته باشید مطمئنا یادگیری لینوکس میتواند خیلی سخت باشد. اما لینوکس دارای یک دستور مفید برای یادآوری تمامی اجزاء دستورات دیگر و همچنین یادگیری آن دستورات هم هست. این دستور man نام دارد و که از سرنام manual به معنای راهنما گرفته شده است.
استفاده از دستور man بسیار ساده است. کافی است man را به همراه نام دستور مورد نظر خود در خط فرمان بزنید تا صفحه همان دستور برای شما باز شود. اما این صفحه فقط حاوی متن با ساختار خاص خودش است که اگر تازه میخواهید با این راهنماها کار کنید شاید اندکی برای شما سخت باشد.
اما دستور man برای سبک بندی و همچنین نمایش صفحه راهنمای یک دستور از دستورات لینوکس کاربردی دارد. با هر توزیع از لینوکس این دستور وجود دارد و زمانی که سرویس یا بسته نرم افزاری را روی سرور خود نصب میکنید فایل های راهنمای آن که با دستور man قابل فراخوانی شدن هستند روی سرور شما نصب میشود.
بیشتر برنامه های اجرایی که به منظور استفاده در خط فرمان ایجاد شده اند یکسری مستندات با نام صفحه راهنما دارند که man page یا همان manual page یعنی صفحه راهنما نامیده میشود. این دستور به اینصورت بکار میرود.

man <program>

که در این دستور program نام دستوری است که میخواهیم صفحه راهنمای آن را مطالعه کنیم. این صفحات تا اندازه ای در شکل متفاوت هستند ولی بصورت کلی شامل: یک عنوان - یک خلاصه از syntax دستور - توضیحی درباره هدف دستور و لیست ها و توضیحات گزینه های دستور است.
صفحات راهنما معمولا شامل مثال نیستند چرا؟
چونکه آنها آموزش نیستند بلکه به عنوان یک مرجع برای حرفه ای ها در نظر گرفته شده اند. به عنوان مثال دستور زیر را امتحان کنید:

man ls

این دستور نه تنها برای خواندن اطلاعات راهنمای دستورات لینوکس کاربرد دارد بلکه خواندن راهنمای فایل های پیکربندی - فراخوانی سیستم1) - کتابخانه های زبان برنامه نویسی و هسته سیستم عامل هم بکار میرود.
این راهنما برای خیلی ها شاید عجیب و مرموز به نظر برسد. اگر شما هم نگاه اول چنین دیدگاهی را داشته باشید طبیعی است
ساختار توضیحات راهنمای یک دستور از سبک خاصی پیروی میکند که سعی میکنم در این آموزش کمی از ساختار دستور man را توضیح دهم.
ولی همین که اندکی با خروجی دستور man آشنا شدید خواهید دید که چقدر راحت تر میتوانید از لینوکس استفاده کنید. چرا که دیگر حتی لازم نیست تک تک اجزاء دستورات را به خاطر بسپارید.
فقط کافی است از نتیجه دستور man به درستی استفاده کرده و هر زمان که موردی را فراموش کردید سریعا به سراغ دستور man بروید. ساختار این دستور به شکل زیر است:

man [option(s)] keyword(s)

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

man man

برای هر دستور دیگری که میخواهید راهنمایش نمایش داده شود باید همین ساختار را بکار ببرید. مثلا با دستور man ls میتوانید راهنما و توضیحات دستور ls که مربوط به فهرست کردن محتویات یک مسیر است را ببینید. این راهنما بسیار دقیق است بطوریکه اگر تمام جزئیات خروجی این راهنما را درک کنید به راحتی میتوانید یک خط فرمان کار حرفه ای گردید.
دستور man بصورت خودکار نتیجه را به pager عمدتا دستور less ارسال میکند. pager نام یک نوع برنامه است که خروجی متنی یک پرونده را طوری نشان میدهد که شما میتوانید با دستوری به صفحات قبلی و بعدی بروید.
در اینجا pager ما برنامه less است که برای نمایش محتویات یک پرونده هم از آن استفاده میشود. پس با این توضیحات تا زمانیکه نتیجه دستور man برای شما در پنجره terminal باز است شما نمیتوانید دستور دیگری از لینوکس را بزنید مگر اینکه با q از راهنمای دستور خارج شوید.
علامت دو نقطه (:) که در انتهای صفحه وجود دارد. به این معنا است که این سند دارای ادامه است و شما برای رفتن به صفحه بعدی باید دکمه Space را از صفحه کلید بزنید. برای رفتن به صفحه قبلی هم باید از b استفاده کنید. البته دکمه های جهت نمای بالا و پایین هم اینکار را بصورت سطر به سطر انجام خواهند داد.
حالا میرویم سراغ خود محتوای صفحه man که یک نمونه از نتیجه این دستور در زیر میبینید.

LS(1)                                                      User Commands                                                     LS(1)
 
NAME
       ls - list directory contents
 
SYNOPSIS
       ls [OPTION]... [FILE]...
 
DESCRIPTION
       List  information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor
       --sort is specified.
 
       Mandatory arguments to long options are mandatory for short options too.
 
       -a, --all
              do not ignore entries starting with .
 
       -A, --almost-all
              do not list implied . and ..
 
       --author
              with -l, print the author of each file
 
       -b, --escape
              print C-style escapes for nongraphic characters
 
       --block-size=SIZE
              with -l, scale sizes by SIZE when printing them; e.g., '--block-size=M'; see SIZE format below
 
       -B, --ignore-backups
              do not list implied entries ending with ~

شامل بخش های مختلفی است که هر بخش با یک عنوان بزرگ مشخص شده است. این بخش ها معمولا شامل موارد زیر هستند که تقریبا برای هر دستور وجود دارند.

هر کدام از این بخش ها هم ممکن است به زیربخش هایی تقسیم شوند مخصوصا بخش OPTIONS که همان بخشی است که حاوی مشخصه های دستور مورد نظر است و ما بیشتر با این بخش کار خواهیم داشت. هر مشخصه با نامش در این بخش به همراه توضیحاتش البته به انگلیسی نشان داده میشود.

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

به طور کلی تمامی فایلهای راهنمای لینوکس به ۸ دسته کلی نقسیم میشوند که این نوع دسته بندی پاسخگوی اعدادی است که در جای جای خط فرمان لینوکس داخل دوکمان (پرانتز) نوشته شده است. شاید شما آنها را دیدید. در بالاترین قسمت هر صفحه MAN هم (قبل از قسمت NAME) یک عدد داخل دوکمان نوشته شده است.
این همان دسته بندی کلی آن دستور در سیستم لینوکس است. هر عدد نمایانگر یک نوع از این دسته بندی است:

همانطور که اشاره شد راهنمایی که دستور man نمایش میدهد به بخش هایی تقسیم میشود و فقط دستورات کاربر را پشتیبانی نمیکنند بلکه دستورات مدیریتی سیستمی - رابط های کاربری برنامه - فرمت های فایل و … را پشتیبانی میکندو جدول زیر دسته بندی کلی راهنمای صفحات manual را توصیف میکند

بخش محتویات
۱ دستورات کاربر
۲ رابط های برنامه نویسی برای تماس های سیستم هسته
۳ رابط های برنامه نویسی برای کتابخانه C
۴ فایل های ویژه مثل node های device و driver ها
۵ فرمان های فایل
۶ بازی ها و آرگومانهایی مثل Screen Saver ها
۷ متفرقه
۸ دستورات مدیریت بسته

گاها ما نیاز داریم تا به یک بخش خاص از صفحه man نگاه کنیم تا چیزی که دنبالش هستیم را پیدا بکنیم . اگر که شماره بخش مورد نظر را دستور تعیین نکنیم همیشه اولین نمونه ای منطبق را دریافت خواهیم کرد که به احتمال زیاد در بخش ۱ باشد.
برای اختصاص شماره بخش به دستور به اینصورت وارد کنید:

man <section#><search term>

که در اینجا search term همان مورد جستجوی ما و section# هم شماره بخش مورد نظر با توجه به جدول بالاست برای مثال مینویسیم:

man 5 passwd

که در اینصورت صفحه راهنمایی را خواهیم دید که فرمت etc/passwd/ را توصیف میکند.
فرض کنید برخی از دستورات هستند که با یک نام در جاهای مختلف استفاده میشوند مثلا دستور mount از این نوع دستورات است. این دستور دارای دو نوع مقاله راهنما است
یکی مربوط به مدیریت سیستم و دیگری مربوط به زبان برنامه نویسی c است. وقتی شما دستور man mount را در خط فرمان لینوکس میزنید آن سند نشان داده خواهد شد که بیشتر مورد استفاده قرار گرفته است.
اما اگر خواسته باشید دقیقا به سیستم تفهیم کنید که کدام نوع سند راهنما را میخواهید باید نوع دسته بندی آن سند راهنما که مربوط به دستور mount هست را مشخص کنید. به اینصورت:

man 2 mount

عدد ۲ که در دستور man بالا جاسازی شده است به سیستم میفهماند که شما فایل راهنمای مربوط به دستور mount که مربوط به فراخوانی های سیستم است را میخواهید.

چاپ راهنمای یک دستور داخل یک سند

حالا شاید خواسته باشید کل محتویات فایل راهنمای یک دستور را داخل یک سند ذخیره کنید. برای این منظور ما از قابلیت Piping (|) در لینوکس استفاده میکنیم .
این قابلیت به ما اجازه میدهد که خروجی یک دستور را به دستور دیگری منتقل کنیم این دستور بدین صورت است:

man ls|col -b> ls.txt

man ls که کاملا مشخص است چه کار میکند. نتیجه را با علامت | یا همان pipe به دستور col میفرستیم که داخل یک سند آن را ذخیره میکند. نام سند هم ls.txt است . شما نامش را هر چه بخواهید میتوانید بگذارید. اما روش جالب دیگری که وجود دارد این است که کل محتویات فایل راهنمای یک دستور را داخل یک فایل با پسوند pdf ذخیره کنیم برای این منظور ابزاری به نام ps2pdf در shell بصورت پیش فرض تعبیه شده است که میتوانیم برای این منظور از دستور زیر استفاده نماییم.

man -t <command> | ps2pdf - <file-name>.pdf

به عنوان مثال من قصد دارم تا از راهنمای دستور rm یک فایل pdf با نام rm.pdf ایجاد کنم:

man -t rm | ps2pdf - rm.pdf

جستجو در صفحات راهنما

فرض کنید دنبال راهنمایی میگردید که مربوط به floppy باشد پس با گزینه k این کار را انجام میدهیم

man -k floppy
fd (4)               - floppy disk device
fdformat (8)         - low-level format a floppy disk
mbadblocks (1)       - tests a floppy disk, and marks the bad blocks in the FAT
mformat (1)          - add an MSDOS filesystem to a low-level formatted floppy disk

فیلد اول در هر خط خروجی نام صفحه راهنماست و فیلد دوم نشان دهنده بخش مورد نظر است دستورات مشابه این دستور
دستور apropos (نمایش دستورات مناسب)
دستور info (نمایش راهنمای دستورات)
دستور which ( نمایش موقعیت یک دستور اجرایی )
دستور whatis ( نمایش اطلاعات مختصر از یک دستور )
دستور help ( نمایش مستندات دستورات )
دستور type ( نمایش نوع فرمان )
دستور tldr ( صفحات راهنما بصورت ساده و کاربردی )

1)
system calls