کاوشگر لینوکس

آموزش لینوکس و معرفی نرم افزارهای کاربردی مرجع باز (open source)

کاوشگر لینوکس

آموزش لینوکس و معرفی نرم افزارهای کاربردی مرجع باز (open source)

راهنمای کار با خط فرمان متنی لینوکس – بخش چهارم

استفاده از فرامین پس زمینه و پیش زمینه

در ادامه مثالی که در بالا ذکر شد، برای برگرداندن برنامه vi به پیش زمینه میتوانید از دستور زیر استفاده کنید:

$ fg %2

با این دستور، برنامه vi مجددا روی پوسته فرمان نمایش داده خواهد شد. با فشردن کلیدهای Ctrl+z میتوانید مجددا آنرا به پس زمینه بفرستید.

 

هشدار : قبل از اینکه یک برنامه واژه پرداز و یا برنامه ای که اطلاعات ذخیره نشده دارد را به پس زمینه ارسال کنید، اطلاعات آنرا ذخیره نمایید. برنامه های پس زمینه به سادگی فراموش میشوند و ممکن است اطلاعات خود را از دست بدهید.

 

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

$ jobs

[2] Stopped vi

[3]- Stopped mc

[4]+ Stopped vi ./mytext

 

$ fg %?my

 

با تایپ دستور fg %?my برنامه vi که در حال ویرایش فایل mytext است، در پوسته فرمان نمایش داده خواهد شد.

 

 

پیکربندی پوسته فرمان

برای اینکه بتوانید بطور موثرتری از پوسته فرمان خود استفاده کنید، میتوانید آنرا بنا به خواسته خود تنظیم کنید. برای این منظور باید فایلهای پیکربندی پوسته فرمان خود را ویرایش کنید.

تعدادی فایل پیکربندی وجود دارد که نحوه رفتار پوسته فرمان شما را تعیین میکند. برخی از این فایلها برای تمام کاربران و پوسته ها مشترک بوده و برخی مخصوص یک کاربر خاص هستند. فایلهای پیکربندی زیر فایلهایی هستند که هر کاربر پوسته فرمان در لینوکس از آنها استفاده میکند :

    • etc/profile : این فایل اطلاعات محیط کاربری هر کاربر را ذخیره میکند. این فایل هنگامی اجرا میشود که شما به سیستم وارد شده و پوسته فرمان آغاز به کار میکند. این فایل مقادیر پیش گزیده مسیر، شکل اعلان فرمان، حداکثر تعداد فایلی که شما میتوانید ایجاد کنید و مجوز های پیش گزیده برای فایلهایی که ایجاد میکنید را تعیین میکند. همچنین این فایل متغییر های محیطی مانند محل صندوق پستی و اندازه فایلهای تاریخچه را تنظیم میکند.
    • etc/bashrc : این فایل برای هر کاربری که پوسته bash را اجرامیکند، اجرا میشود. این فایل حالت اعلان فرمان را تنظیم میکند. مقادیر این فایل میتواند توسط فایل bashrc که در دایرکتوری خانگی هر کاربر وجود دارد، تحت تاثیر قرار گیرد.
    • bashrc./~ : این فایل حاوی اطلاعات مربوط به bash هر کاربر میباشد. این فایل هنگامی خوانده میشود که به سیستم وارد میشود و هر گاه که یک پوسته جدید باز میکنید. اینجا بهترین مکان برای ذخیره متغییرهای محیطی و فرمانهای مستعار خاص خودتان است.
    • bash_profile./~ : این فایل برای وارد کردن اطلاعات خاصی که هر کاربر در استفاده از پوسته بکار میبرد میباشد. این فایل تنها یکبار اجرا میشود. هنگامی که کاربر به سیستم وارد میشود. این فایل تعدادی از متغییرهای محیطی را مقدار دهی کرده و فایل bashrc مربوط به کاربر را اجرا میکند.
    • bash_logout./~ : این فایل هر گاه که شما از سیستم خارج میشوید اجرا میشود. این فایل فقط صفحه نمایش را پاک میکند.

 

برای تغییر فایلهای etc/profile و etc/bashrc باید با کاربر ریشه وارد سیستم شده باشید. هر کاربر میتواند اطلاعات موجود در فایلهای bash_profile، bashrc و bash_logout موجود در دایرکتوری های خود را تغییر دهد.

در قسمت زیر با برخی تنظیمات فایلهای پیکربندی پوسته فرمان آشنا میشوید. در بیشتر موارد، تغییرات در فایل bashrc موجود در دایرکتوری خانگی صورت میگیرد. هرچند در صورتی که شما یک مدیر سیستم باشید، ممکن است این تنظیمات را برای کل کاربران خود اعمال کنید.

 

تنظیم اعلان فرمان

