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

 

ظاهر پوسته فرمان :

 

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

[alan@memphis home]$

امکان نمایش کارکترای مورد نیازتان بجای کاراکترهای فوق وجود دارد . چگونگی این کار بعداً شرح  داده خواهد شد . محیط پوسته فرمان امکانات زیادی دارد .

 

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

 

نکته : درصورتی که هنگام راه اندازی سیستم بجای پوسته فرمان محیط گرافیکی لینوکس اجرا میشود، برای تایپ فرامین پوسته باید از konsole یا  terminal  استفاده کنید. میتوانید در منوی run فرمان xterm را نیز تایپ کنید .

 

در مثالهای زیر علامتهای $,# نشان دهنده اعلان فرمان می باشند . پس تایپ هر فرمان باید کلید ebter را فشار دهید و خروجی آن فرمان در خطوط پس از آن نمایش داده خواهد شد.

 

بررسی نشست ورود به سیستم :

 

هنگامی که وارد سیستم لینوکس می شوید برای سیستم دارای یک هویت خاص هستید. این هویت شامل نام کاربری شما ، نام گروه شما ، شماره کاربری شما وشماره گروه شماست . همچنین لینوکس اطلاعات زمان ورود به سیستم ، مدت حضور، مدت بیکاری ومحل ورود شما به سیستم را نگهداری می کند. ( حواستان را جمع کنید !)

 

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

$id

 

Uid=500(alan)gid=500(alan)groups=500(alan)

 

خروجی فرمان نشان میدهد که نام کاربر alan بوده که عضو گروه alan است وشماره های کاربری وگروه آن 500 می باشد.

 

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

$who

 

Alan :0apr2308:46

همچنان که می بینید در خروجی نام کاربر جاری ، زمان وتاریخ ورود به سیستم نشان داده شده است.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

تصویر 1 برنامه konsole محیط kde

 

 

بررسی دایرکتوری ها ومجوزهای فایلها :

 

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

 

$pwd

 

/usr/bin

 

در مثال بالا مسیر جاری usr/bin است . برای یافتن مسیر دایرکتوری خانگی خود فرمان زیر را تایپ کنید :

 

$echo $home

/home/alan

 

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

 

$cd

 

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

 

$is-ia/homa/alan

 

Total 46740

 

Drwx ——–47alan alan 4096 apr2311.09

 

Drwxr-xr-x8root root 4096 mar 1217:51

 

-rw—– 1 alan alan 616581 apr 1823:29 779- red _hat_linux_9.tar.gz

 

Drwxr-xr-x2alan alan 4096mar2011:15. acrobat

 

Drwx—— 2 alan alan 4096 mar 2011:15. adobe

 

Drwx——-2 alan alan 4096 mar 1217:04 .adonthell

 

Drwxr-xr-x2alan alan 4096 feb 1413:19. anjuta

 

-rw——– 1alan alan 18325 apr 2300:36 . bash _history

 

-rw-r—r—1 alan alan 24 aug 24 2002 . bash _logout

 

-rw-r—r—1 alan alan 191 aug 24 2002 .bash _profile

 

هنگامی که از سوئیچ 1 برای نمایش جزئیات بیشتر استفاده میکنید ، چیزی بیش از سایز فایلها ودایرکتوری ها نمایش داده می شود . دایرکتوری جاری (.)ودایرکتوری والد(.. ) در بالای لیست قرار می گیرند. یعنی در حقیقت نقطه نشان دهنده دایرکتوری home/alan  ودو نقطه نشان دهنده دایرکتوری /home است.

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

 

بررسی فعالیت سیستم :

 

لینوکس علاوه بر چند کاربره بودن ، سیستم عاملی است چند وظیفه (multitasking ) چند وظیفه بودن به این معنی است که برنامه های زیادی می توانند دریک زمان اجرا شوند . هر برنامه درحال اجرا یک پروسه نامیده میشود. لینوکس فرامینی برای نمایش پروسه های درحال اجرا، نمایش استفاده از منابع سیستمی ومتوقف کردن پروسه های در مواقع لزوم دارد.

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

 

$ps au

 

User pid %cpu%mem vsz rss tty stat start time command

 

Alan 11520.0 0.5 4476 1348 pts/0 s17:390:00 bash

 

Alan 1831 0.0 0.2 2580 664 pts/0 r 18:14 0:00 ps au

 

 

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

 

در مثال بالا ، چیز خاصی اتفاق نیافتاده است . خروجی نشان میدهد که کاربری به نام alan  از برنامه های ps , bash  در حال استفاده است . ستون tty  یا ترمینال نشان دهنده ترمینای است که کاربر با آن به سیستم وارد شده است و ستون stat  نشان دهنده وضعیت پروسه است r نشاندهنده پروسه درحال اجرا و s نشاندهنده پروسه درحال خواب می باشد.

 

ستون user  نام کاربری که پروسه را شروع کرده نمایش میدهد. هر پروسه توسط یک عدد یکتا به نام شماره پروسه (process id  ) مشخص می شود . ازاین شماره هنگام از میان بردن یا اصطلاحا kill کردن پروسه استفاده میشود . ستونهای cpu% و mem%  نشاندهنده سایزپروسه image به کیلو بایت ,rss یا resident set size  نشاندهنده سایز پروسه در حافظه است. ستون start نشاندهنده زمان آغاز پروسه و ستون time  نشاندهنده زمان سیستم استفاده شده برای پروسه است.

 

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

 

$ps aux/ less

 

قسمت less به این دلیل به فرمان اضافه شده است که درصورتی که تعداد پروسه ها از یک صفحه بیشتر شد . امکان نمایش صفحه به صفحه آن وجود داشته باشد. به این فرایند لوله بندی (pipe ) فرمان گویند که به معنی هدایت خروجی یک فرمان برای ورودی فرمان دیگر است.

 

خروج از پوسته فرمان :

 

هنگامی که کارهای خود راانجام دادید ومایل بودید ازپوسته فرمان خارج  شوید کافی است  که کلیدهای ctrl+d را فشاردهید . درصورتی که درحالت متنی لینوکس را بوت کرده اید . کافی است فرمان exit , logout  را تایپ کنید.

 

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

 

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

 

قبل از اینکه آیکونها و پنجره ها روی صفحه کامپیوترها پدیدار شوند، کاربران برای کارکردن با کامپیوترها باید فرمانهایی را تایپ می کردند. در سیستمهای مبتنی بر یونیکس که لینوکس هم یکی از آنهاست . برنامه ای که برای تفسیر ومدیریت فرمانها ایجاد شده است . پوسته فر مان (command shell ) نام دارد.

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

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

پوسته فرمانی که دراین راهنما توضیح داده خواهد شد. Bash  نام دارد. نام آن برگرفته از bourne again shell  است . پوسته bash  از نخستین پوسته سیستمهای یونیکس که sh  یا bourne shell نام داشت . ایجاد شده است ویکی از پر کاربرد ترین پوسته های فرمان به شمار می رود. البته پوسته های دیگری نیز وجود دارند که از آنها استفاده می شود که می تواند از آنها csh , cshell که در سیستمهای یونیکس bsd  استفاده می شودو korn shell ,ksh  که بیشتر در unix system v  استفاده می شود. نام برد . لینوکس همچنین دارای پوسته های ash.tcsh  نیز می باشد.

 

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

 

نکته : برای نمایش صفحه manual  هر فرمان کافی است درخط فرمان لینوکس دستور زیر را تایپ کنید:

 

$ man <command >

 

در لینوکس پوسته bash  کاملا سازگاربا پوسته فرمان sh  می باشد.

 

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

 

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

 

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

 

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

 

متغیرهای محیطی (variables environment  ) : خود پوسته اطلاعاتی رادر بردارد که برای کاربر مفید است به این اطلاعات متغییرهای محیطی می گویند. برای مثال متغییر shell نمایانگر نوع پوسته مورد استفاده sp1  نشاندهنده اعلان فرمان و mail نشاندهنده محل صندوق پستی شما است :

 

$echo $shell

/bin/bash

 

$echo$mail

 

/var/spool/mail/alan

 

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

 

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

 

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

 

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

 

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

 

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

برای مثال برای اجرای دستور date  :

 

$/bin/date

 

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

 

$echo$path

 

/usr/local/bin:/usr/bin/:/bin/usr/x11r6/bin:/home/alan/bin

 

خروجی فرمان فوق مسیرهای تعریف شده برای پوسته فرمان رابرای یک کاربر خاص نشان می دهد. همانطور که می بینید دایرکتوری ها توسط یک کلون از هم جدا شده اند. بیشتر دستوراتی که همراه با لینوکس ارائه می شوند در دایرکتوری های usr/locl/bin/usr/bin,bin قراردارند. دستورات گرافیکی که با محیطهای گرافیکی استفاده میشوند در مسیرهای usr/x1r6/bin/usr/bin/x11 قراردارند . آخرین دایرکتوری نشان داده شده در خروجی فرمان در دایرکتوری خانگی قراردارند.

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

$type bash

 

Bash is/bin/bash

 

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

 

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

 

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

 

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

 

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

 

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

 

در صورتی که در تایپ یک دستور مرتکب اشتباه شده اید. می توانید به آسانی آنرا فراخوانی کرده ومجددا پس از ویرایش آنرا اجراکنید. می توانید ازبرخی کلیدهای میانبر برای راحت ترکردن این کاراستفاده کنید. مثلا کلیدهای ctrl+a اشاره گر رابه ابتدای فرمان وctrl+e به انتهای فرمان حرکت می دهد. همین کار راکلیدهای end,home نیز انجام می دهند. ویرایش کردن فرمان مانند کارکردن در ویرایش گرهای متنی است وبسیارساده است پس اتمام ویرایش دستور کافی است کلید enter رابرای اجرای آن فشاردهید.

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

 

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

 

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

 

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

 

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

 

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

 

مواقعی وجود دارد که برای کامل کردن یک فرمان چندین گزینه وجود دارد . مثلا چندین متغییر محیطی وجود دارد که با حرف p شروع می شود . دراین موارد در صورتی که شما دوبار کلید tab  را فشاردهید ویا کلیدهای Esc+؟ را فشاردهید.

