صفحات راهنمای برنامه نویسی در گنو/لینوکس
شاید برای خیلی ها این سوال پیش اومده باشه که چطور میشه در لینوکس به توضیحات توابع و کتابخونه های برنامه نویسی( c/c++) یا سیستمی دیگه دسترسی داشته باشیم. و همینطور در اینترنت چه سایتهایی برای اینکار وجود داره؟
صفحات توضیحی man
برای دسترسی پیدا کردن به توضیحات library ها میتونید اسم اون کتابخونهی برنامه نویسی رو به این صورت در ترمینال به کار ببرید تا توضیحاتش رو ببینید که از چه تابع هایی تشکیل شده و کارشون چیه
man 3 stdio
به این ترتیب میتونید اسم اون lib مورد نظرتون رو جلوی man بنویسید تا اطلاعات کاملی از اون رو ببینید. البته میتونید دربارهی func های مختلف هم اطلاعات به دست بیارید اینطوری:
man 3 printf
شکل کلی تابع و اینکه چه آرگومان هایی رو میگیره رو در اختیارتون میگذاره که هروقت نیاز داشتید که بدونید مثلا %c چی هست خیلی راحت میتونید بدون نیاز به گشتنه در کتاب یا اینترنت این رو بفهمید.
صفحات man page در لینوکس تقریبا برای همهی دستورات استاندارد خط فرمان و کتابخونه های استاندارد و سیستمی وجود دارن. و این صفحات خودشون به چند نوع مختلف تقسیم میشن:
(1) دستورات کاربر (User Commands)
(2)فراخوانهای سیستمی (System calls)
(3) توابع کتابخانهای استاندارد ( Standard library functions)
(8) دستورات سیستم/کاربر ادمین (System/administrative commands)
عدد هایی که قبل از هر قسمت میبینید مربوط هست به بخش های صفحات راهنمایی که روی سیستم لینوکس وجود دارن و برای استفاده ازشون از کلمه man استفاده میکنیم. گاهی اوقات یک صفحه راهنما در چندین بخش (بخش هایی که بالا گفته شد.) وجود داره. مثل:
man sleep
man 3 sleep
اون عدد ۳ ایی که در کنار تابع printf میبینید برای همین خاطر هست که از قسمت توابع کتابخانهای توضیحات بیاره به عبارتی میگه: توضیحات تابع printf رو از توابع کتابخانهای نشون بده.
* نکته: در صورتی که هیچ عددی رو نزنید به صورت پیش فرض در تمام man هایی که از این اسم وجود داره میگرده و اولین صفحه ای رو که پیدا کنه ( طبعا اگر در ۱ و ۲ و ۳ باشه اولی رو میاره ۱ اش باشه.) رو نمایش میده. و اگر فقط در سطح ۳ باشه فقط سطح ۳ رو نشون میده.
جستجو در توضیحات محلی لینوکس
شاید یک چیزی بخواید که اسم دقیق اون رو اصلا ندونید. کافیه بنویسید:
man -k keyword
به جای keyword (کلمه کلیدی) مورد نظرتون رو بنویسد. مثل:
man -k pipe
هر صفحه راهنما یک خطی درش هست که به طور خلاصه دربارهی تابع یا دستور توضیح داده. گاهی وقتا که فقط توضیحات کوتاه رو میخواید میتونید اینطوری عمل کنین(بجای scanf میتونید اسم تابع یا دستور مورد نظر خودتون رو بگذارید.):
whatis scanf
البته این دستورات رو میتونید به صورت گروهی هم به کار ببرید مثل:
whatis scanf printf ls grep
برای گشتن در اسم و توضیحات man pages ها میتونید از دستور apropos به این شکل استفاده کنید:
apropos ‹Shared Memory›
که در بین ‹ ‹ کلمه یا جمله مورد نظر رو مینویسید. برای راحتی کار و رسیدن به خروجی هم میشه گاهی از grep در کنارش استفاده کرد:
apropos ext4 | grep creat
صفحات توضیحی info
برخی اوقات ممکنه نیاز به توضیحات توابع کتابخونهای GNU C Library که به صورت اختصار libc میگن، پیدا کنید. برای توضیحات کلی مثلا Pipes and FIFOs یعنی چی پیدا کنید :
info libc
برای اطلاعات بیشتر هم میتونید این تابع رو در فایل coreutils پیدا کنید با توضیحات جزئی بیشتر:
info coreutils ‹printf invocation›
تقریبا تمام صفحات کامپایلر(gcc) ، دیباگر(gdb)، لینکر(ld) و ویرایشگر emacs دارای این صفحه info هستن که با اینکار میتونید به توضیحاتشون دسترسی پیدا کنید.
شاید گاهی هم داخل لینوکس بخواید بدونید چطوری باید یک برنامهی خط فرمان با استانداردهای GNU بنویسید که همهی استانداردهای سایر برنامه های خط فرمان در لینوکس رو داشته باشه. و این توابع چی هستن و چطوری میشه ازشون استفاده کرد:
info "(standards)user interfaces"
چاپ کردن man ها
اگر دوست داشتین man ها رو چاپ کنین یا روی سیستم های دیگه اونها بخونید یا به دوستانتون بدین اینطوری عمل کنین:
man -t man-page > man-page.pdf
این دستور خروجی man اون چیزی که میخواید رو به PDF تبدیل میکنه و در home شما قرار میده.
منابع آنلاین دیگر
خب مقاله طولانی شده و حتما حوصله خوندن زیاد رو ندارین. برای همین به اختصار چند سایت مرجع رو تیتروار معرفی میکنم که ممکنه به دردتون بخوره:
در این سایت های میتونید مقاله ها و مطالب مفیدی رو پیدا کنین. اگر نیاز به ابزار خاصی داشتین که سایت اختصاصی داره wiki همون سایت بهترین منبع هست. مثلا نیاز به توضیح درباره بیشتر درباره کرنل یا ابزارهای دیگهی گنو داشتین، در سایت خودشون مقالات و موضوعات مرتبط زیادی میتونین پیدا کنین. mailing list هارو هم فراموش نکنین.
نکته ۱ :شاید در کنار این اعداد گاهی حرف P رو هم ببینید. که مخفف POSIX هست که مفهومش استاندارد بین المللی posix هست که برای نوشتن برنامه های این استاندارد استفاده میشه.
نکته ۲: در اغلب distro ها این man ها و صفحات توضیحی به صورت پیشفرض نصب هستن. اگر نبود این پکیج هارو نصب کنید: man-db , man-pages . البته ممکنه در distro شما اسم پکیج ها مقداری فرق کنه که با یک جستجو با پکیج منیجرتون میتونید پیداش کنید.
نکته ۳: اغلب این توضیحات صفحات man و info در شاخه /usr/share/man/mann/ و /usr/share/doc/ قرار داره.
نکته ۳: man های بسیار زیادی در لینوکس برای قسمت های مختلف وجود داره که گاهی پیشفرض نصب نیستن و باید نصب بشن. مثلا شما به اطلاعات man های کرنل برای برنامه نویسی یا مطالعه نیاز دارید. کافیه این پکیج رو نصب کنید: kernel26-manpages
نکته ۴: تمام این توضیحاتی که اینجا داده شد و پکیج ها به صورت پیشفرض در Gentoo و Archlinux نصب هست و تست شدن.
منابع:
Advanced Linux Programming – Chapter 01(advanced-unix-programming-with-linux)
Linux Man pages
http://polishlinux.org/console/the-art-of-using-manuals
عااالی بوووودش