گنو/لینوکس خوبه چون به شما امکان پیاده کردن ایده‌هاتون رو می‌ده

من مشغول ترجمه یک کتاب جدید هستم. فایل انگلیسی رو به شکل یک فایل متنی دارم و در فایل فارسی، ترجمه رو می‌نویسم. به جای اون کاغذی هم که سابقا لای کتاب‌های سنتی می‌ذاشتیم، پنج تا / می‌زنم (یعنی /////) تا نشون بدم که الان در کجای کتاب هستم.

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

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

قدم اول اینه که ببینم چه سهمی از کتاب رو ترجمه کردم. دستور wc (مخفف word count) رو دارم که می‌تونه خط‌ها و کلمات و حروف هر چیزی رو بشمره. پس می‌زنم wc -l english.txt و بهم می‌گه که کتاب ۸۷۵۰ خط است (توجه داریم که در بحث دیجیتال، خط یعنی پاراگراف). حالا باید ببینم علامت ///// در خط چندم است. دستور grep رو داریم که هر چیزی رو توی هر چیز دیگه‌ای می‌گرده. حتما یک سوویچ هم داره که شماره خط رو برمی‌گردونه. من این سوییچ رو حفظ نیستم پس مثل هر چیز دیگه‌ای تایپ می‌کنم man grep و یک راهنمای کامل می‌گیرم که توش نوشته سوییچ n شماره خط رو برمی‌گردونه. پس من می‌زنم grep -n “////” english.txt و می‌بینم که تا پاراگراف چند رو ترجمه کرده‌ام:


به من می‌گه که ۵۰۴ پاراگراف رو ترجمه کرده‌ام. حالا کافیه قسمت اول رو جدا کنم. دستور cut می تونه در یک متن ستون‌های مختلفی که با یک علامت از هم جدا شدن رو تشخیص بده. من می خوام جدا کننده ام : باشه (:d-) و فیلد اول رو می‌خوام (f1-). توی لینوکس مثل لگو، می‌شه دستورات رو با | به هم چسبوند. پس داریم:


زیبا نیست؟ در واقع من با یک خط، درآوردم که الان کجای ترجمه هستم. حالا کافیه این رو بچسبونم به دستوری مثل ploticus که از خط فرمان، نمودار می‌کشه. من هم این دستور رو بلد نبودم ولی یک جستجوی ساده در گوگل برای command line pie chart رسوندم به صفحه این دستور و یک مثال خیلی ساده ازش. حالا فقط کافیه من عددی که بالا به دست آوردم رو به همراه تعداد کل صفحات و عنوانی که می‌خوام در نمودار نشون داده بشه بریزم توی یک فایل. دستوراتی مثل اینها:

fdone=`grep -n “/////” /home/jadi/english.txt | cut -f1 -d:`
fdarsad=`expr $fdone / 87`
echo $fdarsad% done,$fdone,green > /tmp/translate.dat
edone=`expr 8750 – $fdone`
echo English,$edone,red >> /tmp/translate.dat

فایلی مثل این را تولید خواهند کرد:

5% done,504,green
English,8246,red

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

apt-get install ploticus

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

ploticus -prefab pie -png -o /home/jadi/public_html/translate.png data=/tmp/translate.dat delim=comma values=2 labels=1 colorfld=3 -scale 1 legend=yes

چه جذاب (: حالا نمودار درست شده:

قشنگ نیست؟‌ حالا کافیه به سیستم عامل بگم که این محاسبات رو هر روز ساعت ۴ صبح انجام بده. برای اینکار دستور crontab رو داریم که به سادگی می‌شه باهاش گفت که فلان مجموعه دستورات رو هر ۲۴ ساعت یکبار یا چهارشنبه ها صبح یا جمعه هایی که ۱۳ ام باشن یا حتی هر دقیقه در هر روز و … اجرا کنه. اون رو که بذارم (الان گذاشتم) هر روز یکبار نمودار بالا دیده خواهد شد (:

انجام این عملیات کلا دو دقیقه طول کشید ولی خب نوشتنش چند برابر اون (: هنوز هم مطالبی در مورد کمک لینوکس در این ترجمه هست که خواهم نوشت (: