PDA

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



آبجی
17th May 2010, 04:25 PM
تاریخچه لینوکس آغاز داستان

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

و این چیزی نبود جز فقدانی عمیق در حیطه سیستم های عامل.

داس، امپراطوری کامپیوترهای شخصی را در دست داشت. سیستم عامل بی استخوانی که با قیمت 50000 دلار از یک هکر سیاتلی توسط بیل گیتز (Bill Gates) خریداری شده بود و با یک استراتژی تجاری هوشمند، به تمام گوشه های جهان رخنه کرده بود. کاربران 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 نسخه 1.40 را به آن منتقل کرده ام و به نظر میرسد که کار میکند. من در عرض چند ماه چیزی آزمایشی درست کرده ام و مایلم بدانم که کاربران بیشتر به چه قابلیتهایی نیاز دارند؟ من از هر پیشنهادی استقبال میکنم. ولی قول نمی دهم همه آنها را اجرا کنم. لینوس

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

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

آیا شما از روزهای زیبای MINIX 1.1 محروم شده اید؟ هنگامی که مردها مرد بودند و راه اندازهای دستگاه خود را خودشان مینوشتند؟ آیا شما فاقد یک پروزه زیبا هستید و می میرید تا سیستم عاملی داشته باشید تا بتوانید آنرا مطابق با نیازهای خود در آورید؟ اگر اینگونه است، این نامه برای شما نوشته شده است.
همانطور که ماه پیش گفتم من در حال کار بر بروی یک سیستم عامل رایگان مشابه MINIX برای کامپیوترهای 386 هستم. این سیستم عامل اکنون بجایی رسیده است که قابل استفاده است و مایل هستم که کدهای منبع را در سطح گسترده تر پخش نمایم. این نسخه 0.02 است ولی من موفق شده ام که نرم افزارهای Bash، GCC، GNU-Make، GNU-sed، Compress و غیره را تحت آن اجرا کنم. کدهای منبع این پروژه را میتوانید از آدرس nic.funet.fi با آدرس 128.214.6.100 در دایرکتوری pub/OS/Linux پیدا کنید. این دایرکتوری همچنین دارای چند فایل README و تعدادی باینری قابل اجرا تحت لینوکس است. تمام کدهای منبع ارائه شده است زیرا هیچ یک از کدهای MINIX در آن استفاده نشده است. سیستم را میتوانید همانطور که هست کامپایل و استفاده کنید. کدهای منبع باینری ها را هم میتوانید در مسیر pub/GNU پیدا کنید.

لینوکس نسخه 0.03 پس از چند هفته آماده شد و تا دسامبر، لینوکس به نسخه 0.10 رسید. هنوز لینوکس فقط چیزی کمی بیشتر از یک فرم اسکلت بود. این سیستم عامل فقط دیسکهای سخت AT را پشتیبانی میکرد و ورود به سیستم نداشت و مستقیما به خط فرمان بوت میشد. نسخه 0.11 خیلی بهتر شد. این نسخه از صفحه کلیدهای چند زبانه پشتیبانی میکرد، دیسکهای فلاپی و کارتهای گرافیکی VGA، EGA، هرکولس و... نیز پشتیبانی میشدند. شماره نسخه ها از 0.12 به 0.95 و 0.96 افزایش پیدا کرد و ادامه یافت. بزودی کد آن بوسیله سرویس دهنده های FTP در فنلاند و مناطق دیگر، در سرتاسر جهان منتشر شد.

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

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

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

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

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

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

“شغل شما استاد دانشگاه و محقق بودن است و این بهانه خوبی برای برخی مغز خرابکنی های MINIX است.”

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

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

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



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


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

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

امروزه لینوکس بیش از یک دهه توسعه را پشت سر گذاشته است و یکی از سریع التوسعه ترین سیستم های عامل به شما میرود. از چند کاربر انگشت شمار در سالهای 1991 و 1992، امروزه میلیونها کاربر از لینوکس استفاده میکنند. IBM که زمانی بزرگترین دشمن جماعت Open Source به شمار می رفت، اکنون سرمایه گذاری عظیمی در زمینه توسعه راه حل های Open Source تحت لینوکس نموده است. در حال حاضر تعداد توسعه دهندگانی که برای افزایش قابلیتهای لینوکس تلاش میکنند، روز به روز افزایش می یابد.

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

طلوع لینوکس روی میزی (Desktop Linux)

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

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

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

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

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

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

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

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

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

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

آبجی
17th May 2010, 04:27 PM
ظاهر پوسته فرمان

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

کد:

[alan@memphis home]$
امکان نمایش کاراکترای مورد نیازتان بجای کاراکترهای فوق وجود دارد. چگونگی این کار بعدا شرح داده خواهد شد. محیط پوسته فرمان امکانات زیادی دارد.

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


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

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



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

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

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

کد:

$ id

uid=500(Alan) gid=500(Alan) groups=500(Alan)
خروجی فرمان نشان میدهد که نام کاربر Alan بوده که عضو گروه Alan است و شماره های کاربری و گروه آن ۵۰۰ میباشد.

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

کد:

$ who

Alan :0 Apr 23 08:46
همچنان که می بینید، در خروجی نام کاربر جاری، زمان و تاریخ ورود به سیستم نمایش داده شده است.


http://img525.imageshack.us/images/thpix.gifhttp://i38.tinypic.com/142h829.png


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

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


کد:

$ pwd

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

$ echo $HOME

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

کد:

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

$ ls -la /home/Alan

total 46740

drwx------ 47 Alan Alan 4096 Apr 23 11:09 .

drwxr-xr-x 8 root root 4096 Mar 12 17:51 ..

-rw------- 1 Alan Alan 616581 Apr 18 23:29 779-red_hat_linux_9.tar.gz

drwxr-xr-x 2 Alan Alan 4096 Mar 20 11:15 .acrobat

drwx------ 2 Alan Alan 4096 Mar 20 11:15 .adobe

drwx------ 2 Alan Alan 4096 Mar 12 17:04 .adonthell

drwxr-xr-x 2 Alan Alan 4096 Feb 14 13:19 .anjuta

-rw------- 1 Alan Alan 18325 Apr 23 00: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
هنگامی که از سوئیچ l برای نمایش جزئیات بیشتر استفاده میکنید، چیزی بیش از سایز فایلها و دایرکتوری ها نمایش داده میشود. دایرکتوری جاری (.) و دایرکتوری والد (..) در بالای لیست قرار می گیرند. یعنی در حقیقت نقطه نشان دهنده دایرکتوری home/Alan و دونقطه نشاندهنده دایرکتوری home/ است. بخش ابتدایی لیست نشاندهنده مجوزهای هر فایل است. سایر اطلاعات نمایش داده شده عبارتند از اندازه فایل به بایت و تاریخ و ساعتی که فایل برای آخرین بار تغییر کرده است.


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

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

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

$ ps au

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

Alan 1152 0.0 0.5 4476 1348 pts/0 S 17:39 0:00 bash

Alan 1831 0.0 0.2 2580 664 pts/0 R 18:14 0:00 ps au
در مثال بالا، گزینه a، برای نمایش تمام پروسه هایی که به ترمینال فعلی شما مربوط است و گزینه u برای نمایش نام کاربری و زمانی که برنامه آغاز به کار کرده است، بکار میرود. مفهوم ترمینال به زمانهای قدیم باز میگردد. در آن زمان کاربران روی ترمینالهای مبتنی بر متن کار میکردند و هر ترمینال نشان دهنده یک نفر بود. اکنون شما میتوانید روی صفحه مانیتور خود تعداد زیادی ترمینال داشته باشید. این کار بوسیله باز کردن تعدادی پنجره ترمینال امکان پذیر است.

در مثال بالا، چیز خاصی اتفاق نیافتاده است. خروجی نشان میدهد که کاربری به نام Alan ، از برنامه های bash و ps در حال استفاده است. ستون TTY یا ترمینال، نشان دهنده ترمینای است که کاربر با آن به سیستم وارد شده است و ستون STAT نشاندهنده وضعیت پروسه است. R نشاندهنده پروسه در حال اجرا و S نشاندهنده پروسه در حال خواب میباشد.

ستون USER نام کاربری که پروسـه را شروع کرده نمایش میدهد. هر پروسه توسط یک عدد یکتا به نام شماره پروسه (Process ID) مشخص میشود. از این شماره هنگام از میان بردن یا اصطلاحا kill کردن پروسه استفاده میشود. ستونهای %CPU و %MEM نشاندهنده مقدار پردازنده و حافظه ای هستند که پروسه ها استفاده کرده اند. ستون VSZ یا Virtual Set Size نشاندهنده سایز پروسه image به کیلوبایت و RSS یا Resident Set Size نشاندهنده سایز پروسه در حافظه است. ستون START نشاندهنده زمان آغاز پروسه و ستون TIME نشاندهنده زمان سیستم استفاده شده برای پروسه است.

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

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


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

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

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



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

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

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

پوسته فرمانی که در این راهنما توضیح داده خواهد شد، bash نام دارد. نام آن برگرفته از Bourne Again Shell است. پوسته bash از نخستین پوسته سیستمهای یونیکس که sh یا Bourne Shell نام داشت، ایجاد شده است و یکی از پر کاربرد ترین پوسته های فرمان به شمار میرود. البته پوسته های دیگری نیز وجود دارند که از آنها استفاده میشود که میتواند از آنها csh یا C Shell که در سیستمهای یونیکس BSD استفاده میشود و ksh یا Korn Shell که بیشتر در Unix System V استفاده میشود، نام برد. لینوکس همچنین دارای پوسته های tcsh و ash نیز میباشد.

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


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

کد:

$ man <command></command>
در لینوکس ، پوسته bash کاملا سازگار با پوسته فرمان sh میباشد.

آبجی
17th May 2010, 04:29 PM
استفاده از پوسته فرمان در لینوکس

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

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

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

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

کد:

$ echo $SHELL

/bin/bash

$ echo $MAIL

/var/spool/mail/Alan


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

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

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

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

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



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

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

کد:

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

$ echo $PATH

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


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

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

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

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

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

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

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

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

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


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

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

$type bash

bash is /bin/bash
از دستور بالا برای یافتن محل فرامیت دیگری مانند which، case و ... استفاده کنید. در صورتی که دستوری در چندین دایرکتوری قرار دارد، میتوانید با اضافه کردن گزینه a به دستور type، تمام محلهای وجود آنرا چاپ کنید.
نکته :گاهی اوقات هنگام اجرای یک فرمان با خطاهایی مانند "این فرمان پیدا نشد" و یا "شما مجوز استفاده از این فرمان را ندارید" مواجه میشوید. برای مورد اول بررسی کنید که دستور را صحیح تایپ کرده اید و مسیر آن در مسیر PATH شما قرار داشته باشد. ممکن است فرمان مورد نظر اجرایی نباشد. در بخش کارکردن با فایلها، چگونگی اجرایی کردن یک فایل تشریح خواهد شد.

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

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

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



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

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



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

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

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

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

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

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

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

$ echo $P<tab><tab> or </tab></tab>

$PATH $PPID $PS1 $PS4

$PIPESTATUS $PROMPT_COMMAND $PS2 $PWD
فراخوانی مجدد یک فرمان

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

$ history 5

1023 ls
1024 cd Fonts/

1025 man more

1026 date

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

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

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

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

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

کد:

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

آبجی
17th May 2010, 04:34 PM
اتصال و گسترش فرامین

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



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

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

$ cat /etc/passwd | sort | more

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

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

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

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

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

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

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

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



کد:

$ nroff -man grep.1 | lpr




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



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

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

کد:

$ date; troff -me mytext | lpr; ls /home
فرامین پس زمینه

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

کد:

$ troff -me mytext &


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



توسعه فرامین

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

کد:

$(sommand) or 'command'
برای فهمیدن این قابلیت به مثال زیر توجه کنید:

کد:

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


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



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

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

کد:

$[expression] or $((expression))
برای روشن شدن مطلب به مثال زیر توجه کنید :

کد:

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

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

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

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

$ ls -l $BASH

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

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



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

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

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

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

کد:

$ echo $USER

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



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

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

BASH : محتوی مسیر کامل برنامه پوسته فرمان است. به طور معمول bin/bash .

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

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

HISTFILE : محل فایل تاریخچه فرامین را نمایش میدهد.

HISTFILESIZE : تعداد فرامینی که تاریخچه در خود نگهداری میکند. معمولا ۱۰۰۰ است.

HISTCMD : شماره فرمان جاری را در تاریخچه نشان میدهد.

HOME : دایرکتوری خانگی کاربر جاری را نشان میدهد.

HOSTTYPE : نوع معماری پردازنده کامپیوتر را نشان میدهد.

MAIL : مسیر صندوق پستی کاربر جـاری را نـشـان میدهد. مـعـمـولا بـه نـام شـمـا در /var/spool/mail قرار دارد.

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

OSTYPE : نوع سیستم عامل را نشان میدهد. در مورد ما خروجی به صورت linux-gnu خواهد بود.

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

PPID : شماره پروسه ای که پوسته فرمان را شروع کرده است، نمایش میدهد.

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

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

PWD : دایرکتوری جاری را نشان میدهد.

RANDOM : با مراجعه به این متغییر یک شماره تصادفی بین ۰ و ۹۹۹۹ تولید میشود.

SECONDS : تعداد ثانیه ای که پوسته فرمان آغاز به کار کرده است.

UID : شماره شناسایی اصلی کاربر فعلی را نمایش میدهد. این شماره در فایل etc/passwd ذخیره شده است.


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

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

کد:

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

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

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

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

$ echo ${HOME}/Documents

/home/Alan/Documents


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

کد:

$ export XYZ=/home/Alan/Documents


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

کد:

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


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

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

کد:

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



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

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

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

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

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





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

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

کد:

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


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

$ jobs

[1]- Stopped mc

[2]+ Stopped vi

[3] Running find /usr -print >usrfiles &
همانطور که در خروجی فرمان بالا مشاهده میکنید، سه برنامه mc ، vi و دستور find در حال اجرا در پس زمینه هستند. علامت مثبت در کنار برنامه دوم نشان میدهد که این آخرین پروسه ای است که درحالت پس زمینه اجرا شده است و علامت منفی نشاندهنده پروسه ای است که قبل از آخرین پروسه، در پس زمینه قرار داده شده است. بعلت اینکه برنامه های اول و دوم برای کارکرد به خروجی ترمینال نیاز دارند تا زمانی که در حالت پیش زمینه اجرا شوند، متوقف باقی خواهند ماند. ولی برنامه find که به خروجی ترمینال نیازی ندارد، در حال اجرا میباشد.
نکته : برای نمایش شماره پروسه برنامه های پس زمینه ، میتوانید گزینه l را به فرمان jobs اضافه نمایید. در صورتی که از دستور ps برای نمایش پروسه های فعال استفاده کنید، میتوانید ببینید که کدامیک از آنها دستوری است که در پس زمینه در حال اجراست.

آبجی
17th May 2010, 04:36 PM
استفاده از فرامین پس زمینه و پیش زمینه

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

کد:

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

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

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

کد:

$ jobs

[2] Stopped vi

[3]- Stopped mc

[4]+ Stopped vi ./mytext



$ fg %?my


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





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

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

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

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

etc/bashrc : این فایل برای هر کاربری که پوسته bash را اجرامیکند، اجرا میشود. این فایل حالت اعلان فرمان را تنظیم میکند. مقادیر این فایل میتواند توسط فایل bashrc که در دایرکتوری خانگی هر کاربر وجود دارد، تحت تاثیر قرار گیرد.

bashrc./~ : این فایل حاوی اطلاعات مربوط به bash هر کاربر میباشد. این فایل هنگامی خوانده میشود که به سیستم وارد میشود و هر گاه که یک پوسته جدید باز میکنید. اینجا بهترین مکان برای ذخیره متغییرهای محیطی و فرمانهای مستعار خاص خودتان است.

bash_profile./~ : این فایل برای وارد کردن اطلاعات خاصی که هر کاربر در استفاده از پوسته بکار میبرد میباشد. این فایل تنها یکبار اجرا میشود. هنگامی که کاربر به سیستم وارد میشود. این فایل تعدادی از متغییرهای محیطی را مقدار دهی کرده و فایل bashrc مربوط به کاربر را اجرا میکند.

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



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

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



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

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

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

کد:

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

!\ : شماره فعلی تاریخچه فرمان را نشان میدهد.

#\ : شماره دستور آخرین دستور را نشان میدهد.

$\ : اعلان فرمان استاندارد را نشان میدهد.

W\ : فقط دایرکتوری کاری جاری را نشان میدهد.

\\ : فقط یک بک اسلش نشان داده میشود.

d\ : روز، ماه و شماره روز را نمایش میدهد. مثلا : Sat Jan 23

h\ : نام کامپیوتر میزبان را نشان میدهد.

n\ : یک خط جدید باز میکند.

s\ : نام پوسته فرمان را نشان میدهد. مثلا bash

t\ : زمان را بصورت ساعت، دقیقه و ثانیه نمایش میدهد. برای مثال : 10:14:40

u\ : نام کاربر را نمایش میدهد.

w\ : مسیر کامل دایرکتوری جاری را نمایش میدهد.

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

