مقدمات کار با لینوکس
ظاهر پوسته فرمان :
در صورتی که لینوکس شما فاقد محیط گرافیکی است ویا اکنون محیط گرافیکی آن درحال اجرا نیست ، شما باید دستورات خودراازطریق پوسته فرمان به سیستم عامل ارسال کنید . نخستین چیزی که در پوسته فرمان مشاهده میکنید، اعلان فرمان است که بصورت علامت $ می باشد . اعلان فر مان برای کاربر ریشه بصورت # است . در بیشتر سیستمهای لینوکس قبل از اعلان فرمان نام کاربری شما ونام کامپیوترتان قرار می گیرد که بصورت زیر نشان داده می شود:
[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 در داس.
خوب اکنون به کمی تمرین برای بکارگیری این دستورات می پردازیم. در صورتی که در حالت گرافیکی هستید. همانطور که قبلا گفته شد. یک پنجره ترمینال باز کنید.
- برای حرکت به دایرکتوری خانگی خود از هرجا کافی است دستورcd را تایپ کنید :
- برای حصول اطمینان از قرارگیری در دایرکتوری خانگی خود دستور pwd را تایپ کنید:
$pwd
/home/alan
- با استفاده از دستور mkdir یک دایرکتوری به نام test ایجاد کنید:
$mkdir test
- مجوزهای دایرکتوری ایجاد شده را با استفاده از دستور Is بررسی کنید:
$Is –Id test
Drwxrwxr- x 3 alan 4096 may 1720:14 test
خروجی فرمان نشان می دهد که test یک دایرکتوری بوده ومالک آن کاربری به نام alan است که به گروه alan تعلق داشته وآخرین بار در 17 ام می در ساعت 14:20 دقیقه تغییر کرده است . تصور کنید می خواهید مجوزهای این دایرکتوری را طوری تنظیم کنید که افراد دیگری که از این کامپیوتر استفاده می کنند نتوانند محتویات دایرکتوری شما رادیده و استفاده کنند . دراین مورد بیشتر توضیح خواهم داد.
- اکنون دستور زیر را تایپ کنید :
$chmod 700 test
این دستور به شما تمام مجوزهای استفاده وتغییر دایرکتوری را می دهد درحالی که به دیگران اجازه حتی مشاهده محتویات این دایرکتوری نیز داده نخواهد شد . اگر مجددا دستور Is که در بالا تایپ کردید این بار مجوزها بصورت —–drwx نمایش داده خواهد شد.
- در این مرحله با استفاده از دستور 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
نکته : برای احتیاط از تغییر دادن این متغیرهای سیستمی خودداری کنید چون امکان دارد مشکلاتی را برای شما پیش آورد.
قواعد نامگذاری متغیرها :
- نام متغیر باید با حروف الفبا شروع شود و می تواند شامل حروف اعداد وتنهاعلامت ( _ ) باشد.
- نه در نام متغیر و نه در مقدار متغیر نباید از space استفاده شود.
- متغیرها به حروف بزرگ و کوچک حساسند . درست مثل نام فایلها و دستورات در لینوکس
- شما می توانید متغیرهای پوچ تعریف کنید . مثلا :
( برای تعریف متغیر از این دستور نیز استفاده می شود ) $ vech =
$ vech =
- از علائمی مثل : ؟ و * و غیره نباید در نام متغیر استفاده شود.
عملگرهای ریاضی و استفاده از دستور 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 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 که مربوط به حلقه ها می شود را شرح می دهیم :
- اگر بخواهیم از چندین 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
و تا وقتی که شرط مورد نظر ما درست باشد . این حلقه تکرار می شود.
- دستور 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 حمایت می شود . لینوکس در تاریخ کامپیوتر به عنوان یکی از شگفت انگیز ترین محصولات تلاش بشری باقی خواهد ماند.
توکس پنگوئن : نشان عزیز لینوکس
نشان لینوکس یک پنگوئن است برخلاف سایر سیستم عاملهای تجاری این نشان زیاد جدی نیست . توکس نشانگر وضعیت بدون نگرانی حرکت لینوکس ایت . این نشان تاریخچه بسیار جالبی دارد. لینوکس در ابتدا فاقد هرگونه نشانی بود. هنگامی که توروالدز برای تعطیلات به استرالیا رفته بود. در دیداری که از یک باغ وحش داشت هنگامی که می خواست با یک پنگوئن بازی کند پنگوئن دست وی را گاز گرفت وهمین ایده ی شد تا ازپنگوئن به عنوان نشان لینوکس استفاده شود.
بعد از به وجود آمدن لینوکس شرکتهای افراد زیادی این سیستم عامل را امتحان کردند و بعد ازمدتی قدرت پایداری و امنیت این سیستم عامل مشخص شد ود رصد نفوذ آن درحال گسترش می باشد و به رشد خود ادامه می دهد. درزمان فعلی تمام سوپرکامپیوترهای دنیا فقط از سیستم عامل لینوکس استفاده می کنند که اطلاعات تکمیلی را می توانید در سایت زیر مطالعه کنید.
با مطالعه سایت بالا اطلاعات کافی درباره لینوکس را می توانید به دست آورید.
اگر شما دارای سیستمی باشید که این سیستم دارای سی پی یو بالاتر از 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 گفته می شود.
بازدیدها: 66