کار کردن با فرمانها
در این آموزش به کار کردن با فرمانها اعم از type، which، man، apropos، info، whatis و alias خواهیم پرداخت.
یک فرمان میتواند چهار چیز باشد
- یک برنامه اجرایی مانند فایلهای موجود در /usr/bin که در این دسته میتوان به برنامههایی که قابلیت کامپایل دارند از قبیل برنامههای نوشته شده در C و C++ یا برنامههای نوشته شده در زبانهای اسکریپتنویسی شامل Shell، Perl، Python، Ruby و نظایر آن اشاره داشت.
- فرمان تولید شده توسط خود پوسته (Shell). Bash از تعدادی از فرمانها پشتیبانی میکند که فرمانهای درونساخت پوسته (shell builtins) نامیده میشوند. بهعنوان مثال فرمان cd یک فرمان shell builtins نامیده میشود.
- یک تابع پوسته (shell function). توابع پوسته شامل اسکریپتهای پوسته بوده که در محیط قرار گرفتهاند. پیکربندی محیط و نوشتن توابع پوسته در آموزشهای بعدی تحت پوشش قرار خواهند گرفت.
- یک نام مستعار (alias). alias فرمانی است که خودمان به کمک دیگر فرمانها میتوانیم تعریف کنیم.
کار کردن با فرمانها
در ابتدا میبایست بدانید که چه نوع از فرمانها استفاده میشود و لینوکس چند راه برای پی بردن به آن ارائه میدهد.
روش اول، فرمان type که نوع فرمان را نمایش میدهد.
فرمان type یک فرمان shell builtin بوده که نوع فرمان را با توجه به نام فرمان نشان میدهد که به شکل زیر به کار گرفته میشود:
1 |
type command |
که به جای command میبایست نام فرمانی را که میخواهید بررسی شود قرار دهید. در ادامه چندین مثال از فرمان type آورده شده است:
1 2 3 4 5 6 |
[me@linuxbox ~]$ type type type is a shell builtin [me@linuxbox ~]$ type ls ls is aliased to `ls --color=tty' [me@linuxbox ~]$ type cp cp is /bin/cp |
روش دوم، فرمان which که محل اجرای فرمان را مشخص میکند.
گاهی اوقات چندین نسخه از برنامه اجرایی بر روی یک سیستم نصب میشود. به منظور تعیین محل دقیق یک فرمان اجرایی، فرمان which کاربرد دارد که بدین صورت استفاده میشود:
1 2 |
[me@linuxbox ~]$ which ls /bin/ls |
فرمان which فقط مختص برنامههای اجرایی است نه builtin و یا نام مستعاری که برای برنامههای اجرایی است. هنگامی که ما سعی میکنیم از یک فرمان builtin به عنوان مثال، فرمان cd استفاده کنیم هیچ پاسخی دریافت نکرده و یا با پیغام خطا مواجه خواهیم شد:
1 2 3 4 |
[me@linuxbox ~]$ which cd /usr/bin/which: no cd in (/opt/jre1.6.0_03/bin:/usr/lib/qt-3.3/bin:/usr/kerber os/bin:/opt/jre1.6.0_03/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/home /me/bin) |
پیغام فوق بهطور فانتزی میگوید: «فرمان پیدا نشد! (command not found)»
دریافت مستندات فرمانهای لینوکس با کمک فرمان help
بش (bash) دارای یک مرکز درونی کمک برای فرمانهای shell builtin میباشد. برای استفاده از آن help را به همراه نام فرمان مورد نظر تایپ نموده و اجرا نمایید. برای مثال:
1 2 3 4 5 6 7 8 9 10 11 |
[me@linuxbox ~]$ help cd cd: cd [-L|-P] [dir] Change the current directory to DIR. The variable $HOME is the default DIR. The variable CDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:). A null directory name is the same as the current directory, i.e. `.'. If DIR begins with a slash (/), then CDPATH is not used. If the directory is not found, and the shell option `cdable_vars' is set, then try the word as a variable name. If that variable has a value, then cd to the value of that variable. The -P option says to use the physical directory structure instead of following symbolic links; the -L option forces symbolic links to be followed. |
آیتمهایی که درون براکت هستند، آیتمهایی اختیاری هستند. علامت | (خط عمودی) نیز نشاندهنده آیتمهای اختصاصی و انحصاری است.
فرمان –help نمایش اطلاعات مفید فرمان
بسیاری از برنامههای اجرایی از فرمان –help پشتیبانی میکنند که توضیح نحو (syntax) و گزینههای (options) پشتیبانی شده یک فرمان را نشان میدهد. بهعنوان مثال:
1 2 3 4 5 6 7 8 9 10 11 12 |
[me@linuxbox ~]$ mkdir --help Usage: mkdir [OPTION] DIRECTORY... Create the DIRECTORY(ies), if they do not already exist. -Z, --context=CONTEXT (SELinux) set security context to CONTEXT Mandatory arguments to long options are mandatory for short options too. -m, --mode=MODE set file mode (as in chmod), not a=rwx – umask -p, --parents no error if existing, make parent directories as needed -v, --verbose print a message for each created directory --help display this help and exit --version output version information and exit Report bugs to <bug-coreutils@gnu.org>. |
نمایش صفحه راهنمای برنامههای لینوکس به کمک فرمان man
اکثر برنامههای اجرایی که برای استفاده از خط فرمان در نظر گرفته شده مستندات رسمی به نام man page ارائه میدهند. شکل اجرای این فرمان بهصورت زیر است:
1 |
man program |
کافی است به جای program فرمان مورد نظر را برای مشاهده تایپ نمایید.
Man pageها تا حدودی در فرمت متفاوت هستند، اما بهطور معمول شامل یک عنوان، خلاصهای از نحو (syntax) فرمان، شرحی از هدف فرمان و فهرست یا توضیحاتی از گزینههای فرمان میباشند.
با این حال man pageها معمولاً مثالی را شامل نمیشوند و به عنوان یک مرجع، نه یک آموزش در نظر گرفته میشوند.
راهنمایی که فرمان man نمایش میدهد به بخشهایی تقسیم میشود و فقط فرمانهای کاربر را پشتیبانی نمیکند بلکه فرمانهای مدیریت سیستمی، رابطهای کاربری برنامه، فرمتهای فایل و نظایر آن را پشتیبانی میکند. جدول زیر طرح کلی صفحات manual را شرح میدهد:
بخش | محتویات |
---|---|
1 | فرمانهای کاربر |
2 | رابطهای برنامهنویسی برای تماسهای سیستم هسته |
3 | رابطهای برنامهنویسی برای کتابخانه C |
4 | فایلهای ویژه مثل نودهای دیوایس و درایوها |
5 | فرمت فایلها |
6 | بازیها و آرگومانهایی مثل اسکرینسیورها |
7 | متفرقه |
8 | فرمانهای مدیریت سیستم |
گاهی اوقات نیاز داریم تا به یک بخش از صفحه manual نگاه کنیم تا چیزی که دنبال آن هستیم را پیدا کنیم. اگر که شماره بخش مورد نظر را در فرمان تعیین نکنیم، همیشه اولین نمونه منطبق را دریافت خواهیم کرد که به احتمال زیاد در بخش ۱ باشد. برای تخصیص شماره بخش به فرمان، به شکل زیر عمل میکنیم:
1 |
man section search_term |
که در اینجا search_term همان مورد جستجوی ماست. به عنوان مثال:
1 |
[me@linuxbox ~]$ man 5 passwd |
با اجرای صفحه راهنمایی را خواهیم دید که فرمت فایل /etc/passwd را شرح میدهد.
نمایش فرمانهای مناسب با کمک فرمان apropos
گاهی اوقات نیاز داریم که لیست صفحات manual را برای یک مورد خاص جستجو نماییم. در ادامه مثالی از جستجوی صفحات راهنما را برای floppy آورده شده است:
1 2 3 4 5 6 7 8 9 10 |
[me@linuxbox ~]$ apropos floppy create_floppy_devices (8) - udev callout to create all possible floppy device based on the CMOS type fdformat (8) - Low-level formats a floppy disk floppy (8) - format floppy disks gfloppy (1) - a simple floppy formatter for the GNOME 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 |
فیلد اول در هر خط خروجی نام صفحه راهنماست و فیلد دوم نشاندهنده بخش مورد نظر میباشد. به یاد داشته باشید که گزینه –k با فرمان man دقیقاً مانند عملکرد apropos عمل خواهد کرد.
نمایش توصیفی مختصر از یک فرمان با کمک فرمان whatis
فرمان whatis نام و شرحی یک خطی از یک صفحه راهنما را مطابق با یک کلمه مشخص، نمایش میدهد.
1 2 |
[me@linuxbox ~]$ whatis ls ls (1) - list directory contents |
نمایش اطلاعات ورودی یک برنامه با کمک فرمان info
پروژه GNU یک جایگزین برای صفحات man با نام info page ارائه نموده است. صفحات اطلاعات در برنامهای با نام info نمایش داده میشود. صفحات info مانند صفحات وب دارای لینکهایی هستند.
برنامه info فایلهای صفحات info را میخواند و در یک ساختار درختی در nodeهای جداگانه نشان میدهد. هر نود شامل یک عنوان جداگانه است. فایلهای info شامل لینکهایی هستند که شما را به nodeهای دیگر هدایت میکند. لینکها از طریق علامت * (ستاره در اولشان) شناسایی شده و با قرار دادن نشانگر بر روی آنها و فشار دادن کلید Enter اجرا میشوند. برای دریافت اطلاعات اطلاعات میتوانید info را به دنبال نام برنامه تایپ کنید، به عنوان مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
File: coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing 10.1 `ls': List directory contents ================================== The `ls' program lists information about files (of any type, including directories). Options and file arguments can be intermixed arbitrarily, as usual. For non-option command-line arguments that are directories, by default `ls' lists the contents of directories, not recursively, and omitting files with names beginning with `.'. For other non-option arguments, by default `ls' lists just the filename. If no non-option argument is specified, `ls' operates on the current directory, acting as if it had been invoked with a single argument of `.'. By default, the output is sorted alphabetically, according to the --zz-Info: (coreutils.info.gz)ls invocation, 63 lines --Top---------- |
جدول زیر فرمانهایی که به منظور کنترل صفحه هنگام خواندن صفحات info استفاده میشود را نشان میدهد:
فرمان | عملکرد |
---|---|
? | نمایش راهنمای فرمان |
PAGE UP یا BACKSPACE | نمایش صفحه قبل |
PAGE DOWN یا Spacebar | نمایش صفحه بعد |
n | بعدی - نمایش نود بعد |
p | قبلی - نمایش نود قبل |
u | بالا - نمایش نود والد از نود اخیر نمایش داده شده |
ENTER | لینک را در موقعیت مکاننما دنبال میکند |
q | خروج |
ایجاد فرمانها به کمک فرمان alias
پیش از آغاز نیاز است تا به یکی از ترفندهای خط فرمان بپردازیم. ما میتوانی بیش از یک فرمان را در یک خط از خط فرمان قرار دهیم. این کار با کمک علامت سمیکالن قابل اجراست به صورت زیر:
1 |
command1; command2; command3.. |
به عنوان مثال:
1 2 3 4 5 |
[me@linuxbox ~]$ cd /usr; ls; cd - bin games kerberos lib64 local share tmp etc include lib libexec sbin src /home/me [me@linuxbox ~]$ |
همانطور که مشاهده میشود سه فرمان را در یک خط قرار دادهایم. ابتدا دایرکتوری را به مسیر /usr تغییر دادهایم، سپس لیست محتویات دایرکتوری را نمایش دادهایم و در نهایت با کمک فرمان cd به دایرکتوری اصلی بازگشتیم.
اولین چیزی که بایستی برای دستور خود تصور کنیم یک نام برای فرمان جدید است. چون این فقط یک آزمایش است نام test را انتخاب مینماییم. البته بهتر است تست کنیم که کسی قبلاً از این اسم استفاده نکرده است. با فرمان type میتوان به این مطلوب رسید:
1 2 |
[me@linuxbox ~]$ type test test is a shell builtin |
مشاهده میشود که این نام قبلاً انتخاب و استفاده شده است. حال foo را آزمایش میکنیم:
1 2 |
[me@linuxbox ~]$ type foo bash: type: foo: not found |
خوشبختانه foo در بین فهرست فرمانهای لینوکس موجود نیست. در ادامه با کمک فرمان alias فرمان جدید را ایجاد میکنیم:
1 |
[me@linuxbox ~]$ alias foo='cd /usr; ls; cd -' |
ساختار این فرمان بدین شکل است:
1 |
alias name='string' |
پس از فرمان alias نامی را برای فرمان جدید تایپ کرده و بدون هیچ فاصلهای با قرار داد یک علامت مساوی دو علامت کوتیشن را قرار میدهیم و درون آن رشتهای را که میخواهیم اجرا شود را قرار میدهیم. پس از این کار، فرمان جدید همواره قابل اجراست.
1 2 3 4 5 |
[me@linuxbox ~]$ foo bin games kerberos lib64 local share tmp etc include lib libexec sbin src /home/me [me@linuxbox ~]$ |
میتوانیم فرمان foo را با کمک فرمان type بررسی کنیم:
1 2 |
[me@linuxbox ~]$ type foo foo is aliased to `cd /usr; ls ; cd -' |
برای حذف آن نیز میتوان از فرمان unalias کمک گرفت:
1 2 3 |
[me@linuxbox ~]$ unalias foo [me@linuxbox ~]$ type foo bash: type: foo: not found |
در تعریف فرمانها با کمک alias مشکلی وجود دارد بهطوریکه با بستن ترمینال همه چیز پاک میشود! در این درس کار کردن با فرمانها را آموزش دادیم و در درسهای بعدی خواهید آموخت که چگونه فرمانهای alias خود را در قالب فایلهایی به محیط اضافه کنید تا هر زمان که وارد سیستم میشویم این فرمانها بهصورت خودکار تعریف شوند.
منبع: لینوکس سیزن نوشته فرشید نوتاش حقیقتدرباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
دیدگاهتان را بنویسید