قدرت و کارایی عالی خط فرمان در گنو/لینوکس (3)

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

What is a shell?

At its base, a shell is simply a macro processor that executes commands. A Unix shell is both a command interpreter, which provides the user interface to the rich set of GNU utilities, and a programming language, allowing these utilitites to be combined. Files containing commands can be created, and become commands themselves. These new commands have the same status as system commands in directories such as `/bin’, allowing users or groups to establish custom environments.

منبع: رفرنس رسمی BASH
(This is Edition 2.5b, last updated 15 July 2002, of The GNU Bash Reference Manual, for Bash, Version 2.05b)

پس اینکه انتظار داشته باشیم تمام قابلیتهای شل و کاربردهاش رو در برنامه های با رابط گرافیکی معادل ببینیم، انتظار تقریبا عبث و بی معنایی هست. چون به این معنا، شل یک روش قدیمی برای انجام همهء کارها نیست، بلکه یک ابزار برنامه نویسی مخصوص تعبیه شده در سیستم عامل هست که مثل زبانهای برنامه نویسی دیگه (مثلا سی++، جاوا، بیسیک…) همیشه بوده و هست و احتمالا خواهد بود. نقص یک سیستم عامل در شل و یوتیلیتهای خط فرمان لازم، نقصی اساسی هست.
بطور کلی رابطهای گرافیکی اغلب برای انجام مجموعه کارهایی خیلی معمول، روزمره، مشترک، و نسبتا ساده (اما ممکنه تکراری و خسته کننده) ساخته شدن، و انجام کارهای ترکیبی و پیچیده و بصورت ساختار یک برنامه در حیطهء وظایف و گاهی حتی ظرفیتشون نیست (یعنی تقریبا غیرممکن هست – مثل اینکه شما بخواید کلا بصورت ویژوال یک برنامه نویسی واقعی بکنید و دست به کدنویسی نبرید و با اینحال با این روش همه گونه برنامهء سفارشی کاملی رو بسازید).
پس شل و محیط گرافیک مکمل همدیگر هستن. میشه گفت که شل بیشتر کارها رو میتونه انجام بده، درحالیکه رابط گرافیکی چنین نیست. اما از سویی انجام یکسری کارها با استفاده از محیط گرافیکی سرعت و راحتی بسیار بیشتری داره.
در قدیمترها که رابط گرافیکی نبود یا خیلی کمیاب تر و بدوی تر بوده، اجبارا تمام یا بیشتر کارها با رابط خط فرمان و محیط متنی انجام میشده، اما بعدا بسیاری کارها در رابط گرافیکی هم قابل دسترس شدن و انجام بسیاری کارها اغلب با خصوصیات مذکور در بالا، در رابط گرافیکی ممکن و معمول شد. بعضی اشتباها نتیجه گرفتن که شل یک روش قدیمی و منسوخ بوده برای انجام تمام/بیشتر کارها. درحالیکه عملا اینطور نیست. بلکه محیط گرافیک مکمل مناسبی برای شل شد. ضمنا اگر منظور از تمام یا بیشتر کارها، کارهای یک کاربر عادی خانگی و غیرمتخصص باشه، میشه گفت بله تاحدود زیادی!
اما برای کاربرهای حرفه ای و متخصص شل ابزاری غیرقابل جایگزینی هست و حتی خیلی وقتها رابط محبوب و ترجیح داده شده که خیلی کارها رو باهاش سریعتر و راحتتر از یک رابط گرافیکی انجام میدن (چون به اون راحتی با یک رابط گرافیکی امکان پذیر نیستن).
یک کاربر عادی خانگی خیلی کارها رو به روش خودش نمیتونه انجام بده و خیلی مسایل رو حل کنه یا بصورت خودکار دربیاره. خب این مسلم هست؛ مثل مقایسهء یک برنامه نویسی حرفه ای با یک اپراتور ساده.

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

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

echo -e "new line at begining.\n$(cat file.txt)\nnew line at end." > file.txt

خب این خط فرمان چیکار میکنه؟
پاسخ: یک خط مورد نظر رو به ابتدا و یک خط دیگه رو به انتهای یک فایل متن اضافه میکنه.
در این خط فرمان برخلاف دو مورد قبلی که مطرح شد، بیشتر از قابلیتهای شل (BASH) استفاده شده و تنها برنامهء بکار رفته که برنامهء ساده ای هست، برنامه ای بنام cat هست که برای چاپ کردن و استخراج کل محتویات فایلها بکار میره.
با اینطور فرمانها میشه تعداد زیادی فایل رو با یک خط فرمان با سرعت زیادی آپدیت کرد (البته برای تعدادی فایل، تغییرات کوچکی در هرمورد لازم هست – این فرمان درج شده روی یک فایل عمل میکنه). فرضا تعداد زیادی فایل اچ تی ام ال داریم که حالا یادمون افتاده که خطی به ابتدا یا انتها یا هردو قسمت اونها اضافه کنیم؛ مثلا یک کامنت.

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

umount /dev/hdc; cdrdao disk-info --device /dev/hdc

این فرمان که ممکنه در سیستم شما نیاز به کمی تغییر (تطابق) داشته باشه، اطلاعات مفیدی رو راجع به سی دی ها میده.
یکی از مهمترین این اطلاعات شاید نوع سی دی باشه.
شاید خیلیها ندونن که سی دی ها دو نوع هستن (درواقع بنده هم تا زمانی که خروجی این فرمان رو ندیده بودم، نمیدونستم):
یک نوع، سی دی هایی که برای عمر طولانی ساخته شدن و درشون از موادی با چنین قابلیتی استفاده شده. اینها با عبارتLong strategy در این اطلاعات مشخص میشن.
یک نوع دیگر سی دی هایی که برای ذخیرهء موقت و کاربردهایی مثل نقل و انتقال اطلاعات ساخته شدن و طول عمر طولانی برای اونها تضمین نشده. یعنی ممکنه چند سال دیگه که اون سی دی ها رو توی درایو بذارید، با تعجب متوجه بشید که بدون اینکه سی دی هیچ صدمه ای دیده باشه و در شرایط بدی نگهداری شده باشه، اطلاعاتش دیگه قابل دسترس نیستن. به این سی دی ها Short strategy گفته میشه.

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

اگر این فرمان در سیستم شما کار نمیکنه، احتمالا باید /dev/hdc رو با مسیر مربوط به درایو مورد نظر خودتون جایگزین کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>