اعلان فرمان شما از تعدادی کاراکتر تشکیل شده است که هر گاه که به نمایش در می آید، معنی آن این است که پوسته فرمان آماده دریافت فرمان جدید است. محتویات اعلان فرمان در متغییر محیطی PS1 قرار دارد. در صورتی که پوسته فرمان شما به ورودی بیشتری نیاز داشته باشد، از مقادیر PS2، PS3 و PS4 نیز استفاده خواهد شد.

هنگامی که سیستم لینوکس شما نصب میشود، اعلان فرمان طوری تنظیم میشود که حاوی اطلاعات زیر باشد: نام کاربری شما، نام کامپیوتر شما و نام دایرکتوری که اکنون در آن قرار دارید. این اطلاعات در میان دو براکت قرار گرفته و در انتهای آن برای کاربران عادی یک علامت دلار ($) و برای کاربر ریشه علامت پوند (#) قرار دارد. در زیر مثالی از یک اعلان فرمان را میبینید:

[alan@Memphis alan]$

این امکان وجود دارد تا اطلاعات مختلفی را به اعلان فرمانتان اضافه کنید. این اطلاعات میتواند شامل شماره ترمینال، تاریخ، زمان و اطلاعات دیگر باشد. برای مثال :

  • ! : شماره فعلی تاریخچه فرمان را نشان میدهد.
  • # : شماره دستور آخرین دستور را نشان میدهد.
  • $ : اعلان فرمان استاندارد را نشان میدهد.
  • W : فقط دایرکتوری کاری جاری را نشان میدهد.
  • \ : فقط یک بک اسلش نشان داده میشود.
  • d : روز، ماه و شماره روز را نمایش میدهد. مثلا : Sat Jan 23
  • h : نام کامپیوتر میزبان را نشان میدهد.
  • n : یک خط جدید باز میکند.
  • s : نام پوسته فرمان را نشان میدهد. مثلا bash
  • t : زمان را بصورت ساعت، دقیقه و ثانیه نمایش میدهد. برای مثال : 10:14:40
  • u : نام کاربر را نمایش میدهد.
  • w : مسیر کامل دایرکتوری جاری را نمایش میدهد.

 

نکته : در صورتی که اعلان فرمان خود را به صورت موقت با تایپ مقادیر مربوطه در پوسته فرمان تغییر میدهید، باید مقادیر PS1 را بین دو گیومه قرار دهید . مثلا دستور:

export PS1=”[ w]$]”

اعلان فرمان را به صورت زیر نشان میدهد:

[20:25:40 /var/spool/mail]$

 

 

برای ایجاد تغییرات دائمی در اعلان فرمان، باید مقدار PS1 را به فایل bashrc موجود در دایرکتوری خانگی خود اضافه کنید. معمولا این مقدار قبلا وجود دارد و کافی است آنرا تغییر دهید.

 

تنظیم اسامی مستعار

در لینوکس این امکان وجود دارد تا برای آسانی بیشتر، اسامی مستعاری را بجای فرمان اصلی تعیین کنید. برای اضافه کردن اسامی مستعار باید از دستور alias استفاده کنید. به مثالهای زیر توجه کنید:

$ alias p='pwd; ls -CF'

$ alias rm='rm -i'

در مثال نخست حرف p دستور pwd را اجرا کرده و پس از آن دستور ls -CF اجرا خواهد شد که محتویات دایرکتوری جاری را چاپ خواهد کرد. در مثال دوم، دستور rm طوری تنظیم شده است تا فقط با گزینه i اجرا شود.

در صورتی که دستور alias را به تنهایی تایپ کنید، لیستی از اسامی مستعاری که تنظیم کرده اید نمایش داده میشود. توجه داشته باشید که اسامی مستعار در یک فایل پیکربندی ذخیره شده و با بستن پوسته فرمان از بین نمی روند.

 

کار کردن با سیستم فایل لینوکس

سیستم فایل لینوکس ساختاری است که اطلاعات شما را در کامپیوتر ذخیره میکند. فایلها در یک ساختار درختی از دایرکتوری ها ذخیره میشوند. هر دایرکتوری میتواند حاوی فایلها و دایرکتوری های دیگری باشد. در صورتی که بخواهید ساختار سیستم فایل لینوکس را دقیق تر توصیف کنید، آن بیشتر شبیه یک درخت وارونه است. در بالاترین نقطه، دایرکتوری ریشه قرار دارد که بوسیله یک اسلش تنها نشان داده میشود. در زیر آن دایرکتوری های عمومی و سیستمی سیستم عامل لینوکس قرار میگیرند. مانند bin، dev، home و tmp . هر کدام از این دایرکتوری ها محتوی دایرکتوری های دیگری هستند

 

