ابزار کاربر

ابزار سایت


terminal:m:man-cammand-display-a-program_s-manual-page

تفاوت‌ها

تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.

پیوند به صفحه‌ی تفاوت‌ها

نگارش قبل در دو طرفنگارش قبل
نگارش بعد
نگارش قبل
terminal:m:man-cammand-display-a-program_s-manual-page [2019/02/08 10:22] phoenixterminal:m:man-cammand-display-a-program_s-manual-page [2019/02/08 16:59] (فعلی) – [جستجو در صفحات راهنما] phoenix
خط 8: خط 8:
 man ls man ls
 </code>  </code> 
-این دستور نه تنها برای خواندن اطلاعات راهنمای دستورات لینوکس کاربرد دارد بلکه خواندن راهنمای فایل های پیکربندی - فراخوانی سیستم((system calls)) - کتابخانه های زبان برنامه نویسی و هسته سیستم عامل هم بکار میرود. \\ این راهنما برای خیلی ها شاید عجیب و مرموز به نظر برسد. اگر شما هم نکاه اول چنین دیدگاهی را دشاته باشید طبیعی است \\ ساختاز توضیحات راهنمای یک دستور از سبک خاصی پیروی میکند که سعی میکنم در این آموزش کمی از ساختار دستور **man** را توضیح دهم. \\ ولی همین که اندکی با خروجی دستور **man** آشنا شدید خواهید دید گه چقدر راحت تر میتوانید از لینوکس استفاده کنید. چرا که دیگر حتی لازم نیست تک تک اجزاء دستورات را به خاطر بسپارید. \\ فقط کافی است از نتیجه دستور **man** به درستی استفاده کرده و هر زمان که موردی را فراموش کردید سریعا به سراغ دستور **man** بروید. ساختار این دستور به شکل زیر است:+این دستور نه تنها برای خواندن اطلاعات راهنمای دستورات لینوکس کاربرد دارد بلکه خواندن راهنمای فایل های پیکربندی - فراخوانی سیستم((system calls)) - کتابخانه های زبان برنامه نویسی و هسته سیستم عامل هم بکار میرود. \\ این راهنما برای خیلی ها شاید عجیب و مرموز به نظر برسد. اگر شما هم نگاه اول چنین دیدگاهی را داشته باشید طبیعی است \\ ساختار توضیحات راهنمای یک دستور از سبک خاصی پیروی میکند که سعی میکنم در این آموزش کمی از ساختار دستور **man** را توضیح دهم. \\ ولی همین که اندکی با خروجی دستور **man** آشنا شدید خواهید دید که چقدر راحت تر میتوانید از لینوکس استفاده کنید. چرا که دیگر حتی لازم نیست تک تک اجزاء دستورات را به خاطر بسپارید. \\ فقط کافی است از نتیجه دستور **man** به درستی استفاده کرده و هر زمان که موردی را فراموش کردید سریعا به سراغ دستور **man** بروید. ساختار این دستور به شکل زیر است:
 <code;bash;> <code;bash;>
 man [option(s)] keyword(s) man [option(s)] keyword(s)
خط 16: خط 16:
 man man man man
 </code>  </code> 
