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

یک مثال دیگه از کاربرد و تجربیات شخصی:
if /usr/sbin/apachectl restart; then play -v 3 /root/.add/KDE_Beep_Digital_2.ogg; else play -v 5 /root/.add/KDE_Beep_Car.ogg; fi;
این خط فرمان، باعث استارت/ریستارت وب سرور آپاچی میشه؛ تنها یک شرط سادهء شل بهش اضافه شده که با استفاده از برنامهء play (شل اسکریپتی از پکیج sox)، درصورت استارت موفقیت آمیز آپاچی یک فایل صوتی رو پخش میکنه، و درصورتیکه استارت آپاچی موفقیت آمیز نبود یک فایل صوتی و صدای دیگری رو پخش میکنه. آپشنهای v در فرمانهای play هم، ولوم صدای پخش شده رو تنظیم میکنن.
این خط فرمان رو در قسمت فرمان یک Button در پنل KDE (معادل Taskbar ویندوز) درج کردم. یعنی درواقع این خط فرمان مستقیما در محیط متنی درج نمیشه و نیازی به داشتن یک پنجرهء ترمینال محتوی شل نیست در این حالت.
منظورم این هست که پیوند و کارایی محیط متنی و شل رو با محیط گرافیک نشون بدم. درواقع شما حداقل گهگاه، از کارایی شل و برنامه های غنی خط فرمان میتونید در محیط گرافیکی هم استفاده کنید و قابلیتها/امکانات رابط گرافیکی سیستم عامل رو با امکانات برنامه نویسی شل و ترکیبش با برنامه های قدرتمند خط فرمان، افزایش بدید.
میتونید تاحدی محیط گرافیکی خودتون رو هم برنامه نویسی و ترکیب (منجمله با برنامه های خط فرمان) و تنظیم کنید و ارتقا بدید؛ تاجایی که میدونم امکان پخش صدا برای یک دکمه (اونهم بصورت شرطی که اطلاعات مفید اضافه ای رو به ما میده) در دسکتاپ KDE وجود نداره (حداقل بطور پیشفرض و در نسخهء مورد استفادهء بنده).
حال این یک استفادهء کوچک (و در عین حال مفید و خوشایند) بوده و از ساده ترین انواع. اگر لازم باشه میشه کاربردهای مفصلتر و پیچیده تری رو ایجاد کرد.

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

———————————
ویرایش:

if kdesu /usr/sbin/apachectl restart; then play -v 5 /root/.add/KDE_Beep_Digital_2.ogg; else play -v 3 /root/.add/KDE_Beep_Car.ogg; fi

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

——————————–
ویرایش ۲:

خط فرمان ارایه شدهء بالاتر، در محیط KDE کار میکنه.
در محیط گنوم (GNOME)، در خط فرمان بالا بجای kdesu از برنامهء معادل در این محیط استفاده کنید (شاید gksu باشه اسمش).

——————————-

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

#!/bin/bash
echo -e "$1:\n"
rpm2cpio $1 | cpio -t
echo
read -p 'Extract? (y/n): ' -n 1
echo
if [ $REPLY = y ]; then
mkdir -vp ${1/%.rpm}
cd ${1/%.rpm}
name=$(echo $1 | grep -o '[^/]*$')
rpm2cpio ../$name | cpio -iduV
read -n 1 -sp 'Hit any key to quit...'
echo
fi

این شل اسکریپت رو شخصا روی توزیع فدورا ۵ که برنامه ای ویژهء دیدن و استخراج محتویات پکیجهای RPM نداره استفاده کردم. شاید هنوز هم روی فدورا چنین برنامه ای نباشه و این شل اسکریپت بدرد دیگران هم بخوره.
این شل اسکریپت رو میشه در دایرکتوریهای فایلهای اجرایی قرار داد و همیشه براحتی ازش در خط فرمان استفاده کرد. یک راه دیگر (هم) اضافه کردن این فرمان به Context menu ی محیط گرافیکی هست (بنده به KDE اضافه کردمش)؛ در این صورت اخیر، موقعی که روی فایلی با پسوند rpm کلیک راست کنید در زیرمنوی Open With گزینه ای برای دیدن و استخراج محتویات پکیج RPM شما موجود خواهد بود که البته محتویات رو در دایرکتوری ای در دایرکتوری جاری میریزه. برای اجراش البته یک پنجرهء ترمینال باز میشه که پاسخ شما رو برای عمل استخراج در همون پنجره دریافت میکنه.
این گرچه یک ابزار حداقلی (بدون امکان تعیین دایرکتوری یا استخراج انتخابی) هست، اما بقول معروف راه دست و برای اغلب اینطور کارهایی که گهگاه لازم داریم کافی هست. میشه بعضی قابلیتهای دیگر رو هم بهش اضافه کرد، ولی نسبت به پیچیدگی و زحمتش نمی ارزه.
تاجایی که مطالعه کرده بودم، منابع موجود در وب راه دستی و وارد کردن چند فرمان پی در پی رو برای استخراج محتویات این پکیجها معرفی کرده بودند که کار سخت تر و وقتگیرتری هست که ممکنه با اشتباهاتی همراه باشه، بنابراین بنده این اسکریپت رو طراحی کردم که مراحل رو بصورت خودکار دربیاره.
نکته: البته مواظب Overwrite شدن فایلهای موجود باشید!
این برنامه در هربار یک دایرکتوری با نام خود پکیج (بدون پسوند rpm) ایجاد میکنه (درصورت عدم وجودش) و محتویات پکیج رو در اون میریزه.

راستی اگر خواستید فرمان این اسکریپت رو به محیط گرافیکی اضافه کنید، یادتون باشه گزینهء Run in terminal رو فعال کنید (در دسکتاپ KDE این اسمش هست).

پاسخ دهید

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

*

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