برخی از دایرکتوری های مهم سیستم فایل لینوکس در زیر توضیح داده شده اند.

  • bin : فرامین عمومی سیستم عامل لینوکس در این دایرکتوری قرار دارند. مانند ls، sort و chmod.
  • dev : حاوی نقاط دسترسی به ابزارهای سخت افزاری کامپیوتر شما است. مانند ترمینالها (tty)، دیسکهای فلاپی (fd)، دیسکهای سخت (hd) و ... کاربران بطور معمول برای دستیابی به این دستگاهها از نامهای آنها استفاده میکنند.
  • etc : حاوی برخی فایلهای پیکربندی سیستم است.
  • home : دایرکتوری های کاربران یک سیستم لینوکس در این دایرکتوری قرار میگیرد.
  • mnt : محلی را برای متصل کردن ابزارها و دیسکها مانند فلاپی، CD-ROM و درایوهای شبکه ایجاد میکند.
  • root : دایرکتوری خانگی کاربر ریشه است.
  • sbin : دستورات مدیریتی سیستم در این دایرکتوری قرار میگیرند.
  • tmp : محل قرارگیری فایلهای موقت.
  • usr : محل قرارگیری مستندات سیستم، بازی ها، فایلهای گرافیکی، کتابخانه ها و بسیاری چیزهای دیگر.

ساختار سیستم فایل در داس و ویندوز با ساختار آن در لینوکس متفاوت هستند. با وجودی که شباهت هایی نیز در این میان دیده میشود ولی تفاوت های عمده به شرح زیر هستند:

  • در داس و ویندوز برای دسترسی به ابزارهای ذخیره سازی مختلف و پارتیشن های مختلف دیسک سخت از حروفی که به نام درایو موسوم بودند استفاده میکردید. مانند A برای فلاپی، C برای دیسک سخت و ... در لینوکس تمام ابزارهای ذخیره سازی در دل سیستم فایل باهم ادغام شده اند. مثلا محتویات یک فلاپی دیسک در مسیر mnt/floppy قرار میگیرد و... ممکن است در ابتدای کار اصلا به این سیستم عادت نداشته باشید ولی پس از مدتی به آن عادت خواهید کرد. محلی که شما برای ذخیره فایلها و اطلاعات خود استفاده خواهید کرد، همان دایرکتوری خانگی شماست.
  • در سیستم فایل داس و ویندوز برای جداکردن پوشه ها و مسیرها از بک اسلش استفاده میشود در حالی که در لینوکس از اسلش استفاده میشود.
  • نام فایلها در داس و ویندوز همیشه دارای یک پسوند بوده اند. مانند txt برای فایلهای متنی و... پسوند فایل ها برای لینوکس و یونیکس لازم نیستند. سیستم فایل لینوکس بدون توجه به پسوند، نوع فایل را تشخیص میدهد.
  • هر فایل و دایرکتوری در لینوکس دارای مجوزها و خصوصیاتی است که از دسترسی کاربران غیر مجاز به آن جلوگیری کرده و یا این دسترسی را محدود میکند. در بیشتر سیستمهای داس و ویندوز از این مجوزها خبری نیست زیرا این سیستمها در ابتدا بصورت سیستمهای تک کاربره طراحی و پیاده سازی شده اند. در سیستمهای ویندوز، سیستمهای مبتنی بر ویندوز NT که بصورت چند کاربره هستند این مجوزها پیاده سازی شده است.

راهنمای کار با خط فرمان متنی لینوکس – بخش سوم

اتصال و گسترش فرامین

یکی از قابلیتهای واقعا قدرتمند پوسته فرمان، قابلیت هدایت خروجی یا ورودی یک فرمان به فرامین دیگر است. برای این منظور، همانطور که قبلا اشاره شد، از کاراکترهای ویژه استفاده میشود.

 

لوله بندی فرامین (Piping Commands)

کاراکتر ویژه لوله بندی کاراکتر (|) است. این کاراکتر، خروجی یک فرمان را به ورودی فرمان دیگر هدایت میکند. برای مثال :

$ cat /etc/passwd | sort | more

adm:x:3:4:adm:/var/adm:/sbin/nologin

Alan:x:500:500:Alan Bachumian,7852020:/home/Alan:/bin/bash

apache:x:48:48:Apache:/var/www:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

Linet:x:501:501:Linet Minasian:/home/Linet:/bin/bash

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

--More--

این فرمان محتویات فایل etc/passwd را خوانده و خروجی را به فرمان sort هدایت میکند. این فرمان، کاراکتر ابتدای هر سطر را گرفته و خروجی را بصورت الفبایی مرتب کرده و خروجی را به دستور more میفرستد و این دستور نیز خروجی را بصورت صفحه به صفحه نمایش میدهد.

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

 

$ nroff -man grep.1 | lpr

 

 

در دستور بالا از nroff برای فرمت کردن فایل grep.1 با استفاده از ماکروی man استفاده شده و حاصل کار با استفاده از لوله بندی به خروجی چاپگر که lpr است فرستاده شده است.

 

دستورات متوالی

برخی اوقات نیاز دارید که چند فرمان بصورت همزمان با استفاده از یک فرمان اجرا شوند. این کار به سادگی امکان پذیر است. کافی است پس از اتمام هر فرمان آنرا از فرمان بعدی بوسیله یک کاراکتر سم کالن (;) جدا کنید. برای مثال :

$ date; troff -me mytext | lpr; ls /home

فرامین پس زمینه

برخی دستورات برای تمام شدن نیاز به زمان دارند. برخی اوقات مایل نیستید که پوسته فرمانتان را معطل باقی بگذارید تا دستور به اتمام برسد. برای این منظور میتوانید دستور مورد نظر را با استفاده از کاراکتر آمپرسند (&) در پس زمینه اجرا کنید. برای مثال :

$ troff -me mytext &

 

راههایی برای مدیریت پروسه های پیش زمینه و پس زمینه وجود دارد که جلوتر درباره آنها صحبت خواهیم کرد.

 

توسعه فرامین

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

$(sommand) or 'command'

برای فهمیدن این قابلیت به مثال زیر توجه کنید:

$ vi $(find / -print | grep xyzzy)

 

در این دستور، قبل از اجرای vi جانشینی فرامین صورت می گیرد. ابتدا دستور find از دایرکتوری ریشه شروع به کار کرده و نام تمام فایلها و دایرکتوری ها را چاپ میکند. خروجی این دستور به grep ارسال میشود و این دستور تمام آنها را که فاقد رشته xyzzy هستند را فیلتر میکند. سپس vi تمام فایلهایی را که دارای رشته xyzzy هستند را باز میکند.

 

توسعه عبارات حسابی

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

$[expression] or $((expression))

برای روشن شدن مطلب به مثال زیر توجه کنید :

$ echo “Iam $[2003-1978] years old.”

Iam 25 years old.

در مثال بالا، پوسته فرمان ابتدا عبارت حسابی را انجام داده و سپس نتیجه را به فرمان echo ارسال میکند.

توسعه متغییرهای محیطی

همانطور که قبلا گفتیم، متغییرهای محیطی اطلاعاتی را در مورد پوسته فرمان در بر دارند. هنگامی که یک متغییر محیطی را در یک دستور قرار میدهید، بجای اینکه نام آن چاپ شود، محتویات آن چاپ میشود :

$ ls -l $BASH

-rwxr-xr-x 1 root root 626188 Aug 24 2002 /bin/bash

 

در مثال بالا، دستور ls با استفاده از متغییر محیطی BASH محل آنرا چاپ میکند. در این مورد بیشتر توضیح خواهم داد.

 

استفاده از متغییر های محیطی

متغییرهای محیطی برای ذخیره اطلاعاتی مانند محل فایلهای پیکربندی ، صندوقهای پستی و مسیر دایرکتوری ها بکار میروند. همچنین این متغییرها دارای مقادیری برای شکل اعلان فرمان، اندازه تاریخچه و نوع سیستم عامل نیز هستند.

برای نمایش متغییرهایی که اکنون به پوسته فرمان شما اختصاص داده شده اند، باید از دستور declare استفاده کنید.

برای نمایش محتویات هر یک ، کافی است یک علامت دلار جلوی آن قرار داده و آن را در دستورات خط فرمان استفاده کنید :

$ echo $USER

Alan

همانطور که می بینید، فرمان بالا نام کاربر فعلی سیستم را نمایش میدهد.

 

متغییرهای محیطی عمومی

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

    • BASH : محتوی مسیر کامل برنامه پوسته فرمان است. به طور معمول bin/bash .
    • BASH_VERSION : شماره نسخه برنامه پوسته فرمان را نشان میدهد.
    • EUID : شماره شناسایی موثر کاربر فعلی را نمایش میدهد. این مقدار هنگامی که پوسته شروع میشود، تخصیص داده میشود.
    • HISTFILE : محل فایل تاریخچه فرامین را نمایش میدهد.
    • HISTFILESIZE : تعداد فرامینی که تاریخچه در خود نگهداری میکند. معمولا ۱۰۰۰ است.
    • HISTCMD : شماره فرمان جاری را در تاریخچه نشان میدهد.
    • HOME : دایرکتوری خانگی کاربر جاری را نشان میدهد.
    • HOSTTYPE : نوع معماری پردازنده کامپیوتر را نشان میدهد.
    • MAIL : مسیر صندوق پستی کاربر جـاری را نـشـان میدهد. مـعـمـولا بـه نـام شـمـا در /var/spool/mail قرار دارد.
    • OLDPWD : مسیر قبل از دایرکتوری جاری فعلی را نشان میدهد.
    • OSTYPE : نوع سیستم عامل را نشان میدهد. در مورد ما خروجی به صورت linux-gnu خواهد بود.
    • PATH : لیست دایرکتوری های معرفی شده را نشان میدهد. برای اجرای یک فرمان در این دایرکتوری ها جستجو صورت میگیرد.
    • PPID : شماره پروسه ای که پوسته فرمان را شروع کرده است، نمایش میدهد.
    • PROMPT_COMMAND : دستوری را که هربار پیش از نمایش اعلان فرمان اجرا میشود را نشان میدهد.
    • PS1 : مقدار اعلان فرمان را تخصیص میدهد. مقادیر زیادی وجود دارند که آنها را میتوانید در اعلان فرمان خود بگنجانید مانند تاریخ، زمان، نام کاربر، نام کامپیوتر و ... برخی اوقات یک فرمان به اعلان های بیشتری نیاز دارد که میتوانید از متغییرهای PS2 یا PS3 برای این کار استفاده کنید. در این مورد بیشتر توضیح خواهم داد.
    • PWD : دایرکتوری جاری را نشان میدهد.
    • RANDOM : با مراجعه به این متغییر یک شماره تصادفی بین ۰ و ۹۹۹۹ تولید میشود.
    • SECONDS : تعداد ثانیه ای که پوسته فرمان آغاز به کار کرده است.
    • UID : شماره شناسایی اصلی کاربر فعلی را نمایش میدهد. این شماره در فایل etc/passwd ذخیره شده است.

 

 

