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

بازم یک برنامهء جالب دیگه، و البته مختصر، رو معرفی میکنیم: text2wave

قبل از هر چیز تذکر بدم (نمیدونم قبلا گفتم یا نه) که تمام این تستها و تجربیات و برنامه ها در این محیط انجام شده و نتایجش دراختیار شما سروران گرامی قرار گرفته: Fedora 5 GNU/Linux
چون بعضا بین توزیعها و حتی نسخه های مختلف یک توزیع تفاوتهای ریز و درشتی میتونه باشه. البته نه لزوما به معنای ناسازگاری، اونهم در چنین مواردی. بلکه بیشتر یکسری پیکربندیها، برنامه های نصب شده، و ویژگیهای اونها هست. بهرحال گنو/لینوکس یک محیط حرفه ای و مجهز و بسیار غنی هست، و بهای این مزایا نیاز به حداقل کاربر حرفه ای هست. متخصصان و برنامه نویسان طراز اول و هکرها هم که مشخصه این محیط براشون ایدئال هست (حتما شنیدید که میگن گنو/لینوکس بهشت برنامه نویسان!).
پس کاربر باید بتونه از پس حل این تفاوتها و نصب برنامه ها و پیدا کردن پیکربندیهای هر محیط و ویژگیهای اختصاصی هر نسخه و توزیع و برنامه بربیاد.

خب کار این برنامهء text2wave چیه؟ از اسمش باید پیدا باشه. یک متن رو گرفته و به صوت تبدیل میکنه که میشه این صوت رو در یک فایل ذخیره کرد یا بطور مستقیم پخشش کرد.

echo 'On the fly' | text2wave | aplay

عبارت پاس شده تبدیل به صوت شده و مستقیما پخش میشه.

echo 'On the fly' | text2wave -o ~/Desktop/out.wav; aplay ~/Desktop/out.wav

عبارت پاس شده تبدیل به صوت شده و در فایلی در دسکتاپ شما ذخیره شده (~ در شل یونیکسی به معنای Home directory کاربر جاری هست) و سپس این فایل پخش میشه (بنابراین اگر نمیخواید الان پخش بشه، میتونید فرمان aplay ~/Desktop/out.wav رو بر دارید).

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

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

file $(type -p command);

اگر این فرم کار نکرد، فرم دیگش رو بکار ببرید:

file `type -p command`

بجای command شما اسم برنامهء مورد بررسی خودتون رو قرار میدید و این فرمان بهتون اطلاعات مفیدی راجع به اون برنامه میده؛ البته درصورت موفقیت (بعضی حالات جواب نمیده؛ مثل Shell builtin ها).
مثال:

[root@localhost ~]# file `type -p sh`
/bin/sh: symbolic link to `bash'

[root@localhost ~]# file `type -p text2wave`
/usr/bin/text2wave: Bourne shell script text executable

[root@localhost ~]# file $(type -p festival)
/usr/bin/festival: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

اگر بخواید میتونید این فرمان رو به یک تابع تبدیل کنید (کاری که خودم تاحالا نکرده بودم و حالا کردم!):

what () { file $(type -p $1); };

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

what command

[root@localhost ~]# what file
/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

حالا که صحبتش کشیده شد، به فرمان مفید file هم میپردازیم.
این فرمان (یک برنامه هست) نوع فایلهای پاس شده بهش رو با بررسی قسمتهایی از محتویات و هدرهای اون فایلها مشخص میکنه. شناسایی فایل بدون توجه به پسوند و خصیصه های دیگرش و تنها از روی محتویات انجام میشه؛ ضریب قطعیت و تعیین و خطاناپذیری ۱۰۰٪ نیست با این روش (چرا که استاندارد عام و تعهد وجود تمهیدات ویژه و بطور مثال شناسه های یکتا در داخل فایلها برای شناسایی اونها از طریق محتویات وجود نداره!)، اما بقدر کافی اطمینان و کاربرد داره برای بیشتر کارها و میتونه در مواقعی بسیار مفید باشه (بطوریکه بنده به Context menu ی KDE هم اضافه کردمش).
اگر لازم باشه شما حتی میتونید انواع جدیدی از فایلهای مورد نظر خودتون رو در دیتابیس مخصوص این برنامه تعریف کنید تا برنامه قادر به شناسایی اونها هم باشه؛ البته نیاز به خوندن منوال مربوطه (file وmagic) هست و یادگرفتن زبان تعریف محتویات مورد بررسی برای تشخیص فایلها.
این برنامه، انواع فایل از سورسهای برنامه نویسی تا فرمتهای تصویری مختلف و حتی فایلهای اجرایی ویندوز رو تشخیص میده. به این روش میتونید براحتی از محتویات واقعی یک فایل اطلاع حاصل کنید، بدون اینکه پسوند یا مشخصات دیگرش درست یا گویا باشن.

پاسخ دهید

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

*

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