تمام حالتهای ممکن به شما نشان داده می شود:

 

$echo$p<tab><tab>or <esc+?>

 

$path $ppid $ps1$ps4

 

$pipestatus$prompt_command $ps2 $pwd

 

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

 

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

 

$history5

 

1023 ls

 

1024 cd fonts/

 

1025 date

 

1027 history 5

 

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

 

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

 

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

 

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

 

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

 

$fc100150

 

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

 

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

 

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

 

لوله بندی فرامین (piping commands  )

 

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

 

$cat/etc/passwd/sort/more

 

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

 

Alan :x:500:500alan 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-x1 root root 626188 aug 242002/bin/bash

 

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

 

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

 

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

 

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

 

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

 

$echo $user

 

Alan

 

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

 

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

 

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

 

  • Bash : محتوی مسیر کامل برنامه پوسته فرمان است به طور معمول bin/bash
  • Bash_version : شماره نسخه برنامه پوسته فرمان را نشان می دهد.
  • Euid: شماره شناسایی موثر کاربر فعلی را نمایش می دهد . این مقدار هنگامی که پوسته شامل می شود . تخصیص داده می شود.
  • Histfile : محل فایل تاریخچه فرامین را نمایش می دهد.
  • Histfilesize : تعداد فرامینی که تاریخچه درخود نگهداری میکند معمولا1000 است .
  • Histcme: شماره فرمان جاری رادرتاریخچه نشان می دهد.
  • Home : دایرکتوری خانگی کاربر جاری را نشان می دهد.
  • Hosttype: نوع معماری پردازنده کامپیوتر را نشان می دهد.
  • Mail : مسیر صندوق پستی کابر جاری را نشان میدهد . معمولا به نام شمادر var/spool/mail قراردارد.
  • Oldpwd : مسیر قبل از دایرکتوری جاری فعلی را نشان میدهد.
  • Ostype : نوع سیستم عامل را نشان میدهد در مورد ما خروجی به صورت linux-gnu خواهد بود.
  • Path : لیست دایرکتوری های معرفی شده را نشان می دهد برای اجرای یک فرمان در این دایرکتوری ها جستجو صورت می گیرد.
  • Ppid: شماره پروسه ای که پوسته فرمان را شروع کرده است نمایش می دهد.
  • Prompt_command : دستوری راکه هر بار پیش از نمایش اعلان فرمان اجرا می شود را نشان می دهد.
  • Ps1 : مقدار اعلان فرمان را تخصیص می دهد . مقادیر زیادی وجود دارد که آنها را می توانید در اعلان فرمان خود بگنجانید مانند تاریخ ، زمان ، نام کاربر ، نام کامپیوتر …. برخی اوقات یک فرما به اعلان های بیشتری نیاز دارد که می توانید از متغییرهای ps2,ps3  برای این کار استفاده کنید دراین مورد بیشتر توضیح خواهم داد.
  • Pwd : دایرکتوری جاری را نشان می دهد.
  • Random : با مراجعه به این متغییر یک شماره تصادفی بین 0و9999 تولید می شود.
  • 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  که به خروجی ترمینال نیازی ندارد درحال اجرای می باشد.

 

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

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

 

در ادامه مثالی که در بالا ذکر شد . برای برگرداندن برنامه 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 _ logout , bashrc . bash _ profile  موجود در دایرکتوری های خود راتغییر دهد.

 

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

 

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

 

اعلان فرمان شما از تعدادی کاراکتر تشکیل شده است که هرگاه که به نمایش در می آید. معنی آن این است که پوسته فرمان آماده دریافت فرمان جدید است . محتویات اعلان فرمان در متغییراعلان فرمان در متغییر محیطی ps1 قراردارد. درصورتی که پوسته فرمان شما به ورودی بیشتری نیاز داشته باشد . ازمقادیر ps2,ps3. ps4  نیر استفاده خواهد شد.

 

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

 

[alan @memphis alan ]$

 

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

 

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

 

 

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

 