ایجاد متغییرهای محیطی خاص

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

$ AB=/usr/locl/documents; export AB

مثال بالا مسیر یک دایرکتوری را به یک متغییر به نام AB اختصاص میدهد. دستور export این متغییر را به پوسته فرمان صادر میکند. بنابراین در صورتی که پوسته های فرمان دیگری نیز اجرا شوند، این متغییر در آنها موجود خواهد بود.

 

نکته : ممکن است توجه کرده باشید که تمام متغییرهای محیطی با حروف بزرگ تعریف شده اند. این کار یک رسم است نه یک الزام. یعنی در صورتی که نام متغییری را با حروف کوچک تعیین کنید ، باز هم کار خواهد کرد. البته توجه داشته باشید که متغییر xyz با XYZ یکی نیست.

 

مشکلی که در ایجاد این گونه متغییرهای محیطی وجود دارد این است که موقت بوده و با خروج از پنجره پوسته ای که این متغییر در آن تخصیص داده شده است، این متغیر پاک خواهد شد. برای اختصاص دائمی این متغییرها، باید آنها را به فایلهای پیکربندی پوسته فرمان اضافه کنید. این موضوع جلوتر توضیح داده خواهد شد.

در صورتی که مایلید متنی درست جلوی مقدار یک متغییر محیطی قرار گیرد، کافی است که متغییر را در دو پرانتز قرار داده و متن مورد نظر را جلوی آن قرار دهید . برای مثال :

$ echo ${HOME}/Documents

/home/Alan/Documents

 

به خاطر داشته باشید که برای استفاده از متغییرها یا باید آنها را export کنید و یا به فایل پیکربندی پوسته فرما اضافه نمایید. دستور export بسیار قابل انعطاف است. مثلا میتوانید در هنگام صادر کردن متغییر، مقدار آنرا هم تخصیص دهید :

$ export XYZ=/home/Alan/Documents

 

ویا میتوانید با حفظ مقادیر قبلی، مقداری را به یک متغییر اضافه نمایید :

$ export PATH=$PATH:/home/Alan/Documents

 

در مثال بالا، دایرکتوری home/Alan/Documents به طور موقت به متغییر PATH اضافه شده است.

در صورتی که احساس کردید دیگر به یک متغییر نیازی ندارید، میتوانید با استفاده از دستور unset آنرا پاک کنید:

$ unset XYZ

همانطور که دیدید، برای پاک کردن متغییر نیازی به علامت دلار نیست.

 

مدیریت پروسه های پس زمینه و پیش زمینه

در صورتی که از لینوکس در محیط شبکه ای و با استفاده از یک ترمینال متنی استفاده میکنید، پوسته فرمان تنها چیزی است که میتوانید از آن استفاده کنید و از محیطهای گرافیکی خبری نخواهد بود. در صورتی که نیاز داشته باشید در آن واحد با چندین برنامه کار کنید، این مسئله بسیار محدود کننده خواهد بود.

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

راههای گوناگونی برای قرار دادن یک برنامه در پس زمینه وجود دارد. قبلا اشاره کردیم که با اجرای برنامه ای که به آخر آن یک کاراکتر آمپرسند (&) اضافه شده است، در پس زمینه قرار میگیرد. روش دیگر استفاده از دستور at برای اجرای برنامه ها بصورتی که به پوسته متصل نباشند ، است.

برای توقف اجرای یک فرمان و قرار دادن آن در پس زمینه، از کلیدهای Ctrl+z استفاده کنید. پس از اینکه اجرای دستور متوقف شد، با استفاده از دستور fg میتوانید آنرا به پیش زمینه آورده، استفاده کنید و یا با دستور bg آنرا در پس زمینه بکار بگیرید.

 

 

شروع پروسه های پس زمینه

در صورتی که برنامه هایی دارید که مایلید در هنگام کار کردن شما در پس زمینه اجرا شوند، پس از دستور ، یک علامت آمپرسند (&) در پایان آن اضافه کنید. برای مثال :

$ find /usr -print > /home/Alan/usrfiles &

 

این دستور تمام فایلهای موجود در دایرکتوری usr لینوکس شما را در فایلی به نام usrfiles ذخیره میکند. علامت آمپرساند باعث میشود که این فرمان در پس زمینه اجرا شود. برای دیدن اینکه چه برنامه هایی در پس زمینه در حال اجرا هستند، از دستور jobs استفاده کنید:

$ jobs

[1]- Stopped mc

[2]+ Stopped vi

[3] Running find /usr -print >usrfiles &

 

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

نکته : برای نمایش شماره پروسه برنامه های پس زمینه ، میتوانید گزینه l را به فرمان jobs اضافه نمایید. در صورتی که از دستور ps برای نمایش پروسه های فعال استفاده کنید، میتوانید ببینید که کدامیک از آنها دستوری است که در پس زمینه در حال اجراست.

راهنمای کار با خط فرمان متنی لینوکس – بخش دوم

استفاده از پوسته فرمان در لینوکس

هنگامی که یک فرمان را در پوسته فرمان تایپ میکنید، میتوانید به آن کاراکترهای دیگری اضافه کنید تا چگونگی کارکرد دستور مورد نظر را تغییر دهید. علاوه بر خود دستور، موارد دیگری که میتوانید در خط فرمان تایپ کنید عبارتند از :

-گزینه ها (Options) : اکثر فرامین دارای یک یا چند گزینه هستند که با اضافه کردن و بکار بردین این گزینه ها میتوانید نحوه رفتار فرمان را تغییر دهید. برای مثال همانطور که قبلا هم دیدید، در فرمان ls -la گزینه l برای نمایش لیست مشروح فایلها و دایرکتوری ها و گزینه a برای نمایش فایلهای مخفی که با نقطه شروع میشدند، بکار رفت.ضمنا گزینه هایی که مخفف یک کلمه هستند با یک - شروع میشوند در صورتی که گزینه هایی که یک کلمه کامل هستند با -- شروع میشوند . برای مثال ls --help .

- آرگومان ها (Arguments): بسیاری از فرامین، علاوه بر گزینه ها ، آرگومانهایی را نیز قبول میکنند. یک آرگومان یک بخش شامل نوعی اطلاعات مانند مسیر یا نام فایل میباشد. برای مثال در فرمان ls -la /home بخش home آرگومان فرمان ls به شمار میرود.

- متغییر های محیطی (Environment Variables): خود پوسته اطلاعاتی را در بر دارد که برای کاربر مفید است. به این اطلاعات متغییرهای محیطی می گویند. برای مثال متغییر SHELL نمایانگر نوع پوسته مورد استفاده ، SP1 نشاندهنده اعلان فرمان و MAIL نشاندهنده محل صندوق پستی شما است :

$ echo $SHELL

/bin/bash

$ echo $MAIL

/var/spool/mail/Alan

 

توجه داشته باشید که برای فراخوانی متغییر ها به ابتدای آنها علامت $ اضافه میشود.

 

نکته : برای نمایش تمام متغییرهای محیطی میتوانید از دستور declare استفاده کنید. برای نمایش یک متغییر خاص میتوانید همانند بالا از دستور echo استفاده کنید.

 

- کاراکترهای ویژه (Metacharacters): کاراکترهایی وجود دارند که دارای معنای خاصی برای پوسته فرمان هستند. این کاراکترها میتوانند برای هدایت خروجی یک فرمان به یک فایل ، لوله بندی خروجی یک فرمان و یا اجرای فرمان در پس زمینه استفاده شوند. کاراکترهای ویژه در این فصل توضیح داده خواهند شد.

برای صرفه جویی در مقدار تایپ و آسانتر شدن کار ، پوسته فرمان دارای ویژگیهایی است که دستورات قبلی تایپ شده را نگهداری میکند. همچنین شما میتوانید برای آسانتر شدن، نامهای مستعاری برای دستورات ایجاد کنید. پوسته فرمان دستوراتی که قبلا وارد کرده اید ذخیره میکند و میتوانید بجای تایپ مجدد دستورات ، دستورات قبلی را فراخوانی نمایید. این موضوع نیز جلوتر بررسی خواهد شد.

در صورتی که پوسته فرمان را تغییر داده نباشید، پوسته bash پوسته ای است که همراه با لینوکس استفاده میکنید. پوسته bash از نظر امکانات و قابلیتها قویتر از انواع دیگر پوسته های فرمان است. در این فصل بیشتر قابلیتهای پوسته فرمان bash بررسی خواهند شد. ولی در صورتی که نیاز به اطلاعات بیشتری داشتید، میتوانید از دستور man bash برای نمایش راهنمای پوسته bash استفاده کنید.

 

یافتن فرمانهای لینوکس

در صورتی که بدانید که یک دستور در کجای سیستم فایل لینوکس قرار دارد، میتوانید آنرا با تایپ مسیر کامل اجرا نمایید. برای مثال برای اجرای دستور date :

$ /bin/date

البته در صورتی که دستوری در مسیرهای سخت و طولانی قرار داشته باشد ، این کار دشوار خواهد بود. بهترین راه حل این مشکل، نگهداری فرامین در یک دایرکتوری خاص است. سپس میتوانید این دایرکتوری را به مسیر جستجوی پوسته فرمان خود اضافه کنید تا هنگام تایپ یک فرمان، خود پوسته بطور خودکار دایرکتوری فوق را برای وجود فرمان کاوش کند :

$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/Alan/bin

 

خروجی فرمان فوق مسیرهای تعریف شده برای پوسته فرمان را برای یک کاربر خاص نشان میدهد. همانطور که می بینید دایرکتوری ها توسط یک کلون از هم جدا شده اند. بیشتر دستوراتی که همراه با لینوکس ارائه میشوند، در دایرکتوری های bin ، usr/bin یا usr/local/bin قرار دارند. دستورات گرافیکی که با محیطهای گرافیکی استفاده میشوند در مسیرهای usr/bin/X11 و usr/X11R6/bin قرار دارند. آخرین دایرکتوری نشان داده شده در خروجی فرمان، در دایرکتوری خانگی کاربر قرار دارد.

 

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

 

در صورتی که شما کاربر ریشه هستید، دستورات مربوط به مدیریت سیستم در دایرکتوری های sbin و usr/sbin قرار دارند.

ترتیب دایرکتوری های موجود در مسیرهای تعریف شده نیز مهم است. این دایرکتوری ها از چپ به راست بررسی میشوند. بنابراین اگر دستوری به نام foo هم در دایرکتوری usr/bin و هم در دایرکتوری bin قرار داشته باشد، اولی اجرا خواهد شد. برای اجرای دستور دوم foo باید مسیر کامل آنرا تایپ کنید و یا مسیرهای تعریف شده را تغییر دهید. چگونگی این کار جلوتر توضیح داده خواهد شد.

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

- نامهای مستعار : نامهایی که با دستور alias ایجاد شده اند و نشانگر یک دستور به همراه گزینه ها و آرگومانهای احتمالی میباشند.

- کلمات رزرو شده پوسته فرمان : کلماتی هستند که برای استفاده های مخصوص رزرو شده اند. بیشتر این کلمات دستوراتی هستند که معمولا در زبانهای برنامه نویسی استفاده میشوند مانند do ، while ، case و غیره.

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

- دستورات درونی : دستوراتی که درون خود پوسته فرمان گنجانده شده اند.

- دستورات سیستم فایل : دستورات معمولی که بصورت فایلهایی در سیستم فایل لینوکس قرار دارند. مسیرهای این دستورات در متغییر محیطی PATH گنجانده شده است.

 

نکته : برای نمایش لیستی از فرامین درونی bash و گزینه های آن میتوانید از دستور help استفاده کنید. برای نمایش اطلاعات بیشتر در مورد دستور مورد نظر از دستور info بعلاوه نام دستور مورد نظر استفاده کنید.

 

برای اینکه بفهمید که یک دستور در کجا قرار دارد، میتوانید از دستور type برای این منظور استفاده کنید. برای مثال :

$type bash

bash is /bin/bash

از دستور بالا برای یافتن محل فرامیت دیگری مانند which، case و ... استفاده کنید. در صورتی که دستوری در چندین دایرکتوری قرار دارد، میتوانید با اضافه کردن گزینه a به دستور type، تمام محلهای وجود آنرا چاپ کنید.

نکته :گاهی اوقات هنگام اجرای یک فرمان با خطاهایی مانند "این فرمان پیدا نشد" و یا "شما مجوز استفاده از این فرمان را ندارید" مواجه میشوید. برای مورد اول بررسی کنید که دستور را صحیح تایپ کرده اید و مسیر آن در مسیر PATH شما قرار داشته باشد. ممکن است فرمان مورد نظر اجرایی نباشد. در بخش کارکردن با فایلها، چگونگی اجرایی کردن یک فایل تشریح خواهد شد.

 

اجرای مجدد یک فرمان

تصور کنید یک فرمان بسیار طولانی را تایپ کرده اید و پس از اجرای آن متوجه میشوید که مرتکب اشتباه شده اید. مطمئنا چیزی دردآور تر از این وجود ندارد! پوسته فرمان دارای قابلیتهایی است که میتوانید بوسیله آن دستوراتی که قبلا اجرا کرده اید فراخوانی کرده و در صورت لزوم پس از اصلاح یا تغییر وحتی بدون تغییر آنها را مجددا اجرا کنید.

