اگر فکر میکنید که برای کار کردن با لینوکس باید تمامی دستورات لینوکس را با تمامی جزئیات یاد داشته باشید مطمئنا یادگیری لینوکس میتواند خیلی سخت باشد. اما لینوکس دارای یک دستور مفید برای یادآوری تمامی اجزاء دستورات دیگر و همچنین یادگیری آن دستورات هم هست. این دستور 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 ( صفحات راهنما بصورت ساده و کاربردی )