لینوکس و من

۲۱۶ مطلب با موضوع «ترفند» ثبت شده است

آفرین پسر خوب

ببین، هر شب ساعت ۱۲ ، برو خونه ی من، هرچی فایل که اول اسمش core بود پیدا کن، بعد همه رو پاک کن بریز دور. آفرین پسر خوب. حالا یه بار بهم بگو چی بهت گفتم؟

۰ ۰ * * * for k in $(ls /home/amin/core.*); do rm $k; done

احسنت. معلومه که خوب فهمیدی…

اصولا لینوکس همیشه با شعور بوده. خدا حفظش کنه.

سر انجام راهی برای کنترل سرعت!

آن قدر گشتم و گشتم… تا بالاخره چیزیو پیدا کردم که میتونه سرعت آپلود و دانلود را برای هر نرم افزاری که خواستین، تعیین کنه. با این کار، تونستم سرعت آپلود فایرفاکس رو کاهش بدم تا دیگه کانکشن اینترنت موقع آپلود فایل های بزرگ، قطع نشه. مشکلی که ماه ها بود من رو اذیت می کرد و از هیچ جا جواب نگرفتم…

به طور آزمایشی روی ۴ تنظیم کردم، عملیات با موفقیت انجام شد، اما کمی طول کشید. باید سر فرصت سرعت های بالاتر رو امتحان کنم تا بهترینش رو بدست بیارم. برای این کار، بسته ی trickle رو از توی synaptic یا terminal نصب کنید. حالا با این دستورات، میتونید تنظیمات مختلف رو انجام بدید. مثلا:

trickle -u 4 -d 200 firefox

یعنی آپلود ۴kb و دانلود ۲۰۰kb

trickle -u 4 firefox

یعنی با دانلود کاری نداشته باش، فقط آپلود رو محدود کن.

trickle -d 10 firefox

یعنی آپلود رو کاری نداشته باش، فقط دانلود رو بیارش روی ۱۰. (محدودش کن)

میتونید به جای firefox هر نرم افزار دیگه ای رو بذارید.

آخیش!

هر چند این راه حل اساسی نیست، اما داره کار میکنه!

vlc و پخش فایل ویدئویی dat در vcd

وقتی یک vcd میذارید توی درایو، به سبک قدیم نرید روی فایل dat کلیک نکنید تا بیاد! چون نمیاد! توی vlc باید open disc رو بزنید و بعد cd رو انتخاب کنید تا بیارتش.

status های متفاوت برای چند اکانت در pidgin

شاید شما چند تا اکانت مسنجر داشته باشید و با pidgin میخواید کار کنید. و بخواید هر کدوم از این اکانت ها در عین حال که همه enable هستند status خودشون رو داشته باشن. مثلا یکی invisible باشه، یکی available و غیره.

 

برای این کار بسته ی pidgin plugin pack رو نصب کنید و بعد در قسمت پلاگین ها، mystatusbox رو فعال کنید. حالا میتونید اکانت های مختلفی رو همزمان باهم در pidgin داشته باشید که وضعیت هر کدوم با بقیه فرق می کنه.

یک VLC

از اینکه با هر بار کلیک کردن روی فایل های موزیک یه دونه VLC باز میشد خوشم نمیومد. مجبور بودم قبلی رو ببندم یا اینکه فایل موزیک رو بکشونم توی همون VLC.

 

این مورد با یه تیک توی قسمت interface از prefrences حل میشه: Allow only one instance

ایمیج فلاپی!

یه سری کارا هست که اتفاق میفته که لازم میشه شما یه ایمیج رو که مخصوص فلاپی است روش رایت کنید!!! این فایل ها img هستن و با WinImage میشه توی ویندوز این کارو کرد. اما توی لینوکس (در اینجا اوبونتو) با این دستور میشه اینگارو کرد:

dd if=/home/amin/Desktop/super_grub_disk_english_floppy_0.9799.img  of=/dev/fd0 bs=1024 conv=sync ; sync

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

این هم دستور ساخت ایمیج از فلاپی:

dd if=/dev/fd0 of=image

این میدونید به درد کیا میتونه بخوره؟! به درد کسایی که نرم افزاری خریدن که قفلش روی فلاپیه و برای هر بار استفاده باید قفل رو از فلاپی به سیستم انتقال بدن. پس با تعویض سیستم عامل قفل هم هوتوتو! میشه اینجوری قفل رو هم روی فلاپی داشت. چون اینجور چیزا رو نمیشه با یه کپی پیست ساده انجام داد. نمیدونم چرا!

استخراج ایمیل از یک فایل متنی

یک فایل متنی داریم. آت و آشغال زیاد داره. اما کلی ایمیل توش هست که ما به اونها نیاز داریم. (حالا به چه دلیل بماند! نیاز داریم دیگه آقا جان! نیاز هم که مادر اختراع است!) البته ما اختراع نمیکنیم. ما کشف میکنیم!! ما یعنی من!