پوسته فرمان دارای قسمتی به نام تاریخچه (History) است که فرامینی که قبلا وارد کرده اید را نگهداری میکند. شما میتوانید این فرامین را از تاریخچه فراخوانی کرده و استفاده کنید.

 

ویرایش خط فرمان

در صورتی که در تایپ یک دستور مرتکب اشتباه شده اید، میتوانید به آسانی آنرا فراخوانی کرده و مجددا پس از ویرایش ، آنرا اجرا کنید. میتوانید از برخی کلیدهای میانبر برای راحت تر کردن این کار استفاده کنید. مثلا کلیدهای Ctrl+a اشاره گر را به ابتدای فرمان و Ctrl+E به انتهای فرمان حرکت می دهد. همین کار را کلیدهای Home و End نیز انجام میدهند. ویرایش کردن فرمان مانند کارکردن در ویرایش گرهای متنی است و بسیار ساده است. پس اتمام ویرایش دستور، کافی است کلید Enter را برای اجرای آن فشار دهید.

 

کامل کردن خودکار فرمان

برای اینکه مقدار تایپ شما به حداقل برسد، پوسته فرمان فرمان ناقص شما را به روشهایی کامل میکند. . برای بکارگیری این قابلیت کافی است که ابتدا چند حرف اول فرمان مورد نظر را تایپ کرده و کلید tab را فشار دهید. در زیر برخی موارد را که میتوانید ناقص تایپ کنید می بینید :

- متغییر های محیطی : در صورتی که متن با یک علامت دلار شروع شود، با فشردن کلید tab ، پوسته فرمان آنرا با یک متغییر محیطی کامل خواهد کرد.

- نام کاربری : در صورتی که متن بوسیله یک کاراکتر ~ شروع شود، پوسته فرمان آن را بوسیله یک نام کاربری کامل خواهد کرد.

- دستورات، نامهای مستعار یا توابع : در صورتی که متن با یک کاراکتر عادی شروع شود، پوسته فرمان آنرا بوسیله یک دستور، نام مستعار یا تابع کامل خواهد کرد.

- نام میزبان : در صورتی که متن با یک علامت @ شروع شود، پوسته فرمان آنرا بوسیله یک نام میزبان که از فایل etc/hosts می خواند، کامل میکند.

مواقعی وجود دارد که برای کامل کردن یک فرمان چندین گزینه وجود دارد . مثلا چندین متغییر محیطی وجود دارد که با حرف P شروع میشود. در این موارد در صورتی که شما دوبار کلید Tab را فشار دهید و یا کلیدهای Esc+? را فشار دهید، تمام حالتهای ممکن به شما نشان داده میشود :

$ echo $P<tab><tab> or <Esc+?>

$PATH $PPID $PS1 $PS4

$PIPESTATUS $PROMPT_COMMAND $PS2 $PWD

 

فراخوانی مجدد یک فرمان

پس از اینکه یک دستور را تایپ کردید، همانطوری که قبلا گفتم این دستور بطور کامل در تاریخچه پوسته فرمان ذخیره میشود. برای نمایش محتویات تاریخچه پوسته فرمان میتوانید از دستور history استفاده کنید. در صورتی که پس از آن یک عدد اضافه کنید، به تعداد آن عدد دستورات تایپ شده را نشان خواهد داد :

$ history 5

1023 ls
1024 cd Fonts/

1025 man more

1026 date

1027 history 5

برای فراخوانی دستورات تایپ شده میتوانید از روشهای زیر استفاده کنید:

-کلیدهای مکان نما : از کلیدهای بالا و پایین مکان نما میتوانید برای حرکت کردن در لیست تاریخچه استفاده کنید. بجای آن از کلیدهای Ctrl+n و Ctrl+p نیز میتوانید استفاده کنید.

-کلیدهای Ctrl+r: برای جستجوی آخر به اول یک رشته در تاریخچه استفاده میشود. برای مثال با تایپ یک یا چند حرف، دستوری که دارای آن حروف است نمایش داده میشود.

-کلیدهای Ctrl+s: مشابه بالا ولی جستجو بصورت اول به آخر صورت میگیرد.

روش دیگری که میتوانید از آن برای کار کردن با فرامین استفاده کنید، دستور fc است. با استفاده از این دستور، که پس از آن میتوانید شماره دستور مورد نظر در تاریخچه یا بازه ای از شماره ها را ذکر کنید، این دستورات در یک ویرایشگر متنی باز میشوند که میتوانید آنها را ویرایش کرده و خارج شوید. برای مثال دستور زیر دستورات ۱۰۰ ام تا ۱۵۰ ام تاریخچه را در ویرایشگر باز خواهد کرد :

$ fc 100 150

لیست تاریخچه در فایلی به نام .bash_history که در دایرکتوری خانگی شما قرار دارد، ذخیره میشود و در آن تا ۱۰۰۰ دستور نگهداری میشود.

منبع : technotux