-برای هر دستور دیگری که میخواهید راهنمایش نمایش داده شود باید همین ساختار را بکار ببرید. مثلا با دستور ''man ls'' میتوانید راهنما و توضیحات دستور ls که مربوط به فهرست کردن محتویات یک مسیر است را ببینید. این راهنما بسیار دقیق است بطوریکه اگر تمام جزئیات خروجی این راهنما را درک کنید به راحتی میتوانید یک خط فرمان کار حرفه ای گردید. \\ دستور **man** بصورت خودکار نتیجه را به **pager** عمدتا [[terminal:l:using_less_to_view_text_files_at_the_linux_command_line|دستور less]] ارسال میکند. **pager** نام یک نوع برنامه است که خروجی متنی یک پرونده را طوری نشان میدهد که شما میتوانید با دستوری به صفحات قبلی و بعدی بروید. \\ در اینجا **pager** ما برنامه [[terminal:l:using_less_to_view_text_files_at_the_linux_command_line|less]] است کهب رای نمایش محتویات یک پرونده هم از آن استفاده میشود. پس با این توضیحات تا زمانیکه نتیجه دستور **man** برای شما در پنجره **terminal** باز است شما نمیتوانید دستور دیگری از لین.کس را بزنید مگر اینکه با ''q'' از راهنمای دستور خارج شوید.+برای هر دستور دیگری که میخواهید راهنمایش نمایش داده شود باید همین ساختار را بکار ببرید. مثلا با دستور ''man ls'' میتوانید راهنما و توضیحات [[terminal:l:ls_command_list_file_and_directory_names_and_attributes|دستور ls]] که مربوط به فهرست کردن محتویات یک مسیر است را ببینید. این راهنما بسیار دقیق است بطوریکه اگر تمام جزئیات خروجی این راهنما را درک کنید به راحتی میتوانید یک خط فرمان کار حرفه ای گردید. \\ دستور **man** بصورت خودکار نتیجه را به **pager** عمدتا [[terminal:l:using_less_to_view_text_files_at_the_linux_command_line|دستور less]] ارسال میکند. **pager** نام یک نوع برنامه است که خروجی متنی یک پرونده را طوری نشان میدهد که شما میتوانید با دستوری به صفحات قبلی و بعدی بروید. \\ در اینجا **pager** ما برنامه [[terminal:l:using_less_to_view_text_files_at_the_linux_command_line|less]] است که برای نمایش محتویات یک پرونده هم از آن استفاده میشود. پس با این توضیحات تا زمانیکه نتیجه دستور **man** برای شما در پنجره **terminal** باز است شما نمیتوانید دستور دیگری از لینوکس را بزنید مگر اینکه با ''q'' از راهنمای دستور خارج شوید. \\ 
 +علامت دو نقطه **(:)** که در انتهای صفحه وجود دارد. به این معنا است که این سند دارای ادامه است و شما برای رفتن به صفحه بعدی باید دکمه <key>Space</key> را از صفحه کلید بزنید. برای رفتن به صفحه قبلی هم باید از ''b'' استفاده کنید. البته دکمه های جهت نمای بالا و پایین هم اینکار را بصورت سطر به سطر انجام خواهند داد. \\ حالا میرویم سراغ خود محتوای صفحه **man** که یک نمونه از نتیجه این دستور در زیر میبینید.  
 +<code;bash;> 
 +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 ~ 
 +</code>  
 +شامل بخش های مختلفی است که هر بخش با یک عنوان بزرگ مشخص شده است. این بخش ها معمولا شامل موارد زیر هستند که تقریبا برای هر دستور وجود دارند. \\ 
 +  * NAME 
 +  * SYNOPSIS 
 +  * DESCRIPTION 
 +  * OPTIONS 
 +  * AUTHOR 
 +  * BUGS 
 +  * COPYRIGHT 
 +  * HISTORY 
 +  * SEE ALSO 
 +هر کدام از این بخش ها هم ممکن است به زیربخش هایی تقسیم شوند مخصوصا بخش **OPTIONS** که همان بخشی است که حاوی مشخصه های دستور مورد نظر است و ما بیشتر با این بخش کار خواهیم داشت. هر مشخصه با نامش در این بخش به همراه توضیحاتش البته به انگلیسی نشان داده میشود. 
 +===== دسته بندی کلی راهنمای لینوکس ===== 
 +به طور کلی تمامی فایلهای راهنمای لینوکس به ۸ دسته کلی نقسیم میشوند که این نوع دسته بندی پاسخگوی اعدادی است که در جای جای خط فرمان لینوکس داخل دوکمان (پرانتز) نوشته شده است. شاید شما آنها را دیدید. در بالاترین قسمت هر صفحه **MAN** هم (قبل از قسمت **NAME**) یک عدد داخل دوکمان نوشته شده است. \\ این همان دسته بندی کلی آن دستور در سیستم لینوکس است. هر عدد نمایانگر یک نوع از این دسته بندی است: 
 +  * **User Commands** : بیشتر دستورات در این دسته قرار میگیرند 
 +  * **System Calls** : همان فراخوانی های سیستمی هستند 
 +  * **C Library Functions** : تابع های مربوط به کتابخانه زبان برنامه نویسی C است. 
 +  * **Devices and Special Files** : پرونده های مربوط به سخت افزارها و فایل های خاص 
 +  * **File Formats and Conventions** : قواعد و سبک پرونده 
 +  * **Game et. A1** : بازی ها 
 +  * **Miscellanea** : موارد متفرقه 
 +  * **System Administration tools and Daemons** : ابزارهای مدیریتی سیستم 
 +همانطور که اشاره شد راهنمایی که دستور **man** نمایش میدهد به بخش هایی تقسیم میشود و فقط دستورات کاربر را پشتیبانی نمیکنند بلکه دستورات مدیریتی سیستمی - رابط های کاربری برنامه - فرمت های فایل و ... را پشتیبانی میکندو جدول زیر دسته بندی کلی راهنمای صفحات **manual** را توصیف میکند 
 +^   بخش     محتویات   ^ 
 +|   ۱     دستورات کاربر   | 
 +|   ۲     رابط های برنامه نویسی برای تماس های سیستم هسته   | 
 +|   ۳     رابط های برنامه نویسی برای کتابخانه **C**   | 
 +|   ۴     فایل های ویژه مثل **node** های **device** و **driver** ها   | 
 +|   ۵     فرمان های فایل   | 
 +|   ۶     بازی ها و آرگومانهایی مثل **Screen Saver** ها   | 
 +|   ۷     متفرقه   | 
 +|   ۸     دستورات مدیریت بسته   | 
 +گاها ما نیاز داریم تا به یک بخش  خاص از صفحه **man** نگاه کنیم تا چیزی که دنبالش هستیم را پیدا بکنیم . اگر که شماره بخش مورد نظر را دستور تعیین نکنیم همیشه اولین نمونه ای منطبق را دریافت خواهیم کرد که به احتمال زیاد در بخش ۱ باشد. \\ برای اختصاص شماره بخش به دستور به اینصورت وارد کنید: 
 +<code;bash;> 
 +man <section#><search term> 
 +</code>  
 +که در اینجا **search term** همان مورد جستجوی ما و **section#** هم شماره بخش مورد نظر با توجه به جدول بالاست برای مثال مینویسیم: 
 + 
 +<code;bash;> 
 +man 5 passwd 
 +</code>  
 +که در اینصورت صفحه راهنمایی را خواهیم دید که فرمت **etc/passwd/** را توصیف میکند. \\ فرض کنید برخی از دستورات هستند که با یک نام در جاهای مختلف استفاده میشوند مثلا [[terminal:m:mounting_file_systems_mount_command|دستور mount]] از این نوع دستورات است. این دستور دارای دو نوع مقاله راهنما است  \\ یکی مربوط به مدیریت سیستم و دیگری مربوط به زبان برنامه نویسی **c** است. وقتی شما دستور ''man mount'' را در خط فرمان لینوکس میزنید آن سند نشان داده خواهد شد که بیشتر مورد استفاده قرار گرفته است. \\  اما اگر خواسته باشید دقیقا به سیستم تفهیم کنید که کدام نوع سند راهنما را میخواهید باید نوع دسته بندی آن سند راهنما که مربوط به [[terminal:m:mounting_file_systems_mount_command|دستور mount]] هست را مشخص کنید. به اینصورت: 
 +<code;bash;> 
 +man 2 mount 
 +</code> 
 +عدد **۲** که در دستور **man** بالا جاسازی شده است به سیستم میفهماند که شما فایل راهنمای مربوط به [[terminal:m:mounting_file_systems_mount_command|دستور mount]] که مربوط به فراخوانی های سیستم است را میخواهید. 
 +===== چاپ راهنمای یک دستور داخل یک سند ===== 
 +حالا شاید خواسته باشید کل محتویات فایل راهنمای یک دستور را داخل یک سند ذخیره کنید. برای این منظور ما از قابلیت Piping (|) در لینوکس استفاده میکنیم . \\ این قابلیت به ما اجازه میدهد که خروجی یک دستور را به دستور دیگری منتقل کنیم این دستور بدین صورت است: 
 +<code;bash;> 
 +man ls|col -b> ls.txt 
 +</code> 
 +''man ls'' که کاملا مشخص است چه کار میکند. نتیجه را با علامت <key>|</key> یا همان **pipe** به دستور **col** میفرستیم که داخل یک سند آن را ذخیره میکند. نام سند هم **ls.txt** است . شما نامش را هر چه بخواهید میتوانید بگذارید. 
 +اما روش جالب دیگری که وجود دارد این است که کل محتویات فایل راهنمای یک دستور را داخل یک فایل با پسوند **pdf** ذخیره کنیم برای این منظور ابزاری به نام **ps2pdf** در **shell** بصورت پیش فرض تعبیه شده است که میتوانیم برای این منظور از دستور زیر استفاده نماییم. 
 +<code;bash;> 
 +man -t <command> | ps2pdf - <file-name>.pdf 
 +</code> 
 +به عنوان مثال من قصد دارم تا از راهنمای [[terminal:r:deleting-files-rm-command|دستور rm]] یک فایل **pdf** با نام **rm.pdf** ایجاد کنم: 
 +<code;bash;> 
 +man -t rm | ps2pdf - rm.pdf 
 +</code> 
 +===== جستجو در صفحات راهنما ===== 
 +فرض کنید دنبال راهنمایی میگردید که مربوط به floppy باشد پس با گزینه k این کار را انجام میدهیم 
 + 
 +<code;bash;> 
 +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 
 +</code> 
 +فیلد اول در هر خط خروجی نام صفحه راهنماست و فیلد دوم نشان دهنده بخش مورد نظر است 
 +دستورات مشابه این دستور \\ 
 +[[terminal:a:apropos-command-display-appropriate-commands|دستور apropos (نمایش دستورات مناسب)]] \\ 
 +[[terminal:i:info-command-display-a-program_s-info-entry|دستور info (نمایش راهنمای دستورات)]] \\ 
 +[[terminal:w:how-to-find-directory-of-some-command|دستور which ( نمایش موقعیت یک دستور اجرایی )]] \\ 
 +[[terminal:w:whatis-command-display-a-very-brief-description-of-a-command|دستور whatis ( نمایش اطلاعات مختصر از یک دستور )]] \\ 
 +[[terminal:h:help-command-get-help-for-shell-builtins|دستور help ( نمایش مستندات دستورات )]] \\ 
 +[[terminal:t:type-command-display-a-command_s-type|دستور type ( نمایش نوع فرمان )]] \\ 
 +[[terminal:t:tldr-command-linux-man-pages-simplified|دستور tldr ( صفحات راهنما بصورت ساده و کاربردی )]] \\
terminal/m/man-cammand-display-a-program_s-manual-page.1549621346.txt.gz · آخرین ویرایش: 2019/02/08 10:22 توسط phoenix

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki