خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

نوشتن اولین اسکریپت

نوشتن اولین اسکریپت شما و آماده کار نمودن آن

برای نوشتن یک اسکریپت به طور موفقیت‌آمیز، شما باید سه مورد را انجام بدهید:

  1. یک اسکریپت بنویسید
  2. مجوز اجرای پوسته به آن بدهید
  3. آن را جایی قرار بدهید که پوسته بتواند پیدایش کند

نوشتن یک اسکریپت

یک اسکریپت پوسته فایلی است که شامل متن ASCII است. برای ایجاد اسکریپت پوسته، شما یک ویرایشگر متن را به کار می‌برید. یک ویرایشگر متن برنامه‌ایست، مانند پردازشگر کلمه، که فایلهای متن ASCII را می‌خواند و می‌نویسد. ویرایشگرهای متن خیلی زیادی برای سیستم لینوکس شما در دسترس هستند، هم برای محیط خط فرمان و هم برای محیط رابط گرافیکی کاربر. در اینجا فهرستی از برخی موارد رایج آمده است:

نام

توضیحات

رابط کاربر

vi, vim

پدر بزرگ ویرایشگرهای متن یونیکس، vi، برای دشواری و ساختار فرمان غیر مستقیم خود بدنام است. در جهت مثبت، vi قدرتمند، سبک، و سریع است. آموختن vi یک مرحله سرنوشت‌ساز در یونیکس است، چون به طور فراگیر در سیستم‌های بر مبنای یونیکس در دسترس است. در بیشتر توزیع‌های لینوکس، یک نگارش توسعه‌یافته ویرایشگر vi به نام vim استفاده می‌شود.

خط فرمان

Emacs

غول واقعی دنیای ویرایشگرهای متن، ویرایشگر Emacs نوشته Richard Stallman است. Emacs شامل هر ویژگی تا به حال طرح شده برای یک ویرایشگر متن است (یا می‌تواند برای این شمول آماده بشود) . باید اشاره شود که دوستداران vi و Emacs در مورد برتری هر کدام، با کشمکش‌های تند و تیز و طعنه‌آمیزی با یکدیگر جدال می‌کنند.

خط فرمان

nano

nano یک ویرایشگر متن آزادِ همزاد برنامه پست الکترونیکی pine است. استفاده از nano بسیار آسان اما ویژگی‌های آن بسیار اندک است. من nano را به کاربران تازه کاری که به یک ویرایشگر خط فرمان نیاز دارند پیشنهاد می‌کنم.

خط فرمان

gedit

gedit ویرایشگر عرضه شده با محیط میزکار گنوم است.

گرافیکی

kwrite

kwrite یک ویرایشگر توسعه یافته ارایه شده با KDE است. از highlighting (برجسته سازیِ) ترکیب دستوری، یعنی یک ویژگی سودمند برای برنامه‌نویسان و نویسندگان اسکریپت برخوردار است.

گرافیکی

اکنون، ویرایشگر متن را روشن کنید و اولین اسکریپت خود به شرح زیر را در آن تایپ کنید:

#!/bin/bash
# My first script

echo "Hello World!"

افراد زیرک از میان شما کشف خواهند نمود که چطور متن را کپی و در ویرایشگر متن خود بچسبانند ‎;-)‎

اگر شما اصلاً یک کتاب برنامه‌نویسی را باز کرده باشید فوری تشخیص خواهید داد که این یک برنامه سنتی «Hello World» است. فایل‌تان را با یک نام توصیفی ذخیره کنید. hello_world چطور است؟

اولین سطر اسکریپت مهم است. این یک راهنمای ارایه شده به پوسته به نام shebang است، که نشان می‌دهد کدام برنامه باید برای تفسیر اسکریپت استفاده شود. در این حالت، برنامه ‎/bin/bash‎ است. سایر زبانهای اسکریپتی از قبیل ‏Perl، ‏awk، ‏tcl، ‏Tk، و python نیز از این ساز و کار استفاده می‌کنند.

سطر دوم یک توضیح است. هر چیزی که بعد از یک نشانه # ظاهر بشود به وسیله bash نادیده گرفته می‌شود. هنگامیکه اسکریپت شما بزرگتر و پیچیده‌تر می‌گردد، توضیحات ضروری می‌شوند. آنها توسط برنامه‌نویسان برای روشن کردن آنچه پیش می‌رود و برای اینکه دیگران بتوانند آن را بفهمند، به کار می‌روند. آخرین سطر فرمان echo است. این فرمان به سادگی شناسه‌هایش را در نمایشگر چاپ می‌کند.

تنظیم مجوزها

مورد بعدی که ما باید انجام بدهیم دادن مجوز اجرا به اسکریپت شما است. این کار به شکل زیر با فرمان chmod انجام می‌شود:

[me@linuxbox me]$ chmod 755 hello_world

«755» مجوز خواندن، نوشتن، و اجرا به شما خواهد داد. هر فرد دیگر نیز فقط مجوز خواندن و اجرا به دست خواهد آورد. اگر شما می‌خواهید اسکریپت شما خصوصی باشد (یعنی، فقط شما بتوانید بخوانید و اجرا کنید)، به جای آن از «700» استفاده کنید.

قرار دادن آن در Path شما

در این وضعیت، اسکریپت اجرا خواهد شد. این را امتحان کنید:

[me@linuxbox me]$ ./hello_world

شما باید ‎Hello World!‎ نمایش یافته را مشاهده کنید. در صورتیکه چنین نیست، ببینید واقعاً اسکریپت خود را در کدام دایرکتوری ذخیره نموده‌اید، آنجا بروید و دوباره امتحان کنید.

قبل از اینکه جلوتر برویم، من باید توقف کرده و مقداری در باره pathها صحبت کنم. هنگامی که شما نام یک فرمان را تایپ می‌کنید، سیستم تمام کامپیوتر را برای پیدا کردن جایی که برنامه قرار داده می‌شود جستجو نمی‌کند. این کار خیلی زمان می‌برد. شما توجه نموده‌اید که معمولاً نباید نام مسیر کامل برنامه‌ای را که می‌خواهید اجرا کنید، وارد نمایید، به نظر می‌رسد پوسته آگاه است.

خُب، حق با شماست. پوسته می‌داند. چگونگی آن اینجاست: پوسته فهرستی از دایرکتوری‌هایی که فایلهای قابل اجرا (برنامه‌ها) در آنها قرار داده شده‌اند، نگهداری می‌کند، و فقط دایرکتوری‌های داخل آن فهرست را جستجو می‌کند. اگر بعد از جستجوی هر دایرکتوری موجود در آن فهرست برنامه را پیدا نکند، پیغام خطای مشهور command not found را صادر می‌کند.

این فهرست دایرکتوری‌ها path شما نامیده می‌شود. شما می‌توانید لیست دایرکتوری‌های آن را با فرمان زیر مشاهده کنید:

[me@linuxbox me]$ echo $PATH

این فرمان فهرست جداشده با کاراکتر کولن(:) دایرکتوری‌هایی را برگشت می‌دهد که اگر موقع صدور فرمان، نام مسیرِ معینی ارایه نشده باشد، جستجو خواهند شد. ما در اولین کوشش خود برای اجرای اسکریپت شما، یک نام مسیر ‎(./)‎ برای فایل مشخص نمودیم.

شما می‌توانید دایرکتوری‌ها را با فرمان زیر به path خود اضافه کنید، که در آن directory نام آن دایرکتوری است که شما می‌خواهید اضافه شود:

[me@linuxbox me]$ export PATH=$PATH:directory

یک روش بهتر ویرایش کردن فایل ‎.bash_profile‎ یا ‎.profile‎ شما (نسبت به توزیع شما) برای پیوست کردن فرمان فوق است. به آن طریق، هر بار که شما به سیستم وارد می‌شوید این دایرکتوری به طور خودکار به path اضافه می‌شود.

اکثر توزیع‌های لینوکس رویه‌ای را تشویق می‌کنند که در آن هر کاربر یک دایرکتوری برای برنامه‌های مورد استفاده شخصی‌اش دارد. این دایرکتوری bin نام دارد و یک دایرکتوری فرعی در دایرکتوری خانگی شماست. در صورتیکه شما از قبل آن را ندارید، با فرمان زیر آن را ایجاد کنید:

[me@linuxbox me]$ mkdir bin

اسکریپت‌تان را به دایرکتوری جدید bin خود انتقال بدهید و شما آماده هستید. اکنون فقط باید تایپ کنید:

[me@linuxbox me]$ hello_world

و اسکریپت شما اجرا خواهد شد. در برخی توزیع‌ها، به طور قابل ذکر در Ubuntu، لازم است قبل از اینکه دایرکتوری bin ایجاد شده جدید شما شناسایی بشود، یک نشست جدیدِ ترمینال باز کنید.