Export ps1 = [\t\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 رابه تنهایی تایپ کنید لیستی از اسامی مستعاری که تنظیم کرده اید نمایش داده می شود. توجه داشته باشید که اسامی مستعار در یک فایل پیکربندی ذخیره شده وبا بستن پوسته فرمان از بین نمی رود.

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

  • Bin : فرامین عمومی سیستم عامل لینوکس در این دایرکتوری قراردارند . مانند chmod , sort . ls .
  • Dev : حاوی نقاط دسترسی به ابزارهای سخت افزاری کامپیوتر شما است . مانند ترمینالها (tty ) دیسکهای فلاپی (fd ) دیسکهای سخت (hd ) و کاربران بطور معمول برای دستیابی به این دستگاهها از نامهای  آنها استفاده می کنند.
  • Etc: حاوی برخی فایلهای پیکربندی سیستم است.
  • Home: دایرکتوری های کاربران یک سیستم لینوکس در این دایرکتوری قرارمی گیرند.
  • Mnt: محلی را برای متصل کردن ابزارها ودیسکها مانند فلاپی cd- rom و درایوهای شبکه ایجاد می کند.
  • Root : دایرکتوری خانگی کاربر ریشه است.
  • Sbin : دستورات مدیریتی سیستم در این دایرکتوری قرارمی گیرند.
  • Tmp: محل قرارگیری فایلهای موقت
  • Usr: محل قرارگیری مستندات سیستم بازی ها فایلهای گرافیکی کتابخانه ها وبسیاری چیزهای دیگر .

 

 

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

 

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

 

 

ایجاد فایلها و دایرکتوری ها :

 

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

 

  • Cd : این دستور مسیر جاری را به مسیر دیگری که تعیین می کنید تغییر میدهد حتما با مشابه این دستور در داس کار کرده اید.
  • Pwd : این دستور مسیر دایرکتوری فعلی را چاپ می کند.
  • Mkdir : این دستور یک دایرکتوری ایجاد می کند.
  • Chmod: این دستور برای تغییر مجوزهای فایل ودایرکتوری بکار می رود.
  • Is : این دستور محتویات یک دایرکتوری یا مسیر را چاپ می کند. مشابه دستور dir در داس.

 

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

 

  1. برای حرکت به دایرکتوری خانگی خود از هرجا کافی است دستورcd را تایپ کنید :

 

  1. برای حصول اطمینان از قرارگیری در دایرکتوری خانگی خود دستور pwd را تایپ کنید:

 

$pwd

 

/home/alan

 

  1. با استفاده از دستور mkdir یک دایرکتوری به نام test ایجاد کنید:

 

$mkdir test

 

  1. مجوزهای دایرکتوری ایجاد شده را با استفاده از دستور Is بررسی کنید:

 

$Is –Id test

 

Drwxrwxr- x 3 alan 4096 may 1720:14 test

 

خروجی فرمان نشان می دهد که test یک دایرکتوری بوده ومالک آن کاربری به نام alan  است که به گروه alan  تعلق داشته وآخرین بار در 17 ام می در ساعت 14:20 دقیقه تغییر کرده است . تصور کنید می خواهید مجوزهای این دایرکتوری  را طوری تنظیم کنید که افراد دیگری که از این کامپیوتر استفاده می کنند نتوانند محتویات دایرکتوری شما رادیده و استفاده کنند . دراین مورد بیشتر توضیح خواهم داد.

 

  1. اکنون دستور زیر را تایپ کنید :

 

$chmod 700 test

 

این دستور به شما تمام مجوزهای استفاده وتغییر دایرکتوری را می دهد  درحالی که به دیگران اجازه حتی مشاهده محتویات این دایرکتوری  نیز داده نخواهد شد . اگر مجددا دستور Is  که در بالا تایپ کردید این بار مجوزها بصورت —–drwx نمایش داده خواهد شد.

 

  1. در این مرحله با استفاده از دستور cd به دایرکتوری test وارد شوید:

 

 

$cd test

 

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

 

  • متغییر محیطی home
  • علامت ~

 

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

 

$ ~

 

/home/ alan

 

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

 

$~ chris

 

/home/ chris

 

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

 

  • یک نقطه : نشاندهنده مسیر جاری است مثلا :

 

$cp/usr/local /mygame.

 

دستور بالا فایل mygame را به مسیر جاری ( که دایرکتوری خانگی تان بود ) کپی می کند.

  • دو نقطه : نشاندهنده مسیر ما قبل است مثلا :

 

@my mygame

 

دستور بالا فایل mygame را به مسیر بالاتر دایرکتوری خانگی تان ( دایرکتوری home  ) منتقل می کند.

 

  • متغییر محیطی oldpwd : نشاندهنده دایرکتوری جاری قبل از دایرکتوری فعلی است.

 

استفاده از کاراکترهای  ویژه وعملکردهای خط فرمان :

 

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

 

استفاده از کاراکترهای ویژه مخصوص نام فایلها:

 

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

 

  • علامت ستاره (*) : می تواند بجای هر تعدادی از کاراکترها قرارگیرد.
  • علامت سوال (؟) : می تواند یجای یک کاراکتر قرارگیرد.
  • علامت دو براکت ([….] ) : تمام کاراکترهای ذکر شده در براکت در انتخاب فایلها اثر می گذارند.

 

برای تمرین بکارگیری این کاراکترها به یک دایرکتوری خالی ( مانند دایرکتوری test که قبلا ایجاد گردید ) رفته وبا استفاده از دستور زیر دسته ای از فایلهای خالی را ایجاد کنید :

 

$touch apple banana grape grabprruit watermelon

 

حال برای درک بهتر چگونگی عملکرد کاراکترهای ویژه از دستور Is  استفاده می کنیم . به خروجی هر فرمان توجه کنید:

 

$Isa *

 

Apple

 

$Is g*

 

Grape

 

Grapefruit

 

$Is g*t

 

Grapefruit

 

$Is*e*

 

Apple grape grapefruit watermelon

 

$Is*n*

 

Banana watermelon

 

مثال نخست هر فایلی را که با کاراکترa شروع می شود را نمایش میدهد . مثال بعدی تمام فایلهایی راکه با g شروع می شوند نمایش میدهد . در مثال بعدی فایلهایی که با g شروع شده وبه t ختم می شوند نمایش داده می شوند ودر دو مثال بعدی فایلهایی که حاوی e,n هستند نمایش داده می شوند.

 

به چند مثال هم در مورد کاراکتر علامت سوال توجه کنید :

 

$Is???? E

 

Apple grape

 

$Isg???e*

 

Garpe grapefruit

 

در مثال اول فایلهایی که دارای 5 حرف بوده وحرف آخر آنها e  است نمایش داده می شوند . در مثال دوم فایلهایی که با g شروع شده وکاراکتر پنجم آنها e است را نمایش می دهد.

 

حال مثالهایی درمورد براکتها :

 

$Is [abw ]*

 

Allpe banana watermelon

 

 

$Is [agw]* [ne]

 

Apple grape watermelon

 

در مثال نخست تمام فایلهایی که  با کاراکتر a شروع می شود را نمایش می دهد . مثال بعدی تمام فایلهایی را که با g شروع می شوند نمایش میدهد. در مثال بعدی فایلهایی که با g شروع شده و به t ختم می شوند نمایش داده می شوند ودر دو مثال بعدی فایلهایی که حاوی n,e  هستند نمایش داده می شوند.

 

به چند مثال هم در مورد کاراکتر علامت سوال توجه کنید :

$Is ????e

 

Apple grape

 

$Is g???e*

 

Garpe grapefruit

 

در مثال اول فایلهایی که دارای 5 حرف بوده وحرف آخر آنها e است نمایش داده می شوند . در مثال دوم فایلهایی که با g شروع شده وکاراکتر پنجم آنها e است را نمایش می دهد.

 

حال مثالهایی در مورد براکتها :

 

$Is [ abw ] *

 

Allpe banana watermelon

 

$Is [agw ] * [ ne]

 

Apple grape watermelon

 

در مثال تخست تمام فایلهایی که با a. b. w  شروع می شوند نمایش داده می شود. در مثال دوم تمام فایلهایی که با a. g. w  شروع شده و به n. e  ختم می شوند . نمایش داده می شوند.

 

استفاده از کاراکترهای ویژه مخصوص هدایت فایلها :

 

دستورات ورودی خود را از ورودی استاندارد دریافت کرده وروی خروجی استاندارد نمایش می دهند . با استفاده از لوله بندی که قبلا شرح داده شد. می توانستیم خروجی یک دستور را به ورودی دستور دیگر متصل کنیم . با فایلها می توانید از کاراکتری های کوچکتر از (>) و بزرگتر از (<) برای هدایت داده ها از / به فایلها استفاده کنید . این کاراکترها عبارتند از :

 

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

 

 

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

 

$mail root < ~ /. Bashrc

 

$ nroff – man /usr/ share/man/ man 1 /chmod .1 *>/ tmp/chmod

$echo I finished the project on $ (date) >> ~/ projects

 

در مثال نخست محتویات فایل bashrc  در دایرکتوری خانگی در یک پیام پست الکترونیک به کاربر root  کامپیوتر ارسال می شود. در مثال دوم صفحه کمک دستور chmod  با استفاده از دستور nroff فرمت بندی شده وخروجی به فایل tmp/chmod ارسال می شود . مثال آخر نیر باعث خواهد شد تا خط زیر به فایل projects  که در دایرکتوری خانگی کاربر وجود دارد اضافه شود:

 

I finished the project on sun may 2514:25:36 Irst 2003

 

درک مجوزهای فایل (file permissions  ):

 

پس از اینکه مدتی با لینوکس کار کردید مطمئنا به پیامهایی مانند permission denied  برخورد خواهید کرد . مجوزهای فایلهای و دایرکتوری ها در لینوکس به این علت ایجاد شده اند که از دسترسی کاربران به فایلها واطلاعات خصوصی کاربران دیگر جلوگیری به عمل آورده واز فایلهای سیستمی در مقابل آسیب دیدگی حفاظت کند. به این علت به هر فایل 9 بیت اضافه می شود که معرف چگونگی دسترسی شما ودیگران به آن فایل خواهد بود. این بیتها بصورت rwxrwxrwx نمایش داده می شوند. نخستین سه بیت تعیین کننده دسترسی مالک فایل است . سه بیت بعدی برای گروه مالک و سه بیت بعدی برای تعیین نحوه دسترسی دیگران است. R نشانگر خواندن w نشانگر نوشتن و x نشانگر اجازه اجرا هستند. در صورتی که بجای یکی از این حروف علامت دش (-) نمایش داده شود. به این معنی است که این اجازه غیر فعال است . برای نمایش مجوزهای هر فایل یا دایرکتوری می توانید از دستور Is-Id  استفاده کنید . به مثال زیر توجه کنید :

 

$Is-Id ch 3 test

 

– rw-rw-r—3 alan alan 4096 may 2215:11 ch3

 

Drwxr- xr-x-3 alan alan 4096 may 1720:14 test

 

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

 

در صورتی که شما مالک یک فایل باشید. می توانید مجوزهای آنرا مطابق نیاز خودتان تنظیم کنید. این کار بوسیله دستور chmod امکان پذیر است. برای هریک  از مجوزهای خواندن نوشتن واجرا عددی در نظر گرفته شده است. خواندن 4 نوشتن 2 و اجرا 1 بنابراین برای اینکه تمام مجوزها را به خودتان بدهید. مقدار سه بیت نخست باید 7 تعیین شود. (4+2+1) . برای گروه وسایرین نیزمی توانید بنا به نیازشان مجوز تعیین کنید. مجوزها بین 7 (مجوز کامل ) و 0 ( هیچ مجوزی ) متغییر هستند. برای روشن شدن بهتر مطلب به مثالهای زیر توجه کنید :

 

$chmod 777 files = rwxrwxrwx

 

$chmod 755 files = rwxr- xr- x

 

$ chmod 644 files = rw- r—r—

 

$ chmod 000 files = ——–

 

هنگامی که یک فایل ایجاد می کنید . مجوز پیش گزیده آن 644 خواهد بود. در مورد دایرکتوری این مجوز 755 است . این مقادیر پیش گزیده توسط دستور umask  تعیین می شود برای نمایش مقدار umask  دستور زیر را تایپ کنید:

 

$ umask

 

022

 

کافی است اعدادی که در دستور umask مشاهده می کنید. از 7 کم کنید . با این کار مقادیر پیش گزیده را برای دایرکتوری مشاهده خواهید کرد. درمورد فایلها باید این اعداد را از 6 کم کنید . زیرا در مورد فایلها به طور پیش گزیده مجوز اجرا ( با مقدار 1 ) غیر فعال است.

 

نکته : برای تغییر تعداد زیادی از فایلها در یک زمان باید از گزینه R دستور chmod  استفاده کنید . این امکان وجود دارد که با یک فرمان مجوزهای تمام فایلها ودایرکتوری های درون یک ساختار دایرکتوری را تغییر دهد. برای مثال برای تغییر مجوزهای تمام فایلها ودایرکتوری ها موجود در مسیر tmp/test می توانید دستور زیر را تایپ کنید:

 

$chmod – R 777/tmp / test

 

هشدار : گزینه R دستور chmod هنگام اعطا مجوزهای کامل واعطا مجوز اجرا بسیار خوب است . ولی در صورتی که دستور بالا را بجای مقدار 777 با مقدار 644 اجرا کنید . دیگر نمی توانید به هیچ یک از دایرکتورهای موجود در آن مسیر وارد شوید.

 

انتقال کپی وپاک کردن فایلها :

 

کپی انتقال و پاک کردن فایلها بسیار آسان است . برای انتقال یک فایل باید از دستور mv استفاده کنید. برای کپی کردن فایلها دستور cp وجود دارد وبرای پاک کردن فایلها نیز دستور rm قابل استفاده است. به مثالهای زیر توجه کنید:

 

$mv abc def

 

$mv abc~

$cp abc def

 

$cp abc ~

 

$ rm abc

 

$rm *

 

دستور نخست نام فایل abc  را به def  تغییر می دهد . دستور دوم این فایل را به دایرکتوری خانگی کاربر (~ ) منتقل می کند . دستور سوم فایل abc  را به فایل def  کپی کرده ودستور چهارم آنرا در دایرکتوری خانگی کاربر کپی می کند دستور پنجم فایل abc  را پاک می کند درحالی که دستور ششم تمام محتویات دایرکتوری جاری را پاک خواهد کرد .

 

نکته : برای کاربر ریشه دستور rm به کمک دستور alias  طوری تنظیم شده است .که برای پاک کردن فایلها حتما از کاربر ریشه سوال شود. این اقدام از پاک  شدن تصادفی تعداد زیادی از فایلها  در اثر اشتباره جلوگیری به عمل میاورد.

 

 

مقدمه و معرفی shell

 

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

 

برای شما تابحال اتفاق افتاده که بخواهید یک یا چند کار رادر محیط متنی وبا استفاده از خط فرمان هرروز یا روزی چند با راجرا کنید. این کار مدت زیادی از وقت شما را می گیرد. اما شما می توانید چندین دستور رابا استفاده از یک برنامه ساده دریک فایل متنی ذخیره کنید وبا هربار اجرای آن فایل همه دستورات مورد نظر شما اجرا شود . به این برنامه نویسی ( برنامه نویسی شل (shell programming  ) و به آن فایل یک اسکریپت شل (shell seript  ) گفته می شود.

 

اسکریپت نویسی در لینوکس کارها را بسیار آسان کرده و سرعت کارها را بالا می برد . پس باید ابتدا کمی بیشتر در مورد شل ها بدانیم :

 

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

 

Bash (bourne – again shell )

 

Esh ( c shell )

 

Tesh

 

Ksh ( korn shell )

 

از بین شل ها معمولا از (bash  ) استفاده می شود برای اینکه مطمئن شوید که شل اجرایی روی سیستم شما چیست دستور زیر را در خط فرمان وارد کنید :

 

Seat /ete/shells  وبرای اینکه شماره نسخه bash که از آن استفاده می کنید را بفهمید از دستور secho $BASH _VERSION  در خط فرمان استفاده کنید .

 

(برای اطلاعات بیشتر در مورد bash  در خط فرمان تایپ کنید : $man bash  )

 

شروع کار با bash shell

 

برای شروع بهتر است که با یک اسکریپت  ساده شروع کنیم که عبارت salam  را نمایش دهد . برای این کار باید این برنامه کوچک رادر یک ویرایشگر متن مثل gedit  یا vi  بنویسید و با نام salam . sh  ذخیره کنید .

 

#!bin/bash /

 

#salam .sh

 

Echo”salam”

 

در مرحله بعد باید این فایل را قابل اجرا کنید یعنی mode آن را تغییر دهید.

 

برای این منظور می توانید از دستور chmod  استفاده کنید.

 

در پنجره xtrem  این دستور را تایپ کنید :

$chmod + x salam . sh

 

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

 

حال این فایل قابل اجرا شده وبرای اجرای این فایل هم کافیست که تایپ کنید :

/salam . sh

اگر درست عمل کرده باشید. عبارت salam نمایش داده خواهد شد.

حال کمی به عقب برگردیم و ببینیم که چه کرده ایم.

 

خط اول برنامه با # شروع شده است . این کاراکتر به شل می گوید که این سطریک سطر توضیحی (comment  ) است و علامت تعجب (!) که بعد از آن است . می گوید که بعد از آن را اجرا کند. یعنی بعد از علامت تعجب در خط اول شما باید محل مفسر خط فرمان خود یعنی bash  را بدهید تا سیستم بداند برای اجرای بقیه دستورات از چه نوع شل ودرکجا استفاده کند.

 

برای فهمیدن محل bash  دستور روبرو رادرخط فرمان وارد کنید :

Where is bash

 

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

 

لذا تمامی کاری که انجام داده ایم مربوط به خط سوم است . (echo salam  ) واضح است که بعد از دستور echo هر عبارتی که بین دو کاراکتر(“) بیاید. روی صفحه چاپ می شود. مثلا اگر نام خود را به جای salam  بنویسید. همان نام چاپ می شود.

 

معرفی وکار با متغیرها

 

Bash  وسایر شل ها به عنوان یک زبان دارای تمام قابلیتها از متغیرها پشتیبانی می کنند. یک متغیر (variable  ) مکانی در حافظه است که شمابه bash  می گویید برای محتوایی که شما تعیین می کنید. آنجا را رزرو کند. این نوع یک متغیر تعریف شده توسط کاربر (user-defined variable  ) نامیده می شود. کابر باید تصمیم بگیرد که چه چیزی در آن قسمت از حافظه نگه داری شود.

 

فرض کنید می خواهید متغیری برای ذخیره نام خودتان داشته باشید. در اغلب زبانها این متغیر رشته ای (string  ) نامیده می شود. در اینجا شما باید متغیر را نوشته سپس مقداری رابه آن نسبت دهید. مثلا بنویسید : myname = mohammad

 

دراینجا نام متغیر myname  ومقدار نسبت داده شده به آن mohammad  است.

 

#!/bin /bash

 

# name .sh

 

Myname = “mohammad “

 

Echo $myname

 

یا اگر بخواهید می توانید یک مقدار عددی به متغیر بدهید : count =56  ( دراینجا هم count  متغیر و 56 نسبت داده شده به متغیر است. )

 

در bash  ازهر رشته حرفی – عددی به عنوان نام متغیر می توان استفاده نمود. زیرا در bash  و سایر شل های موجود لازم نیست . ابتدا متغیر را تعریف کرده و سپس از آن استفاده نمود. مثلا در برخی زبانهای برنامه نویسی مثل c++  یا  visual basic  باید ابتدا نوع متغیر را تعریف کرده سپس از آن استفاده کرد ولی در bash همچین کاری لازم نیست.

 

نکته : برای رجوع به متغیر دو راه وجود دارد یکی به وسیله نسبت دادن یعنی اگر بخواهیم نام mohammad  رابه متغیر myname  نسبت دهیم . باید اینگونه بنویسیم :

 

Myname = “mohammad”

 

یکی هم اینکه برای رجوع به متغیر از مقدار آن استفاده کنیم.

در bash  برای گرفتن محتوای متغیر قبل از نام متغیر از $ استفاده می شود دراین صورت به شل می گویید که می خواهید مقدار متغیر برگردانده شود . برای رجوع به محتوای متغیر باید بنویسید :  $ myname

 

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

 

#!/bin /bash

 

#parameters . sh

 

Echo “first para = $1”

 

Echo “second para= $2”

 

دراین برنامه 1و2 متغیر هستند که ما از شل خواسته ایم که محتوای آنها را چاپ کند یعنی اگر این برنامه رابه کمک دو پارامتر اجرا کنید . ( یعنی بنویسید : parameters . sh hello  man  ) عبارت زیر را خواهید دید:

 

First para = hello

 

Second para = man

 

در آخر این قسمت هم انواع متغیرها را معرفی می کنیم :

 

متغیرهای کاربر (user variables ) این دسته از متغیرها به وسیله کاربر تعریف می شوند و در فایل های اسکریپت می توانند تغییر کنند.

 

متغیرهای محیطی ( environmet variables  ) : این ها بخشی از محیط سیستم هستند. لازم نیست آنها راتعریف کنید. آنها می توانند در داخل برنامه مانند هر متغیر دیگری مورد استفاده قرارگیرند و برخی از آنها می توانند تغییر کنند مثل path  که در صورت نیاز می توان آنرا تعریف کرد یا تغییر داد.

 

متغیرهای داخلی (built – in variables  ) این متغیرها به وسیله سیستم در اختیار شما قرارمی گیرند و به هیچ وجه نمی توانند تغییر کنند.

 

همانطور که گفتیم متغیرهای داخلی و متغیرهای محیطی توسط سیستم ارائه می شوند. البته بعضی از آنها را نمی توان تغییر داد ولی بعضی هم قابل تغییرند . به این تغییرها متغیرهای سیستمی (system variables  ) می گویند که در سیستم ما تعریف شده هستند. در اینجا به چندی از مهمترین متغیرهای سیستمی و مثال هایی اشاره شده است:

 

 

 

معنی (کاربرد ) متغیر سیستمی
نام شل مورد استفاده ما

شماره نسخه شل مورد استفاد ه ما

شماره ستون صفحه نمایش ما

دایرکتوری خانه شما (دایرکتوری اصلی )

شماره ستون صفحه نمایش ما

نام ورودی (loggin name  )

سیستم عامل شما

تنظیمات prompt ما

دایرکتوری جاری ما

نام شل مورد استفاده ما

نام ورودی کسی که به pc وارد شده (username  )

BASH =/bin /bash

BASH _VERSION=1.14.7(1)

COLUMNS =80

HOME=/home/yourusername

LINES=25

LOGNAME =student

OSTYPE=linux

PS1 =[\U@\H\W]\S

PWD =/home/yourusername / temp

SHELL=/bin /bash

USERNAME =yourusername

 

 

 

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

 

$echo $OSTYPE

 

(نوع سیستم عامل شما را چاپ می کند )

 

دایرکتوری خانه را نشان می دهد )

$echo $ HOME

 

نکته : برای احتیاط از تغییر دادن این متغیرهای سیستمی خودداری کنید چون امکان دارد مشکلاتی را برای شما پیش آورد.

 

قواعد نامگذاری متغیرها :

 

  1. نام متغیر باید با حروف الفبا شروع شود و می تواند شامل حروف اعداد وتنهاعلامت ( _ ) باشد.
  2. نه در نام متغیر و نه در مقدار متغیر نباید از space استفاده شود.
  3. متغیرها به حروف بزرگ و کوچک حساسند . درست مثل نام فایلها و دستورات در لینوکس
  4. شما می توانید متغیرهای پوچ تعریف کنید . مثلا :

 

( برای تعریف متغیر از این دستور نیز استفاده می شود )                               $  vech =

$ vech =

  1. از علائمی مثل : ؟ و * و غیره نباید در نام متغیر استفاده شود.

 

عملگرهای ریاضی و استفاده از دستور read

عملگرهای ریاضی :

ما در bash  همانند دیگر برنامه نویسی ها می توانیم از عملگرهای ریاضی استفاده کنیم به این شکل :

 

$expr

عدد دوم       عملگرریاضی       عدد اول

$expr 6+3

 

عملگرهای قابل استفاده در bash  عبارتند از :

 

جمع           +

تفریق           –

تقسیم             /

با قیمانده          %

ضرب            *\

 

اگر بخواهید حاصل این عمل ها را با دستور echo چاپ کنید باید بنویسید :

 

Echo expr 6+3

 

توجه کنید علامتی که د وطرف دستور بعد از echo  گذاشته شده است ( ) است یعنی دکمه بالای دکمه tab  یا همان دکمه ~

 

این علامت در بعضی جاهای دیگر موجب اجرای دستورات می شود. مثلا اگر بنویسید :

Echo “ today is date “

دقیقا همین جمله چاپ خواهد شد ولی اگر بنویسید :

 

Echo “ today is date “

عبارت today is چاپ شده و درجلوی آن تاریخ همان روز چاپ می شود.

 

پایان وضعیت :

 

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

 

دستور read  :

 

دستور read  برای گرفتن اطلاعات از کاربر وذخیره آن دریک متغیر استفاده می شود وبدین صورت استفاده می شود:

 

متغیر آخر – متغیر دوم. متغیر اول                   read

به برنامه زیر توجه کنید :

 

$vi say H

 

# seript to read your name

 

Echo “ what is your first name “.

 

Read finame

 

Echo “ hello $fname . be lucky “

 

به این شکل آن را اجرا کنید :

$chmod 755 say H

 

$/ say H

 

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

 

مثلا اگر نام خود را mohammad  وارد کنید سیستم پاسخ می دهد :

 

Hello mohammad . be lucky

پردازش خط فرمان در bash shell

 

این دستور را در خط فرمان اجرا کنید : $ls long _story  ( فرض می کنیم که فایل “long_story “  موجود نباشد ) اجرای این دستور موجب می شود پیامی مثل این را ببینید :

 

Long _ story : no such dile or directory

 

همانطور که میدانید ls  یک دستور واقعی  شل است حال باید بدانیم که وقتی این دستور را اجرا می کنیم چه اتفاقی می افتد؟

 

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

 

$tail + 10 myf

در اینجا tail  نام فرمان و myf , +10  آرگومان های آن هستند.

 

بعضی از فرمان های مهم و آرگومان های آنها بدین قراراست:

 

آرگومان های مربوطه  تعداد آرگومان ها ($#  )           فرمان
Foo

y. y.bak

y.bak , y. okay

-10 ,myf

Raj

-r,-n , myf

1

2

2

2

1

3

0

0

 

Ls

Ep

Mv

Tail

Mail

Sort

Date

Clear

 

 

توجه : علامت $# تعداد آرگومان های تعیین شده در خط فرمان رادرخود نگه می دارد و علامت های $@ , $*  نیز به همه آرگومان های درست استفاده شده ( تست شده ) بر می گردد.

 

این خط فرمان را در نظر بگیرید : $myshell foo bar  در اینجا نام شل اسکریپت شما “myshell” اولین آرگومان خط فرمان foo  و دومین آرگومان bar  است.

 

در shell اگر بخواهیم به آرگومان های خط فرمان یا دستورات مراجعه کنیم . این گونه عمل می کنیم :

 

Myshel ___ $ 0

 

Foo ____ $ 1

 

Bar ____ $2

 

منظور از $* همین ( $0و $1 و $ 2 ) است که در بالا گفته شد.

 

برای مثال برنامه زیر را بنویسید و چگونگی دسترسی به آرگومان ها را مشاهده کنید :

 

$ videmo

 

#!/ bin /sh

 

# command line args

 

Echo “ total number of command line argument are $#”

 

Echo “ $0is seript name “

 

Echo “ $1 is first argument “

 

Echo “ $ 2 is second argument “

 

Echo “ all of them are : -$* or $ @”

 

Mode  این برنامه را اینگونه تغییر دهید :                         $ chmod 755 demo

و آنرا اجرا کنید :                                              $./ demo Hello world

این اسکریپت رادر دایرکتوری bin  در سیستم خود ذخیره و نگه داری کنید چون این اسکریپت بعدا لازم خواهد شد.

 

جملات شرطی و حلقه ها  :

 

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

 

دستور if  :

If ….. then …..else ….. fi

 

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

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

 

]  شرط [  if

 

]  دستور 1 [  then

 

] شرط [ elif

 

] دستور 2 [ then

 

] دستور 3[ else

 

Fi[finished ]

 

Bash  از فرمانی به نام test  برای کنترل محتوای متغیرها استفاده می کنند . از test  برای ارزیابی عبارات و باز گرداندن درست  )  true  ) یا غلط (false  ) بسته به پارامترهایی که به آن فرستاده می شود. در اسکریپت ها می توان استفاده نمود.

 

