بایگانی برچسب: s

آیا خط فرمان همه گنو/لینوکس‌ها شبیه همدیگه است؟

این سوال هوتن است و احتمالا خیلی‌های دیگه؛ همچنین آدم‌ها می‌خوان بدونن که تفاوت‌ توزیعهای لینوکس‌های مختلف مثل اوپن سوزه، فدورا، اوبونتو، دبیان و … چیه.

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

commandline

ااما برای تکمیل بحث، باید بگم که توزیع عملا ترکیبی از این‌ها است:

  • نرم افزارهای پیش فرضی که آدم های پشت توزیع انتخاب می‌کنن
  • منابع و مخازن اون توزیع یعنی برنامه‌هایی که می‌تونین بدون دردسر و با یک کلیک یا دستور نصب کنین
  • گرافیک، لوگو و …
  • دستورات خاص اون توزیع که خیلی وقت‌ها مربوط به تنظیمات یا مدیریت بسته‌های نرم افزاری می‌شن؛ مثلا توی دبیان apt برای نصب برنامه‌ها استفاده می‌شه، در فدورا yum و در سیستم‌های مبتنی بر آرچ pacman. مثال خوب دیگه می‌تونه مجموعه نرم افزارهای کنترل و مدیریت yast در اوپن سوزه.

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

نتیجه؟ از هر لینوکسی که استفاده می‌کنین، نود درصد کارهاتون مشابه است و اوه ده درصد هم مربوط می‌شه به عملیات بسیار مرتبط با اون توزیع مثل نصب و حذف برنامه‌ها یا دسترسی به کارت‌های شبکه و تنظیمات پیش فرض و اینجور چیزها. پس با هر توزیعی که کار می‌کنین و پشت هر توزیعی که می‌شینین، می‌تونین هک خوشحالی داشته باشین!

چرا گنو/لینوکس رو دوست دارم:‌ فهرست کردن کل فایل‌های قابل دانلود یک سایت

یک دوستی پرسیده که چطوری می تونیم فهرست همه فایل‌های قابل دانلود در سروری مثل dl.folan.net رو داشته باشیم. این سرور اجازه می‌ده شما دایرکتوری‌هاش رو ببینین:

Screenshot from 2015-11-25 11-57-46

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

Screenshot from 2015-11-25 11-58-08

درست؟ دوست همیشگی ما در سری چرا گنو/لینوکس رو دوست دارم دستور جذاب wget است. پس شروع می کنیم!

$ wget --spider --force-html -r -l5 htp://dl.folan.net/Movie/

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

$ wget --spider --force-html -r -l5 htp://dl.folan.net/Movie/ 2>&1 

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

Spider mode enabled. Check if remote file exists.
--2015-11-25 12:02:51--  htp://dl.folan.net/Movie/5/American.History.X.1998.720p.folan.Net.mkv
Reusing existing connection to dl.folan.net:80.
htp request sent, awaiting response... 200 OK
Length: 785963069 (750M) [application/octet-stream]
Remote file exists but does not contain any link -- not retrieving.

Removing dl.folan.net/Movie/5/American.History.X.1998.720p.folan.Net.mkv.
unlink: No such file or directory

Spider mode enabled. Check if remote file exists.
--2015-11-25 12:02:51--  htp://dl.folan.net/Movie/5/American.Justice.2015.1080p.folan.Net.mkv
Reusing existing connection to dl.folan.net:80.

من خط‌هایی رو می‌خوام که اولشون — داره و پس می ریم سراغ grep که می‌تونه توی یک متن خط‌هایی رو جدا کنه که چیز خاصی توشون هست:

$ wget --spider --force-html -r -l5 htp://dl.folan.net/Movie/ 2>&1 | grep '^--'
--2015-11-25 12:04:57--  htp://dl.folan.net/Movie/4/A.Good.Day.to.Die.Hard.2013.720p.folan.Net.mkv
--2015-11-25 12:04:57--  htp://dl.folan.net/Movie/4/A.Good.Marriage.2014.BluRay.720p.folan.Net.Mkv
--2015-11-25 12:04:57--  htp://dl.folan.net/Movie/4/A.Hijacking.2012.720p.folan.Net.mkv

و خب حالا می تونیم فقط بخش یو آر ال رو جدا کنیم. با استفاده از awk:

$ wget --spider --force-html -r -l5 htp://dl.folan.net/Movie/ 2>&1 | grep '^--' | awk '{ print $3 }' 
htp://dl.folan.net/6piljd5xepub7trr13ke.gif
htp://dl.folan.net/85film3.gif
htp://dl.folan.net/Movie/1/Into.the.Woods.2014.720p.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/Iyobinte.Pusthakam.2014.720p.DVDrip.%5Bfolan.Net%5D.mp4
htp://dl.folan.net/Movie/1/Kick.2014.720p.BluRay.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/La.Grande.Illusion.1937.720p.Farsi.Dubbed.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/Late.Phases.2014.720p.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/Le-Week-End.720p.%5Bfolan.net%5D.mkv
htp://dl.folan.net/Movie/1/Legendary.2010.LIMITED.720p.%5Bfolan.Net%5D.mkv

و بعد فقط خط‌هایی رو نگه داریم که آخرشون چیزهایی مثل / یا css یا html و .. نداره:

$ wget --spider --force-html -r -l5 htp://dl.folan.net/Movie/ 2>&1 | grep '^--' | awk '{ print $3 }' | grep -v '\.\(css\|js\|png\|gif\|jpg\)$' | grep -v '\/$' 
htp://dl.folan.net/Movie/1/Into.the.Woods.2014.720p.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/Iyobinte.Pusthakam.2014.720p.DVDrip.%5Bfolan.Net%5D.mp4
htp://dl.folan.net/Movie/1/Kick.2014.720p.BluRay.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/La.Grande.Illusion.1937.720p.Farsi.Dubbed.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/Late.Phases.2014.720p.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/1/Le-Week-End.720p.%5Bfolan.net%5D.mkv
htp://dl.folan.net/Movie/1/Legendary.2010.LIMITED.720p.%5Bfolan.Net%5D.mkv

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

$ sort -R all.urls | head
htp://dl.folan.net/Movie/5/Modern.Times.1936.720p.Farsi.Dubbed.folan.Net.mkv
htp://dl.folan.net/Serial/The%20Killing/S01/The.Killing.S01E08.480p.folan.Net.mkv.folan.Net.mkv.mkv
htp://dl.folan.net/Serial/Breaking%20Bad/S05/BreakingBad.S05E06.folan.Net.mkv
htp://dl.folan.net/Movie/2/Priest.of.Evil.2010.720p.%5Bfolan.Net%5D.mkv
htp://dl.folan.net/Movie/5/A.Midsummer.Nights.Dream.1999.720p.WEB-DL.folan.Net.mkv
htp://dl.folan.net/Serial/Castle/S05/Castle.S05E22.480p.folan.Net.mkv
htp://dl.folan.net/Serial/Twin%20Peaks/S02/Twin.Peaks.S02E22.480p.folan.Net.mkv
htp://dl.folan.net/Serial/Supernatural/S04/SN-S04_E11.folan.Net.mkv
htp://dl.folan.net/Movie/Problem%20Child%201990/Bacheye.DardesarSaz.1990.720pWEB-DL.HQ_folan.info.mkv
htp://dl.folan.net/Serial/Archer/S01/Archer.S01E08.folan.Net.mkv

$ wc -l all.urls 
11284 all.urls

اینجوری فهرستی از ۱۱هزار فایل قابل دانلود اون سایتی که تصمیم گرفتم به خاطر حفظ بیزنسش، آدرسش رو ندم رو داشته باشیم (: هدف این پست دانلود نیست،‌ یاد گرفتن شیوه کار با لینوکسه و همچنین دقت کنین که http ها رو کردم htp که وبلاگ سعی نکنه به عنوان فیلم لودشون کنه از یو آر ال گفته شده (: خوش باشین و خندون و توانمند.

چرا گنو لینوکس رو دوست دارم: پاسخ دادن به اینکه آیا سیستم ما وضعیت عادی داره یا مورد حمله است

ما سروری داریم که تازه تحویلش دادیم ولی هر روز حوالی ظهر با مشکل مواجه می شه. کار اصلی رو پروسه ای انجام می ده که اینجا بهش می گیم A. چندین پروسه A می تونن همزمان بالا باشن و کار کنن و ما گفتیم حداکثر این تعداد باید ۱۰۰ باشه. یعنی در صورت زیاد شدن بار، ۱۰۰ تا A بالا می یان و تقریبا صد برابر بهتر از یک A کار می کنن. یک بررسی سریع نشون می ده که در لحظه بروز مشکل دقیقا ۱۰۰ تا از پروسه A فعاله:

# ps -ef | grep A | wc -l
101

مشخصه دیگه: ps -ef پروسه ها رو نشون می ده، grep A فقط خط هایی که توشون A هست رو جدا می کنه و در نهایت wc -l تعداد خط ها رو می شمره (اگر گفتین چرا به جای ۱۰۰ تا شده صد و یکی؟).

علی الحساب تعداد Aها رو به حداکثر ۱۰۰۰ عدد افزایش می دیم و می ریم سراغ سوالی که مطرحه:

آیا ما مورد حمله هستیم؟ آیا حوالی ظهر سیستمی شروع به کار با سیستم ما می کنه که فشار رو به شکل غیرعادی بالا می بره؟ یا واقعا این شرایط عادی است و اینقدر از این سیستم استفاده می شه؟

ما لاگ هایی به این شکل داریم که حاصل کار A هستن:

127.0.0.1 -  26/Jul/2015:03:48:53 +0430 "POST /index.php?_url=xxxxx" 200 /home/adp/www/xxx/public/index.php 357.489 2048 86.72%
127.0.0.1 -  26/Jul/2015:03:48:58 +0430 "POST /index.php?_url=qqqq" 200 /home/adp/www/xxx/public/index.php 91.281 1280 98.60%
127.0.0.1 -  26/Jul/2015:03:49:32 +0430 "GET /index.php?aaa" 200 /home/adp/www/xxx/public/index.php 373.649 1792 56.20%
127.0.0.1 -  26/Jul/2015:03:50:03 +0430 "HEAD /index.php" 200 /home/adp/www/xxx/public/index.php 43.501 1280 91.95%
127.0.0.1 -  26/Jul/2015:03:55:03 +0430 "HEAD /index.php" 200 /home/adp/www/xxxx/public/index.php 63.519 1280 94.46%

من از چند روز پیش این لاگ ها رو فعال کردم تا همه درخواست ها ذخیره بشن و حالا کافیه بشمرم ببینم چه خبره! اول بذارین همه لاگ هار و به همدیگه بچسبونیم:

jadi@funlife:/tmp/dir$ ls -ltrh 
total 36M
-rw------- 1 jadi jadi 9.2M Jul 22 03:17 www.access.log-20150722
-rw------- 1 jadi jadi 6.0M Jul 23 03:10 www.access.log-20150723
-rw------- 1 jadi jadi 6.4M Jul 24 03:25 www.access.log-20150724
-rw------- 1 jadi jadi 2.5M Jul 25 03:25 www.access.log-20150725
-rw------- 1 jadi jadi 7.4M Jul 26 03:45 www.access.log-20150726
-rw------- 1 jadi jadi 4.2M Jul 26 15:17 www.access.log
jadi@funlife:/tmp/dir$ cat www.access.log-* www.access.log > all.log
jadi@funlife:/tmp/dir$ ls -ltrh 
total 72M
-rw------- 1 jadi jadi 9.2M Jul 22 03:17 www.access.log-20150722
-rw------- 1 jadi jadi 6.0M Jul 23 03:10 www.access.log-20150723
-rw------- 1 jadi jadi 6.4M Jul 24 03:25 www.access.log-20150724
-rw------- 1 jadi jadi 2.5M Jul 25 03:25 www.access.log-20150725
-rw------- 1 jadi jadi 7.4M Jul 26 03:45 www.access.log-20150726
-rw------- 1 jadi jadi 4.2M Jul 26 15:17 www.access.log
-rw-rw-r-- 1 jadi jadi  36M Jul 26 15:30 all.log

راحت و سر راست. دستور cat که محتوای فایل ها رو نشون می ده، کل فایل ها رو چسبونده به هم تا یک فایل بزرگ به اسم all.log داشته باشیم که هر خطش چنین فرمی داره:

127.0.0.1 -  26/Jul/2015:03:48:53 +0430 "POST /index.php?_url=xxxxx" 200 /home/adp/www/xxx/public/index.php 357.489 2048 86.72%

کافه من تاریخ رو جدا کنم. دستور کات همیشه دوست منه:

jadi@funlife:/tmp/dir$ cut -d' ' -f4 all.log | head
20/Jul/2015:12:03:35
20/Jul/2015:12:03:36
20/Jul/2015:12:03:39
20/Jul/2015:12:03:39

جذاب نیست؟ به سادگی گفتم کات کن با جدا کننده اسپیس و فیلد چهارم رو به من بده ولی حالا فقط چند خط اول رو نشون بده (head). عملا کار تموم شده! کافیه این خطها رو بشمرم؛ البته بعد از حذف کردن ثانیه و دقیقه. برای حذف اینها کافیه شش کاراکتر آخر هر خط رو بردارم یا با همون دستور کات دوباره بگم بر اساس :‌ جدا کنه و فیلد اول و دوم رو به من بده. این راه دوم برای من سر راست تره:

jadi@funlife:/tmp/dir$ cut -d' ' -f4 all.log | cut -d: -f1,2 | head
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12
20/Jul/2015:12

چقدر عالی. دیگه فقط کافیه سورت کنیم و بگیم بشمره. دستور uniq‌ می تونه با سوییچ های مختلف کارهای مختلف کنه. مثلا فقط خط های غیرتکراری بده، فقط خط های تکراری رو بده، از هر خط بیشتر از یکبار نده، بشمره از هر خط چند تا هست و … و البته این دستور وابسته به اینه که ورودی اش مرتب شده باشه. پس:

jadi@funlife:/tmp/dir$ cut -d' ' -f4 all.log | cut -d: -f1,2 | sort -n | uniq -c > data
jadi@funlife:/tmp/dir$ head data
   2795 20/Jul/2015:12
   2363 20/Jul/2015:13
   2383 20/Jul/2015:14
   2251 20/Jul/2015:15
   1796 20/Jul/2015:16
   1599 20/Jul/2015:17
    843 20/Jul/2015:18
    704 20/Jul/2015:20
    765 20/Jul/2015:19
   1039 20/Jul/2015:21

چه کردیم! (: فقط کافیه ترسیمش کنیم:

تعداد درخواست های سرور

و هر کسی که آمار یا حداقل نمودارهای نرمال بدونه می تونه بگه اتفاق غیرعادی ای در جریان نیست – حداقل در سطح درخواست ها. از ساعت هشت درخواست ها بالا می رن و بعد به شکلی نسبتا طبیعی افزایش پیدا می کنن تا آخر وقت اداری که دوباره آروم آروم پایین بیان. این پترن برای سایتی که مردم باهاش کار می کنن طبیعی است. مطمئنا می شه برنامه ما رو بهتر کرد ولی هدف من به عنوان مدیر سیستم این هست و بود که نشون بدم اتفاقی غیر عادی (درخواست ناگهانی از یک سیستم سر یک ساعت مشخص، حمله هکرها و …) در جریان نیست که تقریبا ثابت شده. اگر نمودارهای این تیپی دوست دارین بگین که بازم نمودارهایی واقعی از کارهای واقعی یک مدیر سیستم رو با هم مرور کنیم.

چرا گنو لینوکس رو دوست دارم: حذف صدای خواننده از یک آهنگ

ما همراهی در دنیای لینوکس داریم به اسم فرشید نوتاش حقیقت که لازم داره صدای خواننده (محمد اصفهانی) از آهنگ «سراب» حذف بشه. کاری که در کاریوکی می کنیم. همه دنیای لینوکس هم علاقمند هستن به ایشون کمک کنن (:

راه حل من طبق معمول یک کامند لینوکسی است:

sox MusicVoroodi.mp3 Music_khorooji_no_vocal.mp3 oops

دستور که مشخصه، فایل ورودی و خروجی داره و تنها یک پارامتر: oops که البته در توضیحش نوشته:

Out Of Phase Stereo effect. Mixes stereo to twin-mono where each mono channel contains the difference between the left and right stereo channels. This is sometimes known as the ‘karaoke’ effect as it often has the effect of removing most or all of the vocals from a recording

در مورد این آهنگ بد هم جواب نداد و امیدوارم باعث بشه ایشون تهدیدش رو عملی نکنه.

چگونه یک گیک لینوکسی در مسابقه حدس زدن کلمه انگلیسی اینستاگرامی شرکت می کنه

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

Screenshot_2015-04-17-14-35-43

موضوع مسابقه پیدا کردن یک کلمه ده حرفی است که مربوط به این شکل باشه و ده حرفی باشه و در جاهای مشخص شده a‌ و q نشسته باشن.

بریم برای جواب؟ در لینوکس بسته scowl‌ رو می‌شناسم (یا با سرچ بهش می رسم) که بقیه غلط‌یاب‌های دیکته ازش استفاده می کنن. این بسته حاوی کلی فایل است که همه کلمات زبان‌ انگلیسی توشه (از آمریکا تا کانادا و دستاشون).

نصبش می کنیم:

jadi@funlife:/tmp$ sudo aptitude install scowl 
[sudo] password for jadi: 
The following NEW packages will be installed:
  scowl 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,249 kB of archives. After unpacking 7,516 kB will be used.
Get: 1 http://ir.archive.ubuntu.com/ubuntu/ utopic/universe scowl all 7.1-1 [2,249 kB]
Fetched 2,249 kB in 9s (248 kB/s)                                               
Selecting previously unselected package scowl.
(Reading database ... 639459 files and directories currently installed.)
Preparing to unpack .../archives/scowl_7.1-1_all.deb ...
Unpacking scowl (7.1-1) ...
Processing triggers for cracklib-runtime (2.9.1-1build1) ...

و به دایرکتوری اش می ریم. چون برنامه اجرایی نیست و تنظیمات و موقت هم نیست منطقا باید راحت در usr/share بشه پیداش کرد.

jadi@funlife:/usr/share/dict/scowl$ cd /usr/share/dict/scowl/

حالا یک نگاه بندازیم ببینیم چه تیپ چیزهایی داریم اینجا:

jadi@funlife:/usr/share/dict/scowl$ ls -ltrh | tail
-rw-r--r-- 1 root root  13K Oct 23  2011 special-hacker.50
-rw-r--r-- 1 root root 2.4M Oct 23  2011 english-words.95
-rw-r--r-- 1 root root 238K Oct 23  2011 english-words.50
-rw-r--r-- 1 root root  34K Oct 23  2011 english-words.10
-rw-r--r-- 1 root root 787K Oct 23  2011 english-proper-names.95
-rw-r--r-- 1 root root  57K Oct 23  2011 british-words.80
-rw-r--r-- 1 root root  56K Oct 23  2011 american-words.80
-rw-r--r-- 1 root root  15K Oct 23  2011 american-words.70
-rw-r--r-- 1 root root 9.1K Oct 23  2011 american-words.50
-rw-r--r-- 1 root root  303 Oct 23  2011 american-words.10

و توی یکیشون رو به اتفاق نگاه می کنیم:

jadi@funlife:/usr/share/dict/scowl$ tail canadian-words.10
realized
realizes
realizing
recognize
recognized
recognizes
recognizing
rumour
spelled
storey

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

حالا کار راحته: گشتن در همه فایل ها و پیدا کردن چیزی که ترکیب مورد نظر اونها رو داشته باشه. دقت کنیم که در egrep، علامت نقطه یعنی «هرکاراکتری»… علامت ^ یعنی اول خط و علاقمت $ یعنی آخر خط. پس:

jadi@funlife:/usr/share/dict/scowl$ egrep "^a...q.....$" *
english-words.35:antiquated
english-words.35:antiquates
english-words.80:antiquarks
english-words.95:ablaqueate
english-words.95:alfaquin's
english-words.95:antiquer's

یوهاهاها… دو تا آخری که جذاب نیستن. آنتی کوارک که می دونیم چیه، ablaqueate رو توی گوگل سرچ کردم مهم نبود پس جواب ما antiquated است که یعنی کهنه و منسوخ و خارج از مد. جواب رو دادم و منتظرم ببینم چی می‌گن.


آپدیت: نوید راد پیشنهاد می ده به دلیل نبودن بسته اسکاول در اکثر توزیع ها کد زیر رو هم بذارم:

curl -O -J -L http://sourceforge.net/projects/wordlist/files/latest/download?source=typ_redirect
tar -xvf ./scowl-yyyy.mm.dd.tar.gz # say, scowl-2015.02.15.tar.gz
cd scowl-2015.02.15/final
grep -Ea "^a.{3}q.{5}$" *

بخش اول که دانلود کردن اسکاول از منبعش در سورس فورج است و خط آخر همون رجکس من که کمی بهتر / کمتر خوانا نوشته شده و عوضش یک چیز جدید به شما یاد می ده اگر درست نگاهش کنین:‌ روش اینکه بگیم «از همین قبلی سه تا».

دانلود کل درس‌های صوتی و پی دی اف قرآن مهندس بازرگان

مهشاد برامون نوشته که داره سعی می کنه کل مجموعه تفسیر قرآن مهدس عبدلعلی بازرگان رو از سایت رسمی مهندس بازرگان دانلود کنه ولی چون ساختار سایت خیلی سنتی و صفحه صفحه طراحی شده، اینکار براش سخته و سایت هم جایی رو نذاشته که بتونیم کل جریان رو یکجا دانلود کنیم. با یک نگاه به صفحه مشخص می شه که از این لینک http://bazargan.com/abdolali/main0.html لینک شده به ۱۱۴ سوره و اونجا چندین فایل mp3 در صفحه هست که هر کدوم بخشی از درس های قرآن مربوط به تفسیر اون سوره هستن.

بذارین ماجرا رو پیچیده نکنیم و با دستور جذاب wget همه اش رو بگیریم. از اونجایی که احتمالا حجمش زیاده و اینترنت ما هم اسلامی (که حتی به درد قرآن دانلود کردن هم نمی خوره ظاهرا) وصل می شیم به یک سرور اینترنتی و اونجا این دستور رو می زنیم:

$ wget http://bazargan.com/abdolali/main0.html -r -l3 -c -np -k

سوییچ ها مشخص هستن. r برای دانلود ریکرسیو (تو در توی صفحات) ولی فقط تا سه لایه داخلی (l3) چون لایه اول که همین صفحه است، لایه دوم می شه صفحه ای که سوره ها توش هست و لایه سوم می شه فایل های mp3 و یک c هم اضافه می کنیم به معنی continue که اگر قطع شد وسطش راحت ادامه بدیم و یک np یعنی از جایی که هستیم بالاتر نمی خوایم بریم (no parrent).

روی اون سرور تقریبا پنج دقیقه بعد همه چیز دانلود شده:

$ tree -d -L 3 #فقط دایرکتوری ها و فقط سه لایه
.
└── bazargan.com
    └── abdolali
        ├── gifs
        ├── MP3
        ├── PDF
        └── video

خیلی هم خوب. ما فقط دایرکتوری MP3 رو می خوایم. حجمش چقدره؟

$ du -hs bazargan.com/abdolali/MP3/
4.4G    bazargan.com/abdolali/MP3/
$ du -hs bazargan.com/abdolali/PDF/
184M    bazargan.com/abdolali/PDF/

هوم.. حالا که صداها چهارگیگ هستن و پی دی اف ۱۸۴ مگ. تکرار همین کار روی کامپیوتر / سرور شما، همین نتیجه رو خواهد داد. البته اگر راحتتر هستین دوستان خوبم در aivivid که خدمات سرور، میزبانی و خیلی چیزهای دیگه می دن زحمت کشیدن و فایل مگنتی برای تورنت درست کردن و تا مدتی خودشون سید می کنن و بعدش هم اگر کسی دوست داشت، به سید کردن ادامه می ده. تورنت دانلود درس های (صوتی) قران مهندس عبدالعلی بازرگان در صورتی که سید داشته باشه، روشی راحتتر برای دانلود است.

پ.ن. بازرگان جزو آدم هایی است که هم در رژیم پهلوی زندان رفته و هم در رژیم فعلی و اتفاقا در اون رژیم همراه میرحسین موسوی زندان بوده. این تیپ آدم ها نشون می دن که دنبال قدرت نبودن و تلاش می کردن چیزی رو اصلاح کنن. علیرغم اینها، من این درسها رو نشنیدم و نمی دونم چیه و این مساله به عنوان یک سوال لینوکسی برام جالب بوده.

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

جناب جادي، با سلام و تحيت و تشكر از اطلاع دادنتان و رعايت وجداني حقوق ديگران، اما در مورد قرآن، حق شخصي وجود ندارد و كتاب خدا متعلق به همه است و هرگونه تسهيلي كه هركس دراين زمينه فراهم كند، موجب خوشحالي و تشكر هم خواهد بود
موفق باشيد
بازرگان