کد:

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



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

سیستم فایل لینوکس ساختاری است که اطلاعات شما را در کامپیوتر ذخیره میکند. فایلها در یک ساختار درختی از دایرکتوری ها ذخیره میشوند. هر دایرکتوری میتواند حاوی فایلها و دایرکتوری های دیگری باشد. در صورتی که بخواهید ساختار سیستم فایل لینوکس را دقیق تر توصیف کنید، آن بیشتر شبیه یک درخت وارونه است. در بالاترین نقطه، دایرکتوری ریشه قرار دارد که بوسیله یک اسلش تنها نشان داده میشود. در زیر آن دایرکتوری های عمومی و سیستمی سیستم عامل لینوکس قرار میگیرند. مانند bin، dev، home و tmp . هر کدام از این دایرکتوری ها محتوی دایرکتوری های دیگری هستند. تصویر ۲ ساختار درختی سیستم فایل لینوکس را نشان میدهد.
http://i34.tinypic.com/2euo18x.gif

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

bin : فرامین عمومی سیستم عامل لینوکس در این دایرکتوری قرار دارند. مانند ls، sort و chmod.

dev : حاوی نقاط دسترسی به ابزارهای سخت افزاری کامپیوتر شما است. مانند ترمینالها (tty)، دیسکهای فلاپی (fd)، دیسکهای سخت (hd) و ... کاربران بطور معمول برای دستیابی به این دستگاهها از نامهای آنها استفاده میکنند.

etc : حاوی برخی فایلهای پیکربندی سیستم است.

home : دایرکتوری های کاربران یک سیستم لینوکس در این دایرکتوری قرار میگیرد.

mnt : محلی را برای متصل کردن ابزارها و دیسکها مانند فلاپی، CD-ROM و درایوهای شبکه ایجاد میکند.

root : دایرکتوری خانگی کاربر ریشه است.

sbin : دستورات مدیریتی سیستم در این دایرکتوری قرار میگیرند.

tmp : محل قرارگیری فایلهای موقت.

usr : محل قرارگیری مستندات سیستم، بازی ها، فایلهای گرافیکی، کتابخانه ها و بسیاری چیزهای دیگر.

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

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

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

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

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

آبجی
17th May 2010, 04:41 PM
ایجاد فایلها و دایرکتوری ها

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

cd : این دستور مسیر جاری را به مسیر دیگری که تعیین میکنید تغییر میدهد حتما با مشابه این دستور در داس کار کرده اید.

pwd : این دستور مسیر دایرکتوری فعلی را چاپ میکند.

mkdir : این دستور یک دایرکتوری ایجاد میکند.

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

ls : این دستور محتویات یک دایرکتوری یا مسیر را چاپ میکند. مشابه دستور dir در داس.

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

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

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

$ pwd

/home/alan
۳. با استفاده از دستور mkdir یک دایرکتوری به نام test ایجاد کنید:
کد:

$ mkdir test
۴. مجوزهای دایرکتوری ایجاد شده را با استفاده از دستور ls بررسی کنید:
کد:

$ ls -ld test
drwxrwxr-x 3 alan alan 4096 May 17 20:14 test

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

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

کد:

$ chmod 700 test
این دستور به شما تمام مجوزهای استفاده و تغییر دایرکتوری را میدهد در حالی که به دیگران اجازه حتی مشاهده محتویات این دایرکتوری نیز داده نخواهد شد. اگر مجددا دستور ls که در بالا تایپ کردید را بکار ببرید، این بار مجوزها بصورت drwx------ نمایش داده خواهد شد.

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

کد:

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

متغییر محیطی HOME

علامت ~

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

کد:

$ ~

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

کد:

$ ~chris

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

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

کد:

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

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

کد:

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

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

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

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



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

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

علامت ستاره (*) : میتواند بجای هر تعدادی از کاراکترها قرار گیرد.

علامت سوال (?) : میتواند بجای یک کاراکتر قرار گیرد.

علامت دو براکت ([...]) : تمام کاراکتر های ذکر شده در براکت در انتخاب فایلها اثر میگذارند.

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

$ touch apple banana grape grapefruit watermelon

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

$ ls a*

apple



$ ls g*

grape

grapefruit



$ ls g*t

grapefruit



$ ls *e*

apple grape grapefruit watermelon



$ ls *n*

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

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

$ ls ????e

apple grape



$ ls g???e*

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

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

$ ls [abw]*

allpe banana watermelon



$ ls [agw]*[ne]

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

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

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

کاراکتر > : محتویات یک فایل را به یک دستور هدایت میکند.

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

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

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

$ mail root < ~/.bashrc

$ nroff -man /usr/share/man/man1/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 25 14:25:36 IRST 2003





درک مجوزهای فایلها (File Permissions)

پس از اینکه مدتی با لینوکس کار کردید، مطمئنا به پیامهایی مانند Permission Denied برخورد خواهید کرد. مجوزهای فایلها و دایرکتوری ها در لینوکس به این علت ایجاد شده اند که از دسترسی کاربران به فایلها و اطلاعات خصوصی کاربران دیگر جلوگیری به عمل آورده و از فایلهای سیستمی در مقابل آسیب دیدگی حفاظت کنند. به این علت به هر فایل ۹ بیت اضافه میشود که معرف چگونگی دسترسی شما و دیگران به آن فایل خواهد بود. این بیتها بصورت rwxrwxrwx نمایش داده میشوند. نخستین سه بیت تعیین کننده دسترسی مالک فایل است. سه بیت بعدی برای گروه مالک و سه بیت بعدی برای تعیین نحوه دسترسی دیگران است. r نشانگر خواندن، w نشانگر نوشتن و x نشانگر اجازه اجرا هستند. در صورتی که بجای یکی از این حروف علامت دش (-) نمایش داده شود، به این معنی است که این اجازه غیر فعال است. برای نمایش مجوزهای هر فایل یا دایرکتوری میتوانید از دستور ls -ld استفاده کنید. به مثال زیر توجه کنید :
کد:

$ ls -ld ch3 test

-rw-rw-r-- 3 alan alan 4096 May 22 15:11 ch3

drwxr-xr-x 3 alan alan 4096 May 17 20:14 test


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

در صورتی که شما مالک یک فایل باشید، میتوانید مجوزهای آنرا مطابق نیاز خودتان تنظیم کنید. این کار بوسیله دستور chmod امکان پذیر است. برای هریک از مجوزهای خواندن، نوشتن و اجرا عددی در نظر گرفته شده است. خواندن ۴، نوشتن ۲ و اجرا ۱. بنابراین برای اینکه تمام مجوزها را به خودتان بدهید، مقدار سه بیت نخست باید ۷ تعیین شود. (۴+۲+۱). برای گروه و سایرین نیز میتوانید بنا به نیازشان مجوز تعیین کنید. مجوزها بین ۷ (مجوز کامل) و ۰ (هیچ مجوزی!) متغییر هستند. برای روشن شدن بهتر مطلب به مثالهای زیر توجه کنید :

کد:

$ chmod 777 files = rwxrwxrwx

$ chmod 755 files = rwxr-xr-x

$ chmod 644 files = rw-r--r--

$ chmod 000 files = --------
هنگامی که یک فایل ایجاد میکنید، مجوز پیش گزیده آن ۶۴۴ خواهد بود. در مورد دایرکتوری این مجوز ۷۵۵ است. این مقادیر پیش گزیده توسط دستور umask تعیین میشود.برای نمایش مقدار umask دستور زیر را تایپ کنید:

کد:

$ umask

022
کافی است اعدادی که در دستور umask مشاهده میکنید، از ۷ کم کنید. با این کار مقادیر پیش گزیده را برای دایرکتوری مشاهده خواهید کرد. در مورد فایلها باید این اعداد را از ۶ کم کنید. زیرا در مورد فایلها به طور پیش گزیده مجوز اجرا (با مقدار ۱) غیر فعال است.

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

کد:

$ chmod -R 777 /tmp/test


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

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

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

$ mv abc def

$ mv abc ~

$ cp abc def

$ cp abc ~

$ rm abc

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


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

آبجی
17th May 2010, 04:43 PM
ساختار سیستم فایل لینوکس و یونیکس
سیستم فایل هر کامپیوتر، امکان ذخیره سازی فایل‌ها و اطلاعات را روی آن فراهم می‌سازد. هنگامی که از داخل برنامه واژه پرداز خود سندی را ذخیره می‌کنید، این سیستم فایل است که تعیین می‌کند سند چگونه و کجا ذخیره شود.
ابزارهای ذخیره سازی مانند فلاپی دیسک‌ها، دیسک‌های سخت، درایوهای CD-ROM، درایوهای Zip و... تا قبل از اینکه سیستم‌عامل سیستم فایل را روی آنها تشکیل دهد، قابل استفاده نیستند.
سیستم فایلهای گوناگونی برای سیستم‌عامل‌های مبتنی بر یونیکس و لینوکس ارائه شده‌اند که برخی از آنها عبارتند از ext2، ext3، xfs، reiserfs و غیره. این سیستم فایل‌ها در جزئیات فنی دارای تفاوت‌هایی با هم هستند ولی از نظر ساختاری که ایجاد می‌کنند مشابه بوده و تفاوت چندانی باهم ندارند. در این مقاله ما وارد جزئیات فنی هر نوع از سیستم فایلها نشده و تنها ساختار آنها را بررسی خواهیم کرد.

سیستم فایل یا درخت؟
سیستم فایل سیستم‌عامل‌های مبتنی بر یونیکس و لینوکس بصورت یک درخت وارونه پیاده سازی شده است. در یونیکس و لینوکس دیگر شما چیزی به نام درایوهای A، C و ... ندارید. تمام ابزارها و سیستم فایلها شاخه‌هایی از این درخت وارونه هستند. مرکز این درخت ریشه یا root نام دارد که بالاترین سطح سیستم فایل را تشکیل می‌دهد. زیر ریشه، پوشه‌هایی قرار دارند که سایر قسمت‌های سیستم فایل را تشکیل می‌دهند که اکنون درباره آنها توضیح می‌دهم. تصویر ۱ سیستم فایل سیستم‌های مبتنی بر یونیکس و لینوکس را نشان می‌دهد.
http://i35.tinypic.com/2gxjl9t.png
همانطور که می‌بینید سیستم فایل از تعداد زیادی پوشه تشکیل شده‌است که این پوشه‌ها تقریبا در تمامی سیستم‌عامل‌های مبتنی بر یونیکس و لینوکس مشترک هستند. اکنون به تشریح تک تک این شاخه‌ها پرداخته و در میان آن توضیحات اضافه را به شما ارائه خواهم کرد.

پارتیشن‌ها
در سیستم فایل سیستم‌عامل‌های مبتنی بر لینوکس و یونیکس، دیسک‌های سخت می‌توانند پارتیشن‌های متعددی داشته باشند. در این صورت هر پارتیشن دارای یک نقطه اتصال یا mount point می‌باشد که در آن نقطه به درخت سیستم فایل متصل می‌شود. مثلا می‌توانید اطلاعات کاربران سیستم را در یک پارتیشن جداگانه ذخیره نموده و نقطه اتصال آنرا home تعیین کنید که محل قرارگیری اطلاعات کاربران است و به همین ترتیب.

بخش‌های درخت سیستم فایل
اکنون به بررسی تک تک شاخه‌های سیستم فایل می‌پردازیم. توجه داشته باشید که دسترسی به اکثر این شاخه‌ها فقط توسط کاربر ریشه امکان پذیر است.
-شاخه bin: در این شاخه، دستورات سیستم‌عامل که برای تمام کاربران قابل دستیابی هستند و برخی دستورات مدیریتی سیستم قرار می‌گیرند.
-شاخه boot: این شاخه که می‌تواند در یک پارتیشن جداگانه بوده و به پوشه boot متصل شده باشد، حاوی برنامه راه‌نداز بوت سیستم عامل می‌باشد. مانند Grub و Lilo.
-شاخه dev: محل قرارگیری نقطه دسترسی‌های ابزارهای سخت افزاری است. مثلا تمام پورت‌ها، پارتیشن‌ها و... در اینجا دارای یک فایل هستند. برای مثال فایل dev/fd0 نشاندهنده فلاپی درایو سیستم است و به همین ترتیب. بسیاری از برنامه‌های کاربردی از این فایلهای دسترسی برای خواندن و نوشتن داده‌ها بر روی ابزار مورد نظرشان استفاده می‌کنند. مثلا یک برنامه کاربردی فایل dev/fd0 را باز کرده و در آن می‌نویسد. در حقیقت اطلاعات روی درایو فلاپی و دیسکی که در آن قرار دارد، نوشته خواهد شد.
-شاخه etc: در این شاخه فایل‌های پیکربندی برنامه‌های سرویس دهنده و برخی فایلهای سیستمی دیگر قرار می‌گیرند. مثلا فایل پیکربندی سرویس دهنده وب آپاچی در سیستم‌های دبیان در etc/apache/http.conf قرار دارد و به همین ترتیب.
-شاخه home: در این شاخه دایرکتوری‌های خانگی کاربران سیستم و اطلاعات آنها قرار می‌گیرد. بهتر است این شاخه در یک پارتیشن جداگانه قرار گرفته و متصل شود. این کار حفاظت از داده‌های کاربران را بالاتر خواهد برد. ضمنا در صورت نیاز به فرمت و نصب مجدد سیستم، اطلاعات کاربران دست نخورده باقی مانده و پس از نصب مجدد، کلیه تنظیمات شخصی و اطلاعات آنها بدون تغییر باقی خواهند ماند.
-شاخه lib: این شاخه همانطور که از نام آن پیداست، محل قرار گیری فایل‌های کتابخانه برنامه‌ها است. این کتابخانه‌ها توسط برنامه‌های کاربردی و ابزارهای برنامه نویسی بکار گرفته می‌شوند.
-شاخه mnt: این شاخه معمولا دارای زیرشاخه‌هایی مانند floppy و cdrom بوده و محل اتصال سنتی درایوهای فلاپی و CD-ROM می‌باشد. همچنین پارتیشن‌ها دیگر دیسک سخت را نیز می‌توانید در این شاخه متصل نمایید. البته اجباری به این کار وجود ندارد. مثلا در سیستم‌های مبتنی بر دبیان، درایوهای فلاپی و CDROM در شاخه‌های floppy و cdrom که در زیر ریشه قرار دارند، متصل می‌شوند. اتصال و برداشتن اتصال پارتیشن‌ها و درایوها با استفاده از دستور mount صورت می‌گیرد. اشتراکات شبکه را نیز می‌توانید در این شاخه متصل نمایید.
-شاخه proc: این شاخه یک سیستم فایل مجازی است که برخی اطلاعات مربوط به سیستم و هسته از آن قابل دستیابی می‌باشد. مثلا فایل version در این شاخه حاوی اطلاعات هسته سیستم عامل مانند نسخه آن و ... می‌باشد.
-شاخه sbin: دستورات و برنامه‌های مدیریتی سیستم در این شاخه قرار می‌گیرند که مخصوص کاربر root است.
-شاخه tmp: محل قرارگیری برخی فایلهای موقتی برنامه‌های کاربردی است.
-شاخه usr: بسیاری از برنامه‌های کاربردی در این شاخه نصب می‌شوند. مثلا Xwindow در این شاخه قرار دارد. همچنین برخی دستورات و دستورات مدیریتی نیز در مسیرهای usr/bin و usr/sbin قرار می‌گیرند.
-شاخه var: این شاخه که معمولا در کامپیوترهای سرویس دهنده در یک پارتیشن جداگانه قرار می‌گیرد، مخصوص برنامه‌های سرویس دهنده‌ای مانند وب و FTP و بانکهای اطلاعاتی است. مثلا فایل‌های مربوط به یک وب سایت می‌توانند در var/www قرار گیرند. به دلیل اینکه در برخی از حملات DOS دیسک سخت سیستم با فایل‌های آشغال پر می‌شود، این شاخه را در یک پارتیشن جداگانه قرار می‌دهند که در صورت قرارگیری تحت حمله و پرشدن احتمالی دیسک سخت، کل سیستم عامل دچار وقفه نگردد و آسیب به همان قسمت محدود شود.

تمامی شاخه‌هایی که در بالا توضیح داده شد، می‌توانند در پارتیشن‌های جداگانه قرار داده شوند. ولی ضرورتی ندارد.

پارتیشن swap
هنگام نصب لینوکس، پارتیشنی به نام swap می‌سازید. کاربرد این پارتیشن چیست؟ این پارتیشن که تحت ساختار سیستم فایل جایی متصل نمی‌شود، محل قرارگیری swapping file لینوکس که همان حافظه مجازی روی دیسک سخت است، می‌باشد. بهتر است حجم آنرا برابر یا ۲ برابر حافظه سیستم خود تعیین نمایید.

آبجی
17th May 2010, 04:43 PM
تعریف نرم افزار آزاد
ما این تعریف را از نرم افزار آزاد(Free Software) ارائه می دهیم تا به وضوح نشان دهیم که چه مواردی باید در مورد یک نرم افزار خاص صدق کند تا آن نرم افزار آزاد تلقی شود.
نرم افزار آزاد موضوع آزادی است نه قیمت. برای درک این مفهوم ،باید به معنای کلمه free در عبارت free speech(سخن آزاد) فکر کنید نه به معنای آن در عبارتی مانند free beer.[توضیح این که کلمه free در زبان انگلیسی در دو معنای آزاد و رایگان به کار می رود.منظور نویسندگان در این جا مفهوم آزادی است نه رایگان بودن.بدیهی است به دلیل وجود دو کلمه جداگانه برای ترجمه این کلمه در فارسی،چنین مشکل لغوی وجود ندارد.]
نرم افزار آزاد موضوع آزادی کاربران در اجرا، کپی، توزیع، آموختن، تغییر دادن و توسعه نرم افزار است.
به بیان دقیقتر ،نرم افزار آزاد به چهار نوع آزادی(Freedom) برای کاربران یک نرم افزار اشاره می کند:

- آزادی برای اجرای برنامه به هر منظوری (آزادی ۰)
- آزادی برای آموختن نحوه عملکرد نرم افزار و سازگار کردن آن با نیازهای شخصی. (آزادی ۱). دسترسی به کد منبع پیش شرط این بند است.
- آزادی برای توزیع مجدد کپی برنامه تا بتوانید به همسایه خود کمک کنید! (آزادی ۲)
- آزادی برای اصلاح کردن و توسعه نرم افزار و منتشر کردن این اصلاحات برای همگان، که نتیجه آن منفعت‌های عمومی جامعه خواهد بود. (آزادی ۳). دسترسی به کد منبع پیش شرط این بند است.

برنامه ای آزاد است اگر کاربران آن همه این آزادی‌ها را داشته باشند. بنابراین، شما باید آزاد باشید تا کپی‌ها را با تغییر یا بدون تغییر، رایگان یا با دریافت وجهی برای توزیع، برای هرکس و هرجا مجددا توزیع کنید. آزاد بودن برای انجام این کارها (در میان مطالب دیگر) به این معنی است که شما مجبور نیستید از کسی اجازه بگیرید یا برای مجوز پولی پرداخت کنید.
شما همچنین باید این آزادی را داشته باشید که در برنامه تغییراتی ایجاد کنید و آنها را به طور خصوصی در کار خود استفاده کنید. بدون این که حتی وجود آنها را متذکر شوید. اگر شما تغییراتتان را منتشر کنید، نباید مجبور باشید که شخص مخصوصی را به روش خاصی آگاه کنید.
آزادی برای استفاده از یک برنامه به معنای آزادی برای هر شخص یا سازمان برای استفاده در هر نوع سیستم رایانه‌ای، هر نوع کار، و بدون نیاز به ارتباط بعدی با توسعه دهنده یا هر نهاد خاص دیگر است.
آزادی برای توزیع مجدد کپی‌ها، باید شامل شکل دودویی یا اجرایی برنامه، همانند کد منبع (Source Code) باشد، چه برای نسخه تغییر یافته و چه برای نسخه بدون تغییر. (توزیع برنامه‌ها در شکل اجرایی برای سیستم عامل‌های آزادی که به راحتی نصب می شوند، الزامی است). اگر هیچ راهی برای تولید فرم اجرایی یا دودویی یک برنامه مشخص وجود نداشته باشد، مشکلی نیست.(چون برخی زبانها، این ویژگی را پشتیبانی نمی‌کنند)اما شما باید این آزادی راداشته باشید که اگر راهی برای برای تولید برنامه در این فرمها یافتید، آن را مجددا در حالت اجرایی و دودویی توزیع کنید.
برای وجود آزادی به منظور ایجاد تغییر و انتشار نسخه های توسعه یافته، شما باید به کد منبع دسترسی داشته باشید. بنابراین، دسترسی به کد، شرطی اساسی برای نرم افزار آزاد است.
به منظور واقعی بودن این آزادی‌ها، آنها باید تا زمانی که شما کار خطایی انجام نداده اید، غیر قابل فسخ بمانند. اگر توسعه دهنده نرم افزار این قدرت را داشته باشد، که بدون انجام دادن کاری که موجب ابطال شود، مجوز نرم‌افزار را باطل کند، نرم افزار آزاد نیست.
به هر حال،انواع خاصی از قوانین، در مورد نحوه توزیع نرم افزار آزاد، زمانی که آزادی ها اصلی را نقض نکنند، قابل قبول هستند. برای مثال، Copyleft (به زبان ساده) قانونی است که طی آن و در هنگام توزیع مجدد برنامه، شما نمی توانید محدودیتی برای رد آزادیهای اصلی کاربران قائل شوید. این قانون، نه تنها با آزادی‌های اصلی منافاتی ندارد، بلکه آنها را نیز حفظ می کند.
بنابراین، شما ممکن است برای برای دریافت نسخه های نرم افزار آزاد، پول پرداخت کرده باشید و یا ممکن است آنها را بی هیچ هزینه‌ای گرفته باشید. اما بدون در نظر گرفتن این که شما چگونه نرم افزار را دریافت کرده‌اید، شما همیشه این آزادی رادارید، که نرم افزار را تکثیر کنید و یا تغییر بدهید، یا حتی آن را بفروشید.
“نرم افزار آزاد ” به معنای “ غیر تجاری” نمی‌باشد، یک برنامه آزاد باید برای استفاده، توسعه و توزیع تجاری در دسترس باشد. توسعه تجاری یک برنامه آزاد دیگر غیر معمولی نیست، بلکه این گونه نرم افزارهای آزاد تجاری بسیار مهم هستند.
قوانین مربوط به به چگونگی بسته کردن یک نسخه تغییر یافته هم اگر به طور موثر مانع آزادی شما برای منتشر کردن نسخه های تغییریافته نشود، قابل قبول است. قوانینی مانند “اگر شما برنامه به این روش قابل دسترس کنید،باید آن را به آن روش نیز قابل دسترس کنید“ هم می تواند با همان شرط قابل قبول باشد. (توجه داشته باشید که این قانون گزینه منتشر کردن یا نکردن برنامه را برای شما باقی می گذارد.) همچنین این قابل قبول است که اگر یک مجوز بخواهد هنگامی که نسخه تغییر یافته را منتشر کردید و توسعه دهنده قبلی یک نسخه از آن را در خواست کرد، باید برای او بفرستید.
در پروژه گنو، ما از Copyleft برای حفاظت قانونی از این آزادی‌ها برای اشخاص استفاده می کنیم. اما نرم‌افزارهای آزاد بدونCopyleft هم موجودند. ما اعتقاد داریم که دلایل مهمی وجود دارند که چرا استفاده از Copyleft بهتر است، اما اگر برنامه شما یک نرم افزار آزاد بدون کپی لفت است، ما همچنان می توانیم از آن استفاده کنیم.
برای تشریح چگونگی ارتباط نرم افزار آزاد،نرم افزار Copyleft شده و دیگر موضوعات نرم افزار با هم، مقالات نرم‌افزار آزاد را ببینید.
گاهی اوقات، مقررات کنترلی صادرات و مصوبات تجاری دولت،می توانند آزادی شما را برای توزیع بین المللی نسخه‌های برنامه، تحت الشعاع قرار دهند. توسعه دهندگان نرم‌افزار این قدرت را برای حذف یا زیر پا گذاشتن این محدودیت ها ندارند، اما کاری که می‌توانند و باید انجام دهند، این است که از تحمیل کردن آنها به عنوان شرایط استفاده از برنامه خودداری کنند. بدین ترتیب، محدودیتها بر فعالیتها و مردمی که خارج از قلمرو این دولت‌ها هستند، تاثیری نمی گذارند.
بسیاری از لیسانسهای نرم افزار آزاد بر اساس کپی رایت(Copyright) بنا شده اند، و برای درخواستهایی که با کپی رایت تحمیل می شود، محدودیتهایی موجود است. اگر یک لیسانس مبتنی بر کپی رایت، آزادی را به شیوه هایی که در بالا تشریح شدند، محترم می شمرد، بعید است که مشکلات دیگری را که ما هرگز پیش بینی نمی کنیم، پیش بیاورد، (گرچه گه گاه این موارد صورت می گیرند) به هر حال، برخی از لیسانسهای نرم افزار آزاد بر پایه قراردادها(Contract) قرار دارند، و قراردادها طیف گسترده تری از محدودیتها تحمیل می کنند. این بدان معنی است که راههای بسیاری وجود دارند که یک لیسانس محدود و غیر آزاد باشد.
ما نمی توانیم همه محدودیت های قرارداد را که قابل قبول نیستند، لیست کنیم. اگر یک مجوز مبتنی بر قرارداد کاربر را به روشی غیر عادی محدود کند (در حالی که مجوز مبتنی بر کپی رایت این چنین محدود نکند) و اینجا هم قانونی تلقی نشود، شما باید در مورد آن فکر کنید، و ما احتمالا آن را غیر آزاد می دانیم.
هنگامی که در مورد نرم افزار آزاد صحبت می کنیم، بهتر است از به کار بردن کلماتی چون “هدیه دادن”(Give Away) یا “رایگان” (For Free) خودداری کنید. زیرا این اصطلاحات این معنی را می رسانند که موضوع در مورد قیمت است نه آزادی. کلمات مصطلحی چون “کپی غیر قانونی”(Piracy) نظراتی را القاء می کنند که ما امید واریم شما بر آنها صحه نگذارید. برای بحث در این مورد، “ کلمات و عبارات گیج کننده که اجتناب کردن از آنها با ارزش است” را ببینید. ما همچنین لیستی از ترجمه نرم افزار را به زبانهای مختلف داریم.
در نهایت، ملاکهایی مانند آنها که در تعریف نرم افزار آزاد ذکر شده اند، برای تفسیر به توجه و فکر نیاز دارند. برای تصمیم در مورد این که آیا یک مجوز صلاحیت مجوز نرم افزار آزاد بودن را دارد، ما براساس همین ملاکها قضاوت می کنیم تا تعیین کنیم آیا علاوه بر کلمات و اصطلاحات استفاده شده، معنی و مفهوم آن نیز مناسب است یا نه. اگر در یک مجوز محدودیتی نا معقول وجود داشته باشد، ما آن را قبول نمی کنیم، حتی اگر آن محدودیتها را در این ملاکها پیش بینی نکرده باشیم. گاهی اوقات، درخواستهای یک مجوز موضوعی را به وجود می آورند که قبل از تایید آن نیاز به تحقیق و تفحص بیشتر (مانند بحث و تبادل نظر با یک وکیل) است. هنگامی که ما در مورد موضوعی جدید، به نتیجه دست پیدا می کنیم، این ملاکها را به روز می کنیم تا تعیین صلاحیت مجوزها را آسان‌تر کنیم.
اگر شما علاقه دارید بدانید که یک مجوز صلاحیت مجوز های نرم افزار آزاد را دارد، لیست مجوزهای ما راببینید. اگر مجوزی که برای شما مهم است،اینجا ذکر نشده، شما می توانید با فرستادن ای میل به licensing@gnu.org درباره آن بپرسید.
اگر شما به فکر نوشتن یک مجوز هستید، لطفا با همان آدرس با FSF (بنیاد نرم افزار آزاد) تماس بگیرید. افزایش تعداد مجوزهای آزاد به معنی کار های انجام شده بیشتر برای کاربران به منظور درک مجوزهاست. ما ممکن است بتوانیم شما را در یافتن مجوزی که نیازهای شما را برآورده کند، یاری کنیم.
اگر این امکان پذیر نباشد، و اگر شما واقعا به یک مجوز جدید نیاز دارید، با کمک ما می‌توانید با اجتناب به وجود آمدن مشکلات عملی، بفهمید که آیا مجوز آزاد است یا نه!
گروه دیگری استفاده کردن از عبارت “بازمتن” (OpenSource) را آغاز کرده اند تا مفهومی نزدیک(نه یکسان) به نرم افزار آزاد را داشته باشد. ما عبارت“نرم افزار آزاد” را ترجیح می دهیم، زیرا به محض این که این عبارت را بشنوید،به یاد آزادی می افتید نه قیمت!!

آبجی
17th May 2010, 04:44 PM
گنو/لینوکس با ویندوز چه تفاوتی دارد؟

یکی از نخستین سوالاتی که در ذهن هر کاربری که به تازگی نام گنو/لینوکس به گوشش خورده است، مطرح می‌شود، این است که خوب گنو/لینوکس چه تفاوتی با ویندوز دارد؟ من در این مقاله قصد دارم بدون اینکه وارد مسائل خیلی فنی شوم، به طور اجمالی این موضوع را تشریح کنم.

لینوکس چیست؟
لینوکس به خودی خود، یک هسته (Kernel) است. هسته، بخش اصلی سیستم‌عامل را تشکیل می‌دهد که کار آن کنترل داده‌ها، مدیریت حافظه، سخت‌افزار، ورود و خروج داده‌ها و تمامی موارد اصلی سیستم‌عامل می‌باشد. همانطور که گفتم، لینوکس به خودی خود سیستم‌عامل به شمار نمی‌رود، بلکه با استفاده از ابزارهایی که پروژه گنو (GNU) برای آن تولید کرده است، تبدیل به یک سیستم‌عامل کامل می‌شود (به همین دلیل است که لینوکس را معمولا گنو/گنو/لینوکس یا GNU/Linux می‌نامند) و با اضافه کردن سایر نرم‌افزارهای بازمتن به آن، می‌توان از آن در موارد متعددی مانند سرویس‌دهنده‌ها، ایستگاه‌های کاری، کامپیوترهای روی‌میزی، ابر رایانه‌ها، ابزارهای صنعتی و پزشکی که دارای سیستم‌های درونه‌ای (Embedded) می‌باشند و... استفاده کرد.
از نظر فنی، گنو/لینوکس را می‌توان نمونه بازمتن و آزاد سیستم‌عامل‌های خانواده یونیکس نامید. زیرا بر اساس استاندارد POSIX پیاده سازی شده و کاملا با آن سازگار است. بنابراین گنو/لینوکس را می‌توان نواده سیستم‌عامل پرسابقه و مستحکم یونیکس دانست که البته خواص خوب آنرا نیز به ارث برده است. اکنون تفاوت‌های اصلی گنو/لینوکس و ویندوز را با هم می‌شماریم:

گنو/لینوکس : سیستم‌عامل آزاد
گنو/لینوکس یک سیستم عامل آزاد و بازمتن است. کد منبع آن در اختیار همگان قرار دارد و همه می‌توانند در کدهای آن تغییر ایجاد کرده و بنا به نیازشان استفاده کنند. آزاد و در دسترس بودن کدهای منبع سبب می‌شود تا بتوانید از طرز کارکرد دقیق سیستم‌عامل مطلع شوید. شما بسیاری از توزیع‌های گنو/لینوکس را می‌توانید به هر تعداد کپی کرده و بین دوستانتان پخش کنید. در سمت مقابل، ویندوز یک سیستم‌عامل اختصاصی است که کد منبع آن سری نگهداشته شده و برای همگان در دسترس نیست. شما نمی‌توانید بفهمید که واقعا در زیر سیستم‌عامل ویندوزتان چه می‌گذرد؟ آیا یک برنامه جاسوسی در آن پنهان نشده است؟ بعید نیست. سیستم عامل ویندوز رایگان نبوده و شما نمی‌توانید آنرا کپی کرده و پخش کنید. در صورت این کار شما خلاف‌کار هستید و جریمه و مجازات خواهید شد. (فعلا نه در ایران ولی در ۴-۶ سال آینده بله)
گنو/لینوکس را به هواپیمایی تشبیه کرده‌اند که هر قسمت از انرا در جایی ساخته‌اند. گنو/لینوکس واقعا محصول کشور خاصی نیست. تعداد زیادی از مردم در سرتاسر جهان در حال کار بر روی بخش‌های مختلف آن و توسعه آن هستند. تعداد برنامه نویسانی که روی بخش‌های مختلف سیستم‌عامل گنو/لینوکس کار می‌کنند، به حدود ۴۰۰ هزار نفر می‌رسد، تفاوت کیفیت کار را مشخص می‌کند.
شما با سیستم‌عامل گنو/لینوکس آزاد هستید. لازم ندارید تا از نرم‌افزارهای اختصاصی استفاده کنید و تحت انقیاد آنها در آیید.

گنو/لینوکس : سرعت، قدرت، پایداری
همانطور که گفتم، گنو/لینوکس نواده سیستم‌عامل یونیکس است. بنابراین ساختار کلی این سیستم‌عامل کاملا با ویندوز متفاوت است. این به این معنی است که مثلا شما نخواهید توانست برنامه‌هایی که در ویندوز دارید، روی گنو/لینوکس اجرا نمایید (البته راه‌هایی وجود دارد – شبیه سازها - ولی در حالت عادی خیر). یکی از خواص اصلی سیستم‌عامل‌های خانواده یونیکس، پایداری و استقامت بسیار بالای آنهاست. این سیستم‌عامل‌ها به این راحتی‌ها خراب نشده و به ندرت نیاز به بوت مجدد پیدا می‌کنند. گنو/لینوکس‌هایی وجود دارند که شما می‌توانید سالها بدون نیاز به بوت، از آنها استفاده نمایید. در سمت مقابل، حتی جدیدترین و پایدارترین سیستم‌های ویندوز نیز اندازه گنو/لینوکس پایدار نیستند. برای بکارگیری سیستم‌های ویندوز به عنوان سرویس دهنده به حافظه و پردازنده‌های قویتری نیاز دارید و مطمئن باشید اگر هر چند روز آنرا بوت نکنید، از کار خواهد افتاد! معمولا سیستم‌عامل گنو/لینوکس به راحتی خراب نمی‌شود و برعکس ویندوز مجبور نیستید تا آنرا هر چندماه یکبار مجددا نصب کنید. حتی برخی از انواع گنو/لینوکس به نصب «یکبار برای تمامی عمر» مشهور هستند. این گونه سیستم‌ها را می‌توانید حین کار و حتی بدون بوت، به نسخه‌های جدیدتر ارتقا دهید.

گنو/لینوکس : امنیت، امنیت، امنیت
امروزه در دنیایی متکی بر فناوری اطلاعات زندگی می‌کنیم که هر لحظه به خطر افتادن جریان اطلاعات منجر به بروز خسارت‌های تجاری جبران ناپذیری خواهد شد. امروزه همه به دنبال یک سکوی (Platform) امن‌تر برای اجرای برنامه‌های کاربردی و سروی‌دهنده‌ها هستند. با اینکه مبحث امنیت یک مقوله نسبی است، گنو/لینوکس حرف‌های زیادی برای گفتن در سمت امنیت دارد. بسیاری از قابلیت‌های امنیتی که در ویندوز وجود ندارند و یا فقط با اضافه کردن نرم‌افزارهای اضافی قابل دسترسی می‌باشند، بطور درونی و پیش‌گزیده در گنو/لینوکس پیاده سازی شده‌اند. گنو/لینوکس از ابتدا برای محیط‌های شبکه‌ای و چند کاربره طراحی شده است و همین باعث رعایت مسائل امنیتی از ابتدا در ان شده است، درحالی که ویندوز اینگونه نبوده و درحال حاضر نیز از نظر امنیتی دارای نقاط ضعف فراوانی است. مثلا یک برنامه مخرب با استفاده از همین ضعف‌های امنیتی می‌تواند کل سیستم‌عامل را نابود کند، ولی در صورتی که مورد مشابهی در گنو/لینوکس وجود داشته باشد، حداکثر به دایرکتوری خانگی کاربر اجرا کننده آسیب خواهد رسید، نه کل سیستم‌عامل.
اینطور نیست که گنو/لینوکس فاقد هر گونه اشکال امنیتی باشد، خیر، ولی باز بودن کد منبع آن باعث می‌شود تا بسیاری از اشکالات امنیتی پیش از ایجاد خسارت و در مراحل توسعه و برنامه نویسی برنامه بر ملا شده و رفع شوند. در صورتی که اشکالی نیز در برنامه‌های منتشر شده یافت شود، بدلیل موجود بودن کد منبع سریعا برطرف می‌گردد. در صورتی که در سیستم عامل ویندوز شما باید منتظر مایکروسافت بمانید و بمانید و بمانید (مثلا هم اکنون ۲۱ اشکال امنیتی در مرورگر IE وجود دارد که مایکروسافت هنوز هیچ وصله‌ای برای آن ارائه نداده است). سیستم‌عامل ویندوز دارای اشکالات امنیتی بسیاری است که به راحتی هم کشف نمی‌شوند و هنگامی کشف می‌شوند که خسارات جبران ناپذیری در اثر حمله از طریق آن ضعف‌های امنیتی رخ دهد که امثال آنرا شاهد هستیم. در دنیای امنیت ضرب المثلی وجود دارد که امنیت با مخفی کاری حاصل نمی‌شود.
می‌توان ادعا کرد که تقریبا هیچ ویروسی برای گنو/لینوکس وجود ندارد و این درحالی است که سالیانه بیش از ۱۰۰۰ ویروس و کرم مختلف برای سیستم‌عامل ویندوز ایجاد می‌شود. این بخاطر عدم گسترده بودن گنو/لینوکس نیست (حدود ۷۰ درصد از سایت‌های وب در جهان بر روی سیستم‌عامل‌های خانواده یونیکس و گنو/لینوکس و سرویس‌دهنده وب آپاچی درحال اجرا هستند) بلکه بدلیل وجود حفره‌های امنیتی متعدد ویندوز و سیاست انحصار گرایی مایکروسافت است. یعنی چه؟ مایکروسافت طوری رفتار و سیاست گذاری کرده است که مشتریان خود را تنها به محصولات خودش عادت دهد. بسیاری از کاربران ویندوز از اینترنت اکسپلورر و آتلوک برای مرور وب و پست الکترونیک استفاده می‌کنند. من به عنوان یک ویروس نویس، می‌دانم که اگر ویروسی را برای کاربران ویندوز بنویسم، بر روی کامپیوترهای ۹۰ درصد آنها اثر خواهد کرد. چون اکثرا از IE و Outlook استفاده می‌کنند. ولی در گنو/لینوکس چطور؟ در گنو/لینوکس شما طیف وسیعی از انتخاب و عدم اجبار دارید. من از مرورگر موزیلا استفاده میکنم. دوستی دارم که Konqueror را ترجیح می‌دهد. دیگری از Opera استفاده می‌کند. من از Kmail استفاده می‌کنم. دوستم از Evolution، دیگری از Pine و بعدی از Mutt و برادرم هم از Mozilla Mail. من فقط می‌توانم برای یکی از اینها ویروس بنویسم چون روی بقیه کار نخواهد کرد و عملا میزان اثر آن انداک خواهد بود. ضمنا هیچیک از ویروس‌هایی که برای ویندوز نوشته شده‌اند، بر روی گنو/لینوکس کار نمی‌کنند.

گنو/لینوکس : تعدد سکوهای اجرایی
گنو/لینوکس برخلاف ویندوز بر روی تعداد زیادی از سکوهای مختلف سخت‌افزاری اجرا می‌شود و شما حتی قادرید آنرا برای کار بر روی سکوی مورد نظرتان تغییر دهید. این قابلیت، گنو/لینوکس را برای بکارگیری در سخت‌افزارهای درونه‌ای (Embedded) بسیار مناسب می‌سازد. هسته 2.6 گنو/لینوکس این امکان را فراهم می‌سازد تا گنو/لینوکس را بر روی دستگاه‌های بسیار کوچک و یا ابر رایانه‌های بسیار بزرگ اجرا نمایید.

گنو/لینوکس : گسترده‌ترین تنوع در کاربرد
گنو/لینوکس را می‌توانید برای انجام وظایف بسیار متعددی بکار بگیرید. از دستگاه چک کردن اتصالات شبکه، دیوار آتش، مسیریاب (Router) شبکه، سرویس‌دهنده‌های مختلف مانند وب، بانک اطلاعاتی، فایل، چاپ و...، میزهای کار (Desktop)، ایستگاه‌های کاری (Workstations) و... سیستم‌عامل گنو/لینوکس حتی این امکان را دارد که از آن بتوان به صورت یک سیستم زنده و پرتابل استفاده کرد. به این معنی که کل سیستم‌عامل از روی یک دیسک CD اجرا شود و شما آنرا با خودتان جابجا کنید و میزکار و تنظیماتتان را همراه خودتان منتقل کنید. علاوه بر این، این قابلیت برای رفع اشکال و نمایش آن نیز بسیار مفید است.

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

گنو/لینوکس : سیستم‌عاملی حرفه‌ای
گنو/لینوکس یک سیستم‌عامل حرفه‌ای است. یعنی ممکن است یک کاربر کاملا غیر فنی برای مدیریت آن و انجام برخی از تنظیمات سخت‌افزاری دچار مشکل شود و نتواند به راحتی این کار را انجام دهد. البته برخی از توزیع‌های گنو/لینوکس این امور را بسیار راحت (و حتی راحت‌تر از ویندوز) کرده‌اند، ولی با این حال به طور کلی، گنو/لینوکس یک سیستم‌عامل حرفه‌ای است که در عین سادگی، از پیچیدگی‌های فنی زیادی برخوردار است. البته تمام کاربران لازم نیست این امور را بدانند. مثلا یک کارمند دفتری که اموری مانند تایپ و حسابداری را با کامپیوترش انجام می‌دهد، ممکن است از نظر فنی تفاوتی را احساس نکند، ولی گنو/لینوکس خوراکی ۴ ساله برای کاربران خوره فراهم می‌سازد! برخلاف ویندوز، نکات بی‌پایانی برای یادگیری در گنو/لینوکس وجود دارد. این سیستم‌عامل ۴ سال به راحتی شما را مشغول خواهد کرد و می‌توانید مطمئن باشید پس از آن بازهم مطالب جدیدی برای یادگیری وجود خواهند داشت! پس خوره‌های کامپیوتری از آن لذت وافری خواهند برد و هرگز آنرا رها نخواهند کرد.
برخلاف ویندوز، در گنو/لینوکس راحت‌تر هستید تا بسیاری از کارهای پیکربندی و سیستمی را از خط فرمان بسیار قدرتمند و عالی آن انجام دهید. با اینکه برای بسیاری از امور مانند ویندوز ابزارهای گرافیکی طراحی شده است، یک کاربر حرفه‌ای واقعا از خط فرمان گنو/لینوکس لذت خواهد برد. خط فرمان ویندوز را اصلا می‌توان خط فرمان نامید؟

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

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

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

آبجی
17th May 2010, 04:44 PM
کدام توزیع گنو/لینوکس را انتخاب کنیم؟

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

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

علت تنوع توزیع‌ها چیست؟
هر یک از توزیع‌های گنو/لینوکس دارای ویژگی‌های خاصی است که آنرا از توزیع دیگر متمایز می‌کند. مثلا ممکن است برنامه‌های نصب آنها با هم تفاوت داشته باشند (البته اصول نصب همه گنو/لینوکس‌ها یکسان است) و یا ابزارهای مدیریتی گرافیکی تهیه شده با هم متفاوت باشند و یا نسخه برنامه‌هایی که با یک توزیع خاص ارائه می‌شوند جدیدتر یا قدیمی‌تر باشند، محل فایل‌های پیکربندی آنها متفاوت باشد، و یا ممکن است توزیع‌هایی مخصوص امور خاص طراحی شده باشند. مثلا مخصوص سرویس‌دهنده‌ها، مخصوص ایستگاههای کاری، مخصوص کامپیوترهای قدیمی، مخصوص مدیریت شبکه، مخصوص چند رسانه‌ای، مخصوص بازی و به همین ترتیب. بنابراین هر فرد یا گروه خلاقی می‌تواند توزیع مخصوص خود را ارائه نماید. مثلا برخی از توزیع‌ها برای نصب و پیکربندی آسان بهینه سازی شده‌اند.
توزیع‌ها به دو صورت تجاری و رایگان ارائه می‌شوند. یعنی در ازای دریافت یا استفاده از خدمات پشتیبانی برخی از آنها باید پول پرداخت شود و برخی از آنها رایگان هستند. البته به هر حال شما در اکثر موارد قادرید تا یک توزیع گنو/لینوکس را چه رایگان و چه تجاری به تعداد نامحدود کپی و توزیع نمایید، مگر آنکه تولید کننده شما را محدود کرده باشد. اکثر توزیع‌های غیر تجاری و برخی از توزیع‌های تجاری بصورت رایگان از سایت‌های مربوطه قابل دانلود هستند.
در صورتی که گنو/لینوکس را یاد بگیرید، مهم نیست از چه توزیعی استفاده کنید. چون همه آنها ذاتا شبیه هم هستند و تمام اموری که در یک توزیع انجام می‌دهید، در توزیع دیگر نیز قابل انجام خواهد بود (شاید به نحو دیگر و با اندکی تفاوت).
برخی از توزیع‌ها از ایجاد تغییرات و بهینه‌سازی‌هایی در توزیع‌های دیگر ایجاد شده‌اند که آنها را توزیع‌های مبتنی بر یک توزیع می‌نامند. مثلا توزیع Ubuntu یک توزیع مبتنی بر دبیان است. یا مثلا توزیع فارسی پارسیکس یک توزیع مبتنی بر KANOTIX است.

شما هم می‌توانید!
بله در صورتی که گنو/لینوکس را کاملا یاد گرفته باشید و مقداری خلاقیت و برنامه نویسی بلد باشید، قادر خواهید بود تا توزیع خودتان را ایجاد کنید. راهنماهای بسیاری در مورد ایجاد یک توزیع گنو/لینوکس منتشر شده است که یکی از بهترین این راهنماها، کتاب LFS یا Linux From Scratch نام دارد که آنرا می‌توانید از اینجا مطالعه یا دانلود نمایید.

کدام توزیع؟
همانطوری که در بالا اشاره کردم، هر یک از توزیع‌ها دارای ویژگی‌های خاص خود هستند. مثلا برنامه نصب یک توزیع بسیار راحت است و یک توزیع دیگر ممکن است از نظر پایداری و امنیت مطرح باشد و به همین ترتیب. انتخاب توزیع بستگی به شرایط زیر دارد:

- سطح علمی کاربر
- مورد استفاده از گنو/لینوکس
- ویژگی‌های توزیع
- بازار

اکنون به بررسی یکایک این شرایط می‌پردازیم.

الف: سطح علمی کاربر: کاربرانی که دارای آشنایی کمتری با گنو/لینوکس هستند، جذب توزیع‌هایی می‌شوند که دارای ابزارهای پیکربندی گرافیکی است که آنها را قادر می‌سازد راحت‌تر سیستم‌شان را اداره و نصب نمایند. همچنین دارای نرم‌افزارهای جدیدی باشد که به آنها حداکثر قابلیت‌ها را ارائه نماید. از توزیع‌هایی که برای کاربران تازه کار مناسب‌تر هستند، می‌توان اوبونتو (Ubuntu)، زوزه (SuSE)، فدورا (Fedora)، مندریوا (Mandriva)، لیندوز (Lindows)، لیکوریس (Lycoris)، مپیس (Mepis) و XandarOS را نام برد. کاربرانی که پیشرفته‌تر هستند و ابزارهای پیکربندی گرافیکی برایشان مهم نبوده، کیفیت و سرعت سیستم برایشان مهم‌تر است جذب توزیع‌های حرفه‌ای‌تر مانند دبیان (Debian)، جنتو (Gentoo) و اسلکور (Slackware) می‌شوند. ممکن است نصب و راه‌اندازی این توزیع‌ها برای کاربران تازه‌کار دشوار باشد، ولی در عوض هر سه آنها بسیار باکیفیت و پایدار هستند.

ب: مورد استفاده از گنو/لینوکس: برخی از توزیع‌ها مخصوص نیازهای خاصی طراحی شده‌اند. مثلا امروزه از اصلی‌ترین نیازها می‌توان به سرویس‌دهنده‌ها و ایستگاه‌های کاری اشاره نمود. البته برخی از توزیع‌ها این امکان را به شما می‌دهند که هنگام نصب، نوع مصرف آنها را تعیین کنید و با توجه به انتخاب شما، نرم‌افزارهای مربوط به آن مصرف خاص نصب خواهند شد. مثلا اوبونتو، فدورا و دبیان این امکان را دارا هستند. برخی از توزیع‌ها تنها مخصوص یک نیاز طراحی شده‌اند و دارای ابزارهای مربوط به آن نیاز می‌باشند. مثلا گنو/لینوکس کناپیکس (Knoppix) که یک توزیع روی میزی است، تنها دارای ابزارهایی است که برای کاربران روی میزی کاربرد دارد، و یا گنو/لینوکس SOL تنها به درد وظایف یک سرویس‌دهنده می‌خورد.

ج: ویژگی‌های توزیع: برخی اوقات یک توزیع دارای ویژگی‌های خاصی است که آنرا برای استفاده قابل انتخاب می‌سازد. مثلا گنو/لینوکس اورالوکس (Oralux) دارای امکانات مخصوص نابینایان می‌باشد. مانند شناسایی صفحه نمایش‌های بریل و یا مرور صوتی وب و پست الکترونیک. و یا یک گنو/لینوکس ممکن است سخت‌افزارهای خاصی را به خوبی پشتیبانی نماید. و یا ممکن است سرعت و کیفیت یک توزیع یا آسانی استفاده از آن ملاک انتخاب قرار گیرد.

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

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

مصرف میزکار(Desktop)/ایستگاه‌کاری – کاربران تازه‌کار: اوبونتو (Ubuntu)، زوزه (SuSE)، پارسیکس (Parsix)، مپیس (MEPIS)، فدورا (Fedora)،
مصرف میزکار(Desktop)/ایستگاه‌کاری – کاربران حرفه‌ای: دبیان (Debian)، اسلکور (Slackware)، جنتو (Gentoo)
مصرف سرویس‌دهنده: دبیان (Debian)، اسلکور (Slackware)، فدورا (Fedora)
دیسک‌های زنده: کناپیکس (Knoppix)، پارسیکس (Parsix)، کانوتیکس (Kanotix) شبدیکس (Shabdix)

توضیح اینکه دیسک‌های زنده گنو/لینوکس‌هایی هستند که کاملا از روی CD اجرا می‌شوند و نیازی به نصب آنها روی سیستم نیست. این دیسک‌ها برای مصارف آموزشی، عیب زدایی و نمایشی مناسب می‌باشند.

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

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