مقدمهای برای شروع
قصد ندارم بگویم که چگونه در سال ۱۹۹۱ لینوس توروالدز اولین نسخه از هسته سیستم لینوکس را نوشت. همچنین نمیخواهم بگویم که چطور چندسال قبل از آن بزرگ مردی به نام ریچارد استالمن پروژه GNU را برای ایجاد یک سیستم عامل یونیکس مانند شروع کرد. اینها با اهمیت هستند لیکن در بسیاری از مقالات و کتابهای تألیف و ترجمه شده به زبان فارسی و سایتها و وبلاگهای فارسی زبان طرفدار گنو-لینوکس و نرمافزارهای آزاد به خوبی توسط استادان فن بیان گردیدهاند.
از زمانی که دانشجوی جوانی بودم و از انجام برخی عملیات پیچیدهتر ریاضی به وسیله ماشین حساب تازه خریداری شدهام حیرت میکردم و برنامههای کوچک نوشته شده به زبان فرترن را در کارتهای پانچ شده از طریق دریچهای به متصدی سایت کامپیوتر دانشگاه تحویل میدادم و فقط در آن لحظه امکان رؤیت فضای سایت را مییافتم، چهار دهه میگذرد. امروز جهان بسیار متفاوت است. کامپیوترها در همه جا حضور دارند و علاوه بر آن از طریق شبکه جهانی به یکدیگر متصل میگردند.
بیش از دو دهه یک کمپانی غولپیکر کنترل خود را بر دنیای کامپیوترها تحمیل میکرد و تصمیم میگرفت که شما با کامپیوتر چه میتوانید و چه نمیتوانید انجام دهید.
خوشبختانه مردمانی از سراسر جهان تلاشی در جهت رفع این تحمیل سوداگرانه انجام دادند. آنها با نوشتن برنامههای خود برای به دست گرفتن کنترل کامپیوترهایشان جنگیدند، آنها گنو-لینوکس را ساختند .
آزادی چیست؟
بسیاری از کاربران شنیده یا خواندهاند که گنو-لینوکس یعنی آزادی. اما آزادی واقعاً به چه معناست؟ آزادی در اینجا، یعنی قدرت تصمیمگیری در باره آنچه کامپیوتر شما انجام میدهد. یعنی امکان دانستن هرآنچه که لازم میباشد، در باره کامپیوترتان و اعمال آن اگر به اندازه کافی علاقمند و پیگیر باشید..
امروزه اکثر کاربران کامپیوتر با رابط گرافیکی کاربر( GUI ) آشنا هستند، اما شاید شنیده باشند و در این تصور غلط باشند که رابط خط فرمان( CLI ) چیزی وحشتناک و مربوط به گذشته میباشد. این مایه تأسف است، زیرا یک رابط خط فرمانی خوب، کارآمدترین استفاده از قدرت سیستم را در اختیار شما قرار میدهد. چه خوب گفتهاند که« رابط گرافیکی کاربر وظایف ساده را آسان میکند و رابط خط فرمانی امور دشوار را ممکن میسازد ». و این یعنی امکان دستیابی به آن آزادی واقعی که گفته شد. شاید لازم باشد اضافه گردد که CLI میتواند مرعوب کننده و محیط بیرحمی باشد. زیرا یک واقعیت است که خط فرمان از انجام کارهایی توسط شما که میتواند موجب خسارات جبران ناپذیر در سیستم گردد پیشگیری نمیکند و شما بایستی آگاهانه از آن استفاده نمایید.
بنابراین میخواهم به سهم خود، در باره خط فرمان در گنو-لینوکس به صورت جزئی( دستورات ) و کلان( اسکریپتها ) بنویسم. درباره پوسته( shell ) و با گرایش بیشتر بر پوسته گنو یعنی Bash و بهویژه اسکریپتنویسی با آن، زیرا کمبود منابع فارسیزبان در این بخش بیشتر احساس میشود.که البته بیشتر به ترجمه منابع معتبر موجود پرداخته خواهد شد.
جعبه ابزار
نجارها معمولاً جعبه ابزاری دارند، که پیچ و میخ و چکش، سنباده و سوهان، پیچگردان و آچار، یا مته و دریل یا حتی سنباده زن برقی و غیره را در آن قرار میدهند. و از اینها برای ساختن چیزهایی چون میز و صندلی و هر گونه وسایل ریز و درشت چوبی استفاده میکنند. یکی از مهمترین مسائل در جریان تولید یا تعمیر این وسایل، استفاده درست و به جا از این ابزار در جریان کار، و اینکه کدام ابزار در کجا و چگونه به کار میآید، است. و این امر به دانش و تجربه مربوط میگردد.
اسکریپت نویسی پوسته نیز مشابه این مورد است. ابزارهایی که در اینجا به کار گرفته میشوند، دستورات یا برنامههای سودمند میباشند. در اینجا هم ابزارهای سادهای مانند ls و cd تا ابزارهای قدرتمندی چون sed و awk و خود shell وجود دارند.
ابزارهای ساده برای یادگیری، آسان هستند. و احتمالاً شما با بسیاری از آنها آشنا هستید، اما برنامههای قدرتمند، زمان بیشتری برای یادگیری میطلبند، لیکن وقتی بر آنها تسلط بیابید، قادر خواهید شد هر مشکلی را مهار کنید. ما تلاش خواهیم کرد چگونگی استفاده از هم ابزارهای ساده و هم ابزارهای قدرتمند را یاد بگیریم
یک طرح کلی
اگر شما از قبل با گنو-لینوکس کار نکرده باشید، ممکن است از در دسترس بودن نسخههای متعدد آن سر در گم بشوید. شاید عبارتهایی چون توزیع، گنو، دیسک زنده، شل، خطفرمان، و غیره در آغاز آشنایی باعث آشفتگی ذهن شما گردیده باشد. تلاش برای ورود به دنیای گنو-لینوکس میتواند برای اولین بار آزمون گمراه کنندهای باشد. شاید یک طرح کلی قبل از شروع کار با خط فرمان و اسکریپتها در باره گنو-لینوکس و اینکه چطور کار میکند و خط فرمان و شل در کجای تصویر کلی آن میگنجد، بتواند تا حدودی این رازآلودگی را کاهش دهد. در یک سیستم گنو- لینوکس چهار بخش اصلی وجود دارد.
۱- کرنل لینوکس
۲- ابزارهای گنو
۳- محیط رومیزی گرافیکی
۴- نرمافزارهای کاربردی
هر یک از این بخشها کار مهمی در سیستم گنو-لینوکس انجام میدهند و با یکدیگر در ارتباط متقابل هستند. اما هر یک از اینها به تنهایی خیلی سودمند نمیباشد. همانگونه که در یادداشت دوم اشاره نمودم، میخواهم در باره پوسته یا شل و با تمرکز بر پوسته گنو بنویسم . بنابراین مطالب ما به دومین بخش از موارد فوق یعنی ابزارهای گنو مربوط میگردد. پروژه گنو در اصل برای اینکه مدیران سیستمهای یونیکسی، یک محیط یونبکس مانند در دسترس داشته باشند طراحی شد. و این موجب وارد شدن بسیاری ابزارهای یونیکس در آن گردید. به همین علت اگر در نوشتههای مربوط به خط فرمان با کلماتی چون یونیکس، مبتنی بر یونیکس، سازگار با یونیکس، محیط یونیکسی، یونیکس مانند، دستورات یا ابزارهای یونیکس به دفعات برخورد میکنید، به دلیل اشتراک موجود میان گنو-لینوکس و یونیکس مخصوصاً در ابزارهای خط فرمانی آنهاست. هسته مرکزی متصل کننده ابزارهای فراهم شده گنو برای سیستم لینوکس، یعنی بسته مغزی پروژه گنو شامل سه بخش است
ابزارهای مدیریت فایل
ابزارهای دستکاری و پردازش متن
ابزارهای مدیریت فرآیندها
این سه گروه ابزارهای اصلی هر کدام شامل چندین برنامه سودمند هستند، که برای مدیران سیستم و برنامهنویسان فوقالعاده گرانبها میباشند. یکی از مهمترین ابزارهای پروژه گنو، پوسته گنو یا Bash میباشد.