فرض کنید می خواهید برنامه ای بنویسید که ببیند آیا نام mohammad  در متغیری به نام $name  ذخیره شده است یاخیر ودر صورتی که محتوای مورد نظر را نداشت عبارت  “youre not mohammad “  را چاپ کرده و خارج شود.

 

#!/ bin /bash

 

# if the n else loop to test value of $ name variable

 

If test “ $name “ = mohammad

 

Then

 

Echo “ hi mohammad “

 

Else

 

Echo “ youre not mohammad “

 

Fi

این برنامه کوتاه طرز استفاده از دستور if….. then ….. else رابه شما نشان می دهد . البته این فقط یک مثال ساده است. با استفاده از این دستورات  کارهای بسیار جالبی می توان انجام داد.

 

دستور while  :

 

این دستور بر ای تکرار بخشی از برنامه تا زمانی که شرط خاصی برقرارباشد. مورد استفاده قرارمی گیرد. فرض کنید که قصد دارید جلوی کاربر رادرمقابل وارد کردن کلمه “superuser”  بگیرید . یک راه این است  که اگر کسی کلمه را وارد کرد. ازاو خواسته شود چیز  دیگری وارد کند.

 

ترکیب دستور while به این شکل است :  while ….. do….. done

 

برنامه مثالی که در بالا گفته شد به این صورت نوشته می شود :

 

#!/bin / bash

 

# chek login name

 

Echo “ enter your name “

 

Logname = “ superuser “

 

While test $ logname = “ superuser “

 

Do

 

Echo – n “ please enter another login name

 

Read  logname

 

Done

 

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

حلقه های در bash

 

در ادامه کار با دستورات  fi…… then ……fi  و حلقه ها حال به طور مختصر و سریع چند مورد از دستورات bash  که مربوط به حلقه ها می شود را شرح می دهیم :

 

  1. اگر بخواهیم از چندین if به صورت تودرتو استفاده کنیم . به صورت زیر عمل می کنیم:

 

شرط    if

 

Then

 

شرط if

 

Then

 

دستورات

 

………

 

Else

 

دستورات

 

………

 

Fi

 

Else

 

دستورات

 

Fi

 

Loop  ها در شل اسکریپت : loop  به گروهی از دستورات گفته می شود که در یک حلقه بارها و بارها اجرا می شود تا وقتی که شرط مورد نظر ما برقرارباشد.

 

Bash  دارای دو نوع loop  است :  A) for loop      B ) wile loop

 

(a  for loop  : این دستور به این شکل استفاده می شود :

 

لیست  ( مجموعه )      in       نام متغیر      for

Do

دراین قسمت باید دستورات نوشته شود که این دستورات روی تک تک اعضای لیست اجرا می شود تا وقتی که اعضای لیست یا مجموعه به پایان برسد .

Done

 

B  ) while loop  : این دستور به این شکل استفاده می شود :

 

While

شرط

 

Do

 

دستور 1

 

دستور 2

 

دستور 3

 

……

 

…….

 

Done

 

و تا وقتی که شرط مورد نظر ما درست باشد . این حلقه تکرار می شود.

 

  1. دستور case : این دستور هم یکی از نمونه های دستورات متناوب است که شما را قادر می سازد از مقادیر مختلفی برای یک متغیر استفاده کنید. استفاده از این دستور از استفاده از read , write بسیار آسان تر و به صرفه تر است .

 

دستور case  بدین شکل استفاده می شود : (command  به معنای فرمان است . )

 

In          نام متغیر      case

 

Command   (الگوی 1

 

…….

 

……..

 

Command

 

Command  (الگوی 2

 

……..

 

………

 

Command

 

Command  ( الگوی 3

 

……..

 

………

Command

….

 

……

 

Esac

 

مثالهایی از شل اسکریپت ) )

این برنامه زمان را با حساب am و pm به ما نشان می دهد.

# script to display time in am/pm format using “expt” command.

# we are using the back quote characters ( ) to campture the output

# of the date command and assign that output to shell variables.

Hours= date + %k”

Mins= date +%m”

If [ $hours _eq 0]

Then

Hours= 12

Fi

If [$hours –gt 12 ]

Then

Hours= expr $hours – 12

Ampm=pm

Else

Ampm=am

Fi

Echo $hours :$mins $ampm

 

 

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

 

#script to display time in am/pm format using “case ” statement

 

hours= date + % k”

mins= date + % m”

if [$hours – ge 12 ]

then

case $hours in

13) hours= 1: :

14) hours= 2: :

15) hours= 3: :

16) hours= 4: :

17) hours= 5: :

18) hours= 6: :

19) hours= 7: :

20) hours=8: :

21) hours= 9: :

22) hours= 10: :

23) hours= 11: :

esac

ampm=pm

else

case $hours in

0 ) hours= 12: :

esac

ampm=am

 

برنا مه ای که مشخص می کند عدد ورودی مثبت است یا منفی .

$ vi isnump – n

#!/bin/sh

#

#script to see whether argument is positive of negative

#

if [$# -eq 0]

then

echo “$0: you must give/suppiy one integers”

exit l

fi

 

 

if test $1 – gt 0

then

echo “$1 number is positive”

else

echo “$1 number is negative”

fi

 

 

برنامه ای که با if…then…fi وcase نوشته شده و اطلاعاتی را در مورد وسایل نقلیه میدهد.

 

$ cat > car

#

# if no vehicle name is given

#i.e. –z $1 is defind and it is NULL

#

# if no command line arg

 

 

if [-z $1 ]

then

rental=”***unknown vehicle***”

elif [-n $1 ]

then

# otherwise make first arg as rental

rental=$1

fi

 

 

case $rental in

“car”) echo “for $rental Rs.20 per k/m” : :

“van”) echo “for $rental Rs.10 per k/m” : :

“jeep”) echo “for $rental Rs.5 per k/m”: :

“bicycle”) echo “for $rental 20 paisa per k/m”: :

*) echo “srry,1 can not gat a $rental for you”: :

esac

 

 

 

 

 

 

 

 

 

بسمه تعالی

 

مقدمه

 

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

 

بدون شک یکی از رقابتهای کشورهای پیشرفته در زمینه کامپیوتر است و ما هرروز شاهد پیشرفت این تکنولوژی عظیم هستیم. سیستم عامل ها و نرم افزارهای کامپیوتری نیز همزمان با این تحولات به پیش می روند . سیستم عامل یکی از مهمترین اجزاء نرم افزاری یک کامپیوتر است . سیستم عامل رابط بین نرم افزارها و عملکرد سخت افزارها می باشد و نقش مدیریتی دارد تعدادی از سیستم عامل ها عبارتند از : linux . unix . dos . windows. Beos  در اینجا ما به سیستم عامل شگفت انگیز لینوکس می پردازیم . لینوکس یک سیستم عامل رایگان کد باز ( opensource  ) بسیار انعطاف پذیر و با قابلیت های بالاست و روی هر کامپیوتری قابل نصب است. لینوکس در سال 1991 توسط لینوس بندیک توروالدز خلق شد. اولین نسخه آن linux 0.01  بود که در همین سال در شبکه اینترنت قرارگرفت و نسخه های بعدی آن که رفع عیب می شدند پیاپی می آمدند . یعنی خالق لینوکس شخص لینوس بود اما روز به روز توسط برنامه نویسان گمنامی از سراسر جهان تکمیل می شود و به برنامه های کاربردی آن افزوده می شود و این سیر هنوز هم ادامه دارد. تا اینکه محیطهای گرافیکی لینوکس (xwindoes  ) بوجود آمدند که سیل کاربران کامپیوتر به این سیستم عامل رو آوردند و امروزه هم تعداد کاربران لینوکس از مرز 15 میلیون نفر گذشته وروز به روز در حال افزایش است . نسخه های مختلفی از لینوکس موجود است مثل mandrake . easy . suse . redhat  که ما به بررسی redhat linux  می پردازیم . در ضمن شما می توانید لینوکس را روی یک پارتیشن جدا نصب کنید . یعنی براحتی لینوکس و ویندوز را با هم روی کامپیوتر داشته باشید. پس اگر انحصار و یکنواختی خسته شده اید و می خواهید سیستم عاملی قابل تغییر داشته باشید لینوکس را بر روی کامپیوتر خود نصب کرده و این دوره را حتما بگذرانید .

 

آغاز داستان

 

در سال 1991 در حالی که جنگ سرد روبه پایان می رفت و صلح در افقها هویدا می شد در دنیای کامپیوتر آینده بسسیار روشنی دیده می شد با وجود قدرت سخت افزارهای جدید محدودیت های کامپیوتر ها روبه پایان می رفت ولی هنوز چیزی کم بود واین چیزی نبود جز فقدانی عمیق در حیطه سیستم های عامل . داس امپراطوری کامپیوترهای شخصی رادردست داشت . سیستم عامل بی استخوانی که با قیمت 50000 دلار از یک هکر سیاتلی توسط بیل گیتز (gates bill  ) خریداری شده بود و با یک استراتژی تجاری هوشمند به تمام گوشه های جهان رخنه کرده بود . کاربران pc انتخاب دیگری نداشتند . کامپیوترهای اپل مکینتاش بهتر بودند .ولی قیمتهای نجومی آنها را از دسترس اکثر افراد خارج می ساخت.

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

 

به نظر می رسید این راه حل به صورت سیستم عامل minix  ارائه شد . این سیستم عامل که از ابتدا توسط اندرولس تاننباوم (andrew s. tanenbaum  ) پروفسور هلندی نوشته شده بود به منظور تدریس عملیات داخلی یک سیستم عامل واقعی بود. این سیستم عامل برای اجرا روی پردازنده های 8086 اینتل طراحی شده بود. بزودی بازار را اشباع کرد. بعنوان یک سیستم عامل minix  خیلی خوب نبود . ولی مزیت اصلی آن در دسترس بودن کد منبع آن بود. هر کس که کتاب سیستم عامل تاننباوم را تهیه می کرد به 12000 خط کهد نوشته شده به زبان c و اسمبلی نیز دسترسی پیدا می کرد. برای نخستین بار یک برنامه نویس یا هکر مشتاق می توانست کد منبع سیستم عامل را مطالعه کند چیزی که سازندگان نرم افزارها آنرا محدود کرده بودند . یک نویسنده بسیارخوب یعنی ناننباوم باعث فعالیت مغزهای متفکر علوم کامپیوتری در زمینه بحث و گفتگو برای ایجاد سیستم عالم شد. دانشجویان کامپیوتر در سرتاسر دنیا با خواندن کتاب و کدهای منبع سیستمی راکه در کامپیوترشان درحال اجرا بود درک کردند.

ویکی از آنها لینوس توروالدز ( linus torvalds  ) نام داشت.

 

کودک جدید در افق

 

در سال 1991 لینوس بندیکت توروالدز (linus benedict torvalds  ) دانشجوی سال دوم علوم کامپیوتر دانشگاه هلسینکی فنلاند ویک هکر خود آموخته بود. این فنلاندی 21 ساله عاشق وصله پینه کردن محدودیت هایی بود که سیستم را تحت فشار قرارمی دادند .ولی مهمترین چیزی که وجود نداشت یک سیستم عامل بود که بتواند نیازهای حرفه ای ها را برآورده نماید. Minix  خوب بود ولی فقط یک سیستم عامل مخصوص دانش آموزان بود و بیشتر به عنوان یک ابزار آموزشی بود تا ابزاری قدرتمند برای بکارگیری در امور جدی در این زمان برنامه نویسان سرتاسر دنیا توسط پروژه گنو (GNU ) که توسط ریچارد استالمن (Richard stallman  ) آغاز شده بود . تحریک شده بودند . هدف این پروژه ایجاد حرکتی برای فراهم نمودن نرم افزارهای رایگان ودر عین حال با کیفیت بود  . استالمن خط مشی خود رااز آزمایشگاه معروف هوش مصنوعی دانشگاه mit  با ایجاد برنامه ویرایشگر emacs  در اواسط و اواخر دهه 70 آغاز نمود. تا اوایل دهه 80 بیشتر برنامه نویسان نخبه آزمایشگاههای هوش مصنوعی MIT  جذب شرکتهای نرم افزاری تجاری شده بودند. و با آنها قرارداد های حفظ اسرار امضا شده بود. ولی استالمن دیدگاه متفاوتی داشت . وی عقیده داشت برخلاف سایر تولیدات نرم افزار باید از محدودیت های کپی و ایجاد تغییرات در آن آزاد باشد تا بتوان روزبه روز نرم افزارهای بهتر و کارآمد تری تولید نمود.

 

با اعلامیه معروف خود در سال  1983  پروژه GNU را آغاز کرد . وی حرکتی را آغاز کرد تا با فلسفه خودش به تولید و ارائه نرم افزار بپردازد . نام GNU مخفف GNU IS NOT UNIX  است ولی برای رسیدن به رویای خود برای ایجاد یک سیستم عامل رایگان وی ابتدا نیاز داشت تا ابزارهای لازم برای این کار را ایجاد نماید . بنابراین در سال 1984 وی شروع به نوشتن و ایجاد کامپایلر زبان C گنو موسوم به GCC نمود. ابزاری مبهوت کننده برای برنامه نویسان مستقل وی با جادوگری افسانه ای خود به تنهایی ابزاری را ایجاد نمود که برتر ازتمام ابزارهایی که تمام گروههای برنامه نویسان تجاری ایجاد کرده بودند قرارگرفت. GCC یکی از کارآمدترین و قویترین کامپایلرهایی است که تاکنون ایجاد شده اند. تاسال 1991 پروژه GNU تعداد زیادی ابزار ایجاد کرده بود ولی هنوز سیستم عامل رایگانی وجود نداشت . حتی MINIX  هم لایسنس شده بود کاربر روی هسته سیستم عامل گنو موسوم به HURD ادامه داشت ولی به نظر نمی رسید که تا چند سال آینده قابل استفاده باشد.

 

این زمان برای توروالدز بیش از حد طولانی بود . در 25 آگوست 1991 این نامه تاریخی به گروه خبر ی MINIX ازطرف توروالدز ارسال شد:

از : لینوس بندیکت توروالدز

به : گروه خبری MINIX

موضوع : بیشتر چه چیزی را می خواهید در MINIX  ببینید؟

خلاصه : نظر خواهی کوچک در مورد سیستم عامل جدید من

 

با سلام به تمام استفاده کنندگان از MINIX

 

من در حال تهیه یک سیستم عامل رایگان فقط به عنوان سرگرمی و نه به بزرگی و حرفه ای GNU برای دستگاههای 386و 486   هستم این کار از آوریل شروع شده و درحال آماده شدن است . من مایلم تا نظرات کاربران رادر مورد چیزهایی که در MINIX دوست دارند یا ندارند جمع آوری کنم زیرا سیستم عامل من حدودا شبیه آن است . مانند ساختار سیستم فایل مشابه و چیزهای دیگر . من اکنون BASH نسخه 1/08 و GCC نسخه 40/1 رابه آن منتقل کرده ام وبه نظر می رسد که کار می کند من در عرض چند ماه چیزی ازمایشی درست کرده ام و مایلم بدانم که کاربران بیشتر به چه قابلیتهایی نیازدارند؟ من از هر پیشنهادی استقبال می کنم ولی قول نمی دهم همه آنها را اجرا کنم لینوس همانطور که دراین نامه پیداست خود توروالدز هم باور نمی کرد که مخلوقش آنقدر بزرگ شود که چنین تحولی در دنیا ایجاد کند. لینوکس نسخه 01/0 در اواسط سپتامبر 1991 منتشر شد وروی اینترنت قرارگرفت. شور و اشتیاقی فراوان حول مخلوق توروالدز شکل گرفت. کدها دانلود شده آزمایش شدند و پس از بهینه سازی به توروالدز بازگردانده شدند . لینوکس نسخه 03/0 در پنجم اکتبر به همراه اعلامیه معروف توروالدز آماه شد:

 

از: لینوس بندیکت توروالدز

به : گروه خبری MINIX

موضوع : کدهای منبع رایگا ن هسته مشابه MINIX

 

آیا شما از روزهای زیبای 1.1 MINIX  محروم شده اید؟ هنگامی که مردها مرد بودند و راه اندازهای دستگاه خود را خودشان می نوشتند؟ آیا شما فاقد یک پروژه زیبا هستید و می میرید تا سیستم عاملی داشته باشید تا بتوانید آنرا مطابق با نیازهای خود در آورید ؟ اگر اینگونه است این نامه برای شما نوشته شده است.

 

همانطور که ماه پیش گفتم من درحال کاربروی یک سیستم عامل رایگان مشابه MINIX برای کامپیوترهای 386 هستم این سیستم عامل اکنون بجایی رسیده است که قابل استفاده است و مایل هستم که کدهای منبع را درسطح گسترده تر پخش نمایم . این نسخه 02/0 است ولی من موفق شده ام که نرم افزارهای bash . Gc. Make. GNU , GNU . SED . COMPRESS وغیره را تحت آن اجرا کنم . کدهای منبع این پروژه را می توانید از آدرس nic.funet.fi  با آدرس 100/6/214/128 در دایرکتوری pub/os/linux پیدا کنید . این دایرکتوری همچنین دارای چند فایل README  و تعدادی باینری قابل اجرا تحت لینوکس است . تمام کدهای منبع ارائه شده است زیرا هیچ یک از کدهای minix در آن استفاد ه نشده است.

سیستم را می توانید همانطور که هست کامپایل و استفاده کنید . کدهای منبع باینرها را هم می توانید در مسیر pub/GNU پیدا کنید.

لینوکس نسخه 03/0 پس از چند هفته آماده شد و تا دسامبر لینوکس به نسخه 10/0 رسید هنوز لینوکس فقط چیزی کمی بیشتر از یک فرم اسکلت بود . این سیستم عامل فقط دیسکهای سخت AT را پشتیبانی می کرد و ورود به سیستم نداشت و مستقیما به خط فرمان بوت می شد. نسخه 11/0 خیلی بهتر شد . این نسخه از صفحه کلیدهای چند زبانه پشتیبانی می کرد دیسکهای فلاپی و کارتهای گرافیکی VGA , EGA  هرکولس و نیز پشتیبانی می شدند و شماره نسخه ها از 12.0 به 95.0 و 96.0 افرایش پیدا کرد و ادامه یافت وبزودی کد آن بوسیله سرویس دهنده های FTP  در فنلاند و مناطق دیگر در سرتاسر جهان منتشر شد.

 

مقایسه و توسعه

 

بزودی توروالدز با مقایسه هایی از طرف اندرو تاننباوم معلم بزرگی که MINIX  را نوشته بود مواجه شد تاننباوم برای توروالدز می نویسد:

من بر این نکته تاکید دارم که ایجاد یک هسته یکپارچه در سال 1991 یک اشتباه پایه ای بود . خداراشکر که شما شاگرد من نیستید واگر نه برای چنین طرحی نمره بالایی نمی گرفتید.

توروالدز بعدا پذیرفت که این بدترین نکته در توسعه لینوکس بوده است تاننباوم یک استاد مشهور بود و هرچه که می گفت واقعیت داشت ولی وی در مورد لینوکس اشتباه می کرد . توروالدز کسی نبود که به این سادگی ها پذیرای شکست  باشد.

تاننباوم همچنین گفته بود . لینوکس منسوخ شده است.

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

شغل شما استاد دانشگاه و محقق بودن است  این بهانه خوبی برای برخی مغز خرابکنی ها ی MINIX است. و کار ادامه یافت .بزودی صدها نفر به اردوگاه لینوکس پیوستند سپس هزاران نفر و سپس صدها هزار نفر لینوکس دیگر اسباب بازی ها هکرها نبود . با پشتیبانی نرم افزارهای پروژه GNU لینوکس آماده یک نمایش واقعی بود. لینوکس تحت مجوز GPL قرارداده شد. با این مجوز همه می توانستند کدهای منبع لینوکس رابه رایگان داشته باشند. بر روی آنها مطالعه کرده و آنها را تغییر دهند. دانشجویان و برنامه نویسان آنرا قاپیدند. وخیلی زود تولید کنندگان تجاری وارد شدند لینوکس به خودی خود ر ایگان بود و هست کاری که این تولید کنندگان انجام داد ند کامپایل کردن بخش ها و نرم افزارهای مختلف و ارائه آن بصورت یک فرمت قابل توزیع همانند سایر سیستم عاملها بود تامردم عادی نیز بتوانند از آن استفاده کنند. اکنون توزیع هایی مانند ردهت . دبیان و زوزه دارای بیشترین سهم کاربران در سرتاسر جهان هستند با ربطهای گرافیکی کاربر جدید مانند kde , GNOME  توزیع های لینوکس در بین مردم بسیار گسترش یافتند .

همچنین اتفاقات جالبی با لینوکس رخ می دهد . در کنار pc لینوکس به  روی اکثر پلاتفورمها منتقل شده است لینوکس تغییر داده شد تا کامپیوتر دستی شرکت com3  یعنی palmpilot را اجرا نماید . تکنولوژی کلاستر کردن این امکان را بوجود آورد تا بتوان تعدا زیادی از ماشینهای  لینوکس را به یک مجموعه واحد پردازشی تبدیل نمود. یک کامپیوتر موازی در آوریل 1996 محققین آزمایشگاههای ملی لوس آلاموس از 68 کامپیوتر مبتنی بر لینوکس برای پردازش موازی و شبیه سازی موج انفجار اتمی استفاده کردند. ولی برخلاف ابر کامپیوترهای دیگر هزینه آنها بسیار ارزان تمام شد. ابرکامپیوتر خود ساخته آنها با تمام تجهیزات و سخت افزارها 152000 دلار هزینه در برداشت و این یک دهم هزینه یک ابرکامپیوتر تجاری است. این ابرکامپیوتر به سرعت 16 میلیون محاسبه در ثانیه دست یافت و به رتبه 315 ام این ابرکامپیوتر جهان دست پیدا کرد و صد البته یکی از پایدارترین آنها بود. پس از سه ماه از آغاز فعالیت هنوز بوت نشده بود.

بهترین موردی که امروزه برای لینوکس وجود دارد طرفداران متعصب آن هستند هنگامی که یک قطعه سخت افزاری جدید ارائه می شود هسته لینوکس برای استفاده از آن تغییر داده می شود . برای مثال هنگام ارائه پردازنده 64 بیتی شرکت AMD هسته به سرعت چند هفته برای کار با آن آماده شد. اکنون لینوکس برروی تمام انواع خانواده های سخت افزاری موجود اعم از PC , MAC. Alpha  و انواع سخت افزارهای درونه ای قابل اجراست که آنرا برای استفاده در ماشین آلات صنعتی و آلات و ادواتی که نیاز به پردازش کامپیوتری دارند بسیار مناسب نموده است . لینوکس با همان فلسفه وهدفی که درسال 1991 ایجاد شد وارد هزاره جدید شده است.

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

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

امروزه لینوکس بیش از یک دهه توسعه را پشت سر گذاشته است و یکی از سریع التوسعه ترین سیستم های عامل به شمار می رود ازچند کاربر انگشت شمار در سالهای 1991 و 19920 امروزه میلیونها کاربر از لینوکس استفاده می کنند IBM  که زمانی بزرگترین دشمن جماعت OPEN source  به شمار می رفت . اکنون سرمایه گذاری عظیمی در زمینه توسعه راه حل های open source  تحت لینوکس نموده است درحال حاضر تعداد توسعه دهندگانی که برای افزایش قابلیتهای لینوکس تلاش می کنند روز به روز افزایش می یابد. امروزه تعداد زیادی از شرکتها و موسسات حرفه ای تجاری پشتیبانی  از محصولات مبتنی بر لینوکس رابرعهده گرفته اند . اکنون دیگر استفاده از لینوکس در محیطها اداری پذیرفتن ریسک نیست . از نظر قابلیت اطمینان و پایداری و همچنین حفاظت در برابر انواع ویروسها چیزی بهتر از لینوکس وجود ندارد با تلاش شرکتهای بزرگی مانند ردهت استفاده از لینوکس در محیطهای تجاری توسعه فراوان یافته و اکنون تعداد زیادی از شرکتهای  کوچک و بزرگ در حال استفاده از سرویس دهنده ها و ایستگاههای کاری مبتنی بر لینوکس هستند.

 

طلوع لینوکس روی میزی (desktop linux  )

بزرگترین ایرادی که از لینوکس گرفته می شد چه بود ؟ قبلا محیط تمام متنی لینوکس بسیاری از کاربران را از استفاده کردن از آن برحذر می داشت بای اینکه در استفاده از محیط متنی کنترل کامل سیستم در اختیار شماست  ولی این محیط اصلا برای کاربران عادی سیستمهای کامپیوتری مناسب نیست . محیط های گرافیکی که برپایه x-window وجود داشتند نیز پاسخ گوی امکاناتی که سیستم عاملهای گرافیکی مانند ویندوز برای کاربران خود ارائه می کردند . نبودند. ولی از چند سال گذشته این وضعیت درحال تغییر بوده است . اکنون محیطهای گرافیکی حرفه ای مانند KDE. GNOME  تصویر لینوکس را کامل کرده اند. این محیطهای گرافیکی اکنون بسیار کاربر پسند و قدرتمند شده اند ووجود این سیستمهاست که امروزه کاربران عادی نیز می توانند از لینوکس استفاده کنند.

 

لینوکس در جان سوم

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

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

 

ازمیزکار تا ابر کامپیوترها

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

داستان ادامه دارد.

حرکت لینوکس از یک پروژه هکری تا جهانی شدن یک انقلاب شگفت انگیز است. پروژه GNU که در اوایل دههه 1980 توسط ریچارد استالمن شروع شد توسعه نرم افزارهای باز متن را رهبری نمود . پروفسور اندروتاننباوم و سیستم عامل MINIX او مطالعه سیستم عامل ها را ازحالت تئوری به عملی تبدیل نمود ودر نهایت همت و تلاش توروالدز منجر به تولد لینوکس شد. امروزه لینوکس دیگر یک پروژه هکری به شما نمی رود بلکه یک حرکت جهانی است که توسط میلیونها نفر برنامه نویس بازمتن و شرکتهای بزرگی مانند IBM حمایت می شود . لینوکس در تاریخ کامپیوتر به عنوان یکی از شگفت انگیز ترین محصولات تلاش بشری باقی خواهد ماند.

توکس پنگوئن : نشان عزیز لینوکس

 

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

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

http://www.top500.org

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

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

الان لینوکس در اکثر سرورها یعنی دستگاهایی که درمراکز بزرگ وجود دارد مشغول به کار می باشد وقدرت نمایی می کند و اکثر افراد فقط برای مصارف خانگی از ویندوز استفاده می کنند . هرچند این افراد به این نتیجه رسیده اند که لینوکس بهتر است.

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

 

لینوکس 64 بیتی

 

در اواسط سال 1995 فناوری 32 بیتی بر روی سیستم عامل های ویندوز 95 مایکروسافت و os/2  آی بی ام پا به عرصه ظهور گذاشت . در آن زمان بسیاری تصور می کردند که فناوری دیگر به انتهای شکوفایی خود رسیده است . ازاین رو فکر پدیده ای به نام gt6> را هم در ذهن خود نمی پروراندند . درحالی که در همین زمان و حتی چند سال قبل از آن هم صحبت از فناوری 64 بیتی که به میان آمده بود. اما به دلیل اینکه این رخداد در دنیای pc ها وبه ویژه محیط پرکاربرد ویندوز مایکروسافت به وقوع نپیوسته بود . کمتر کسی ازآن خبر داشت درواقع اولین بار در سال 1992پردازنده های dec alpha  ( مبتنی بر معماری RISC ) امکان دسترسی 64 بیتی به فایل و فایل سیستم را فراهم ساختند. در آن زمان سیستم عامل های DIGITAL UNIX , OPEN VMS  توانستند بهترین بهره را از قابلیت های این پردازنده ببرند . پس از آن ودر سال 1993 لینوکس نیز به جمع سیستم عامل های پشتیبانی کننده از پردازنده های DEC پیوست ودرسال 1995 نیز نسخه هایی از لینوکس در دنیای 32 بیتی زندگی می کردند.

بالاخره در سال 2001 شرکت اینتل اولین سری پردازنده های 64 بیتی PC  ها را با نام ایتانیوم به بازار عرضه کرد که فقط برنامه های 64 بیتی قادر بودند برروی یک سیستم عامل 64 بیتی با این پردازنده 64 بیتی اپترون (opteron  ) را رسما افتتاح کرد . این پردازنده که به داشتن فناوری 64-x86  معروف شد . به راحتی توانست برنامه های 32 و 64 بیتی را اجرا کند و همین مسئله باعث شد اینتل نیز در رقابت با اپترون پردازنده های سری xeon را با فناوری و قابلیت های مشابه بسازد.

به طور کلی در پردازنده هایی که توسط این دوسازنده ساخته شد تعداد رجیستری های cpu برای لود کردن تعداد بیشتری دستورالعمل در واحد زمان به دو برابر افزایش یافته است. ضمن این که امکان آدرس دهی فضای حافظه برای برنامه های درحال اجرا نیز ازچهارگیگابایت به شانزده میلیون گیگابایت افزایش یافت . این موضوع سبب شد سیستم عامل مجبور نباشد به سبب کمبود حافظه قابل آدرس دهی از هارددیسک به عنوان فضای موقت نگهداری داده ها (virtual memory ) استفاده کند و به طور مداوم اطلاعات را جهت پردازش بین هارددیسک و حافظه ردوبدل کند. در سیستم عامل های 64 بیتی به خوبی از این امکانات جدید استفاده شده است. برای برنامه های 32 بیتی نیز از قابلیت اول وبرای برنامه های 64 بیتی از هرود قابلیت مذکور بهترین بهره برای افزایش سرعت اجرای برنامه برده می شود . به هرحال اگر چه شرکت های معتبر توزیع کننده لینوکس مثل ردهت suse مطالعه و آزمایش بر روی نسخه های اولیه ای از لینوکس 64 بیتی را آغازکرده بودند . اما باید سال 1995 را زمان ورود رسمی لینوکس به دنیای 64 بیتی به حساب آورد . درحال حاضر نیز شرکتهای ردهت و ناول مشغول ارائه سیستم های 64 بیتی خود هستند.

به ویژه در صنایع گاز – هوا – فضا داروسازی و برخی صنایع تولیدی دیگر لینوکس های 64 بیتی با سرورهای nec , ibm . hp  یکه تاز میدان هستند. البته این مسئله به همین جا نیز ختم نمی شود واین سیستم عامل های پرسرعت علاوه بر قدرتی که در سرورهای رده متوسط ای بی آم نظیر سری I,p به نمایش گذاشتند. روی پلتفرم های کوچک تری چون سرورهای سری e آی بی ام یا سرورهای dual xeon relion  شرکت computing penguin  نیز کارایی بسیاری نشان دادند. اکنون نیز ناول باسیستم عامل suse و ردهت با rhel ( هر دو سری a, es  ) راه های آسان و سریعی را برای دستیابی و بهره مندی شرکت های کوچک به مزایای محیط 64 بیتی تحت پردازنده های xeon intel , amd athlon 64 پدید آورده اند.

 

در کاربردهای خانگی یا دسکتاپ نیز اوضاع به همین روال است. علاوه بر دو توزیع کننده معروف ردهت و ناول دیگران نیز درساخت لینوکس های 64 بیتی دسکتاپ موفقیت های غیر قابل انکاری داشته اند.

نمونه آن توزیع linux 5.04 ubuntu  است که از پردازنده های power, amd 64  پشتیبانی می کند.

برنامه های 64 بیتی

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

در این حالت درحالی که مایکروسافت نسخه 64 بیتی بانک اطلاعاتی خود ( یعنی sql server  ) رابرروی سیستم عامل مختص خود یعنی ویندوز 2003 ( یعنی 64 بیتی ) توصیه می نماید دردنیای لینوکس وضع به گونه ای دیگر درجریان است . در اینجا ویرایش 64 بیتی ibmdb2 ,mysql  واز همه مهمتر oracle 10 g  به راحتی برروی لینوکس هایی که به پردازنده های xeon و ایتانیوم مجهزند نصب و اجرا می شوند اما این بانک اطلاعاتی برای اجرا در محیط ویندوز 64 بیتی نیازمند وجود فقط پردازنده ایتانیوم است. در مورد کاربردهای دسکتاپ و خاص ذکر یک نکته ضروری است . قبل از آن که فناوری 64 بیتی مطرح شود بسیرای از شرکت ها مجبور بودند برای دستیابی به سرعت و کارایی مورد نظرشان کامپیوترهای قدرتمند و چند پردازنده ای را خریداری نمایند. برخی از آن کامپیوترها مثل سری sgi وچند نوع دیگر که برای کاربردهای خاصی مثل فیلم سازی طراحی انیمیشن صنایع داروسازی شبیه سازی پرواز یا امثال آن مورد استفاده قرارمی گیرند . از معماری و ترکیب خاصی در تجهیزات برخوردار بود و در مقایسه با pc های معمولی بسیار گران به نظر می رسید.

اما اکنون با فراگیر شدن 64 بیتی و به ویژه باپشتیبانی دو پردازنده اپترون xeon  (فناوری 64-86x  ) حتی لپ تاپ ها نیز تا حدودی قادر به برآورده ساختن برخی از این نوع نیازها شده اند . اثرات این پیشرفت را می توان به وضوح در برخی کاربردهای عام دسکتاپ مشاهده کرد. افزایش سرعت در برنامه های ویرایش تصویر و گرافیک مانند GIMP یا برنامه های محاسباتی مثل OPEN OFFICE ازجمله موارد به حساب می آیند. ازطرفی دیگر به نظر می رسد درآینده نزدیک نیز شاهد مهاجرت بسیاری از برنامه های 32 بیتی فعلی به نسخه های 64 بیتی خواهیم بود. شاید آرزوی دیدن برنامه های محبوبی مانند FLASH  در دنیای 64 بیتی چندان دور ازدسترس نباشد.

معماری لینوکس 64 بیتی

 

یک لینوکس 64 بیتی یعنی لینوکسی که دارای کرنل و GNU کامپایل شده 64 بیتی است. قاعدتا باید در کنار توابع کتابخانه ای 32 بیتی توابعی برای اجرای 64 بیتی برنامه های 64 بیتی نیز داشته باشد . مثلا توابعی که برای کامپایل و اجرای برنامه های نوشته شده به زبان C مورد استفاده قرارمی گیرند . ( مثل کتابخانه GLIBC  ) باید در هر دو فرمت 32 و 64 بیتی در دسترس باشند. به عنوان مثال فدورا کتابخانه های 32 بیتی رادردایرکتوری  LIB/USR/LIB و کتابخانه های 64 بیتی رادر دایرکتوری LIB64/USR/LIB64  قرارمی دهد تا در موقع مناسب مورد استفاده برنامه های 32 یا 64 بیتی قرارمی گیرند به این حالت DYNAMIC MULTILIB  گفته می شود.

به همین ترتیب می توان حتی برنامه هایی که توسط برنامه نویسان ودرقالب PACKAGE  نوشته ودر سیستم نصب می شوند را نیز تقسیم بندی کرد. از این لحاظ برنامه های PACKAGE  به دو دسته تقسیم می شوند یکی آنهایی که فقط برای کارکردن دریک محیط (32 یا 64 بیتی ) ساخته می شوند ودوم آنهایی که شبیه MULTILIB  خود لینوکس در قالب دو نسخه وبرای قابل اجرا بودن درهردو محیط  ساخته شده وبه نام MULTILIB PACKAGE  شناخته می شوند.

کاملا واضح است که درصورتی که از روش دوم برای ساخت برنامه های کاربردی استفاده شود باید تمهیداتی به کاربسته شود تا هرنسخه ( 32 یا 64 بیتی ) برنامه بتواند درزمان اجرا شدن بر روی لینوکس محیط خود راشناسایی نماید و مسیر صحیح قرارگرفتن کتابخانه های همگون و مربوط (MULTILIB  ) را پیدا وازآنها استفاده کند. بدیهی است درغیر این صورت ممکن است برنامه های 32 یا 64 بیتی به اشتباه از کتابخانه های یکدیگر استفاده کنند ودر نتیجه قابل اجرا بر روی سیستم نباشند.

معماری لینوکس 64 بیتی

 

یک لینوکس 64 بیتی یعنی لینوکسی که دارای کرنل و GNU کامپایل شده 64 بیتی است قاعدتا باید در کنار توابع کتابخانه ای 32 بیتی توابعی برای اجرای 64 بیتی برنامه های 64 بیتی نیز داشته باشدو. یعنی از آنجا که سیستم عامل 64 بیتی باید بتواند هم برنامه های 32 بیتی وهم برنامه های 64 بیتی را اجرا نماید باید از هرکتابخانه دو نسخه مختلف را در کنارهم داشته باشد مثلا توابعی که برای کامپایل و اجرای برنامه های نوشته شده به زبان C مورد استفاده قرارمی گیرند ( مثل کتابخانه GLIBC  ) باید در هر دو فرمت 32 و 64 بیتی در دسترس باشند . به عنوان مثال فدورا کتابخانه های 32 بیتی رادر دایرکتوری LIB/USR/LIB و کتابخانه های 64 بیتی رادر دایرکتوری LIB/USR/LIB64  قرارمی دهد تادرموقع مناسب مورد استفاده برنامه های 32 یا 64 بیتی قراگیرند . به این حالت DYNAMIC MULTILIB  گفته می شود.

Comments are closed.