perl -wne’while(/[\w\.]+@[\w\.]+/g){print “$&\n”}’ ‘/textfile.txt’ > /email-list.txt

دستور بالا یک فایل به شما میده که در هر خط یک ایمیل وجود داره. حالا میخوایم بعد از هرایمیل، یه کاما بذاره که بشه اونارو توی compose گذاشت و ایمیل زد بهشون. با این دستور:

awk -F”,” ‘{ if( NR == 3 ) { val=$2 }  if( NR <= 3 ) { print } else {print val”,”$0} }’ /email-list.txt > /new-email-list.txt

والله بنده اصلا نمیدونم این دستورات چی هستن! من فقط search کردم پیداشون کردم و استفاده کردم دیدم کار میکنه. پس اینجا نوشتم تا شما هم اگه نیاز داشتین ببینین. فلسفه ی این دستور ها باشد برای کسانی مثل جادی که اینکاره هستن! ما سر در نمی آوریم! ما یعنی من!

یافتن یک عبارت

تا حالا خواستین یه کلمه یا یه جمله رو بدونید تو کدوم فایل شما است بعد یکی یکی فایل ها رو باز کنید و بگردید دنبالش؟! خیلی زمان میگیره. مگه نه؟ خب با این دستور، هر عبارتی رو که بخواید توی هر فایلی براتون جست و جو میکنه. اگه در مسیری باشید که این دستور رو اجرا میکنید میره همون جا رو میگرده.

find -type f -exec grep -H ‘YOUR STATEMENT’ {} \;

اما اگه بخواید در کل کامپیوتر بگرده، اینجوری میشه:

find / -type f -exec grep -H ‘YOUR STATEMENT’ {} \;

میتونید آخرش هم بنویسید > /home/resault.txt که نتایج رو براتون تو یه فایل ذخیره کنه.

رویای دیرین من!

یکی از خواسته های من در سیستم عامل لینوکس، بعد از اینکه فهمیدم چی به چیه، این بود که بتونم پکیج یا نرمافزاری رو که نصب کردم بتونم دوباره برش گردونم! من سر در نمیاوردم که چرا نمیشه این کارو کرد، چرا راهی براش نیست… آخه در نصب شدن یه بسته به نظرم اصلی ترین کاری که میشه کپی شدن محتویات اون بسته است. و مثل ویندوز رجیستری ای چیزی نداره که تنظیماتی غیر قابل بازگشت اعمال بشه! (این نظر منه، ممکنه درست هم نباشه)
گذشت و گذشت … تا این که یه چیزی به نام dpkg-repack پیدا شد که میتونست این کارو انجام بده. و دوست خوبم وبلاگ "یه انقلابی" معرفیش کرده بود. اما من بیشتر از این میخواستم! میخواستم کل بسته هایی که توی سیستم عاملم نصب کردم برگردونم. که این خوبیش از این جهاته:
 
۱- خب یه پشتیبان از تمام نرم افزار هاتون دارین!
۲- وقتی با dpkg-repack یه بسته ای رو برگردوندید، نمیتونید بفهمید dependencies اون بسته چیه تا اونا رو هم همراهش برگردونید (تا در آینده که لازمشون داشتید حضور داشته باشن). یا اگر هم بشه dependencies یک بسته رو فهمید (که حتما میشه) ممکنه صد تا بسته ی مختلف باشه که هر کدوم ده تا واسه خودشون dependencies دارن و … پس ما یه چیزی میخوایم تمام عیار که هر چی که هست برداره بیاره!
۳- میتونم از این بسته های برگردونده شده، یه local repository درست کنم، روی CD یا DVD رایتشون کنم و اونو توی کامپیوتر های دیگه استفاده کنم. یعنی یه چیزی شبیه Homa که برای اوبونتو ساخته شده!
۴- میتونم از این local repository وقتی که یه fresh install انجام میدم استفاده کنم و ظرف چند دقیقه هر چیزی که لازم دارم دوباره توی نسخه ی تمیزم داشته باشم! این برای کسی که نمیخواد upgrade کنه و بیشتر دوست داره fresh install داشته باشه خوبه!
 
خب… برای نیل به این اهداف (!) که مدت ها توی سر من بودن چه کاری باید کرد؟ طبیعتا باید یه لیست از تمامی بسته های نصب شده داشته باشیم. مگه نه؟ و بعد بدیمش به این dpkg-repack که هر چی که توی این لیست هست برگردونه! تهیه ی لیست ساده است. با این دستور:
 
sudo dpkg --get-selections > /your-home-directory/list.txt
 
خب. این لیستی از بسته های داخل سیستم شما رو توی فایل list.txt ذخیره میکنه. اما متاسفانه این لیست همینجوری به درد ما نمیخوره! چرا؟ چون محتویاتش طوری نوشته شده که برای dpkg-repack غیر قابل استفاده است. پس باید یه کاری کنیم قابل استفاده بشه. یعنی یه لیستی داشته باشیم که اسم تک تک بسته ها، کنار هم بیان و فقط به اندازه یه space از هم فاصله داشته باشن. که ما بتونیم اونو کپی کنیم و جلوی dpkg-repack بذاریم!
خب من بلد نبودم! توی پستای قبلی این موضوع رو عنوان کردم. تا این که آقای جادی روزنه های امیدی رو در بنده بوجود آوردند… (واقعا جای بسی افتخار است که کسی مثل جادی بیاد وبلاگت کامنت بذاره و بگه بیا کمکت کنم!) خلاصه… با راهنمایی جادی عزیز و یکم کلنجار رفتن خودم، تونستم اون لیست رو به چیزی تبدیل کنم که لازم داشتم. با این دستورات:
 
cut --f 1 /my-home-directory/list.txt | xargs sudo dpkg-repack
 
این یک خطی که میبینید با اون لیست کاری میکنه واسه dpkg-repack قابل استفاده میشه و xargs هم این اطلاعات جدید رو تقدیم جناب dpkg-repack میکنه و ایشون هم مثل بچه های خوب و حرف گوش کن کاریو که باید انجام بده میده! و من قریب به ۱۹۷۶ تا پکیج به حجم ۱.۲ گیگابایت در عرض تقریبا نیم ساعت، تحویل گرفتم!
 
حالا نوبت این میرسه که یه local repository از این گنج داشته باشم.من پکیج ها رو توی فولدر packages توی home ریختم. پس:
 
sudo dpkg-scanpackages /my-home-directopry/packages /dev/null > /my-home-directopry/packages/Packages
 
سپس بروید داخل این فولدر packages و فایل Packages رو باز کنید. این فایلیه که لیستی از مشخصات بسته های اونجا رو برای فهموندن به synaptic در خودش داره و توسط دستور بالا آماده شده. فایل رو با یه ادیتور متن باز کنید و به قسمت replace برید و اونجا شما میبینید که جلوی Filename یه چیزی اضافه هم نوشته که نباید باشه. یعنی آدرس محل اون پکیج رو نوشته. در صورتی که ما فقط اسمشو میخوایم نه آدرسشو. چون توی نصب کردن بعدا مشکل ایجاد میکنه. (من امتحان کردم، دارم میگم انجام بدین تا به اون مشکل بر نخورین). بله، پس /my-home-directory/packages رو کپی میکنم و در قسمت search for میذارم و دکمه ی replace رو میذارم و اونا ناپدید میشن…
 
حالا میتونم اینارو رایت کنم روی DVD و توی هر کامپیوتری که خواستم این پکیج ها رو به لیست پکیج هاش اضافه کنم:
 
echo “deb file:/my-DVD-ROM/packages ./” > /tmp/my-local.list
 
و بعد:
 
sudo mv /tmp/my-local.list /etc/apt/sources.list.d/my-local.list
 
و بعد تر:
 
sudo apt-get update
 
که این مرحله ی آخر روش های دیگه ای هم داره که میتونید بگردید پیدا کنید و به ما هم بگید…
 
فکر میکنم باید انگلیسی این مطلب رو هم منتشر کنم. چون خیلی از ملت ها خواستار این کار هستند!
 
من که خیلی خوش حالم. شما چه طور؟

آپدیت در خواب

از اون جایی که قبلا شرح دادم چه طوری برنامه ریزی کنیم تا سیستم یه کار خاصی رو در زمان خاصی انجام بده، میخوام این دفعه بهش بگم ساعت ۳ که روشن شدی و کانکت شدی، بی زحمت آپدیت هم بشو قربون دستت. (نیست ADSL از ۳ تا ۷ رایگانه واسه ما…)

خب، دستور آپدیت اینه:

sudo apt-get update

sudo apt-get upgrade

ولی وقتی اینو میزنیم از ما میپرسه که آیا مطمئنید میخواید فلان قدر دانلود کنید و … y/n هم؟

پس برای دستور دوم این option ها رو وارد می کنیم که دیگه هیچچچچی از ما نپرسه و مثل بچه ی آدم آپدیتشو بکنه:

sudo apt-get upgrade -y --force-yes

حالا این دستورها رو داخل scheduled task قرار میدیم.

امیدوارم صبح که بلند شدم کارش تموم شده باشه. یه خوبی هم که داره اینه که اگه وقت کم اومد برای دانلود، فردا صبح از ادامش میره. خدا لینوکس رو از ما نگیره.