لینوکس رو دوست دارم چون… نسخه سوم، split

30 01 2008

خط-فرمان Gnu/Linux یکی از کامل ترین مجموعه‌های نرم‌افزاری که من تا حالا دیدم. برنامه ای که قبلا معرفی کردم، یکی از زیر مجموعه‌ی این خط‌فرمانه. البته شاید خیلی درست نباشه این جملات من، چطور بگم، خط‌فرمان یک بستر برای نرم‌افزار هاییه که بهش وابسته هستن. کار کردن با خط فرمان شاید اون اوایل خیلی سخت باشه ولی بعد از یه مدت وقتی که درکش بشه، به قدری شیرین و آسونه که بین برنامه های گرافیکی و متنی، متنی رو ترجیح دیده می‌شه. البته یه موقع فکر نکنید که مثل خط‌فرمان Windows هستش! نه، خیلی کامل تر، آسون تر، زیبا تر و هوشمند تر. قابلیت های خیلی زیادی داره، مثلا لوله‌بندی (لوله کشی!) یا خیلی چیز های دیگه. در وصف سهل بودن این خط‌فرمان همین بس که من بعد از یک ماه می‌تونم بیام در موردش مطلب بنویسم!

حتی اساتید وقتی مثلا می‌خوان یه برنامه از مخازن (حالا به این موضوع هم می‌پردازیم) بگیرن و نصب کنن، به جای این که از ابزار کامل و قدرتمند «Synaptic» استفاده کنن، از دستوری مثل «apt-get» استفاده می‌کنن! واقعا هیجان انگیزه.

در مورد این مخازن قبلا یه نیمچه توضیحی دادم، «مخازن» مخزن های برنامه ها و بسته‌ها هستن! گنو/لینوکس برنامه‌هاش رو خودش هم توزیع می‌کنه و شما لازم نیست هِی گوگل کنید تا یه سایت دانلود گیر بیارین بعد توی اون سایت دانلود یه برنامه پیدا و دریافت کنید و بعد بگردین دنبال Crack! توی گنو/لینوکس کافیه که با یکی از ابزار های قدرتمند مدیریت بسته ها و از جمله یکی از آسون ترینشون، «Add/Remove»، اسم برنامه یا توضیح! رو تایپ کنید و یه لیست بلند بالا براتون میاد که اتفاقاRanking هم داره! کنار اسم برنامه تیک می‌زنید و بعد برنامه دریافت و نصب می‌شه! به همین راحتی، به همین خوشمزگی!

گفتم خوشمزه، یاد این del.icio.us افتادم! آقا این ملت هِی می‌نوشتن «خوشمزه» و من هِی نمی‌فهمیدم منظور چیه! تا این که اَندی پیش نقطه های این del.icio.us رو برداشتم و به کلمه «delicious» به معنی «خوشمزه» رسیدم! ایده‌ی جالبی بود، نه؟! «خوشمزه» من رو می‌تونید توی این آدرس ببینید!

اما این پست! باز هم اَندی پیش متوجه شدم که می‌شه توی خط فرمان یک پرونده‌ی بزرگ رو به چندین پرونده‌ی کوچیک تبدیل کرد! خوراک پرونده های حجیم برای اینترنت یا حمل و نقل پرونده ها با حافظه های کم حجم از جمله Floppy Disk.

کار کردن هم باش خیلی آسونه، در راحت ترین حالت کافیه تایپ کنید split و بعد آدرس پرونده ای رو که می‌خواین قسمت قسمتش کنید بنویسد، در این صورت اون پرونده رو به پرونده هایی که 1000 «سطر» توشه تقسیم می‌کنه. البته «سطر» گفتم نه «Byte»، این حالت یا بهتر بگم، مد کاری، بیشتر برای پرونده‌ های متنی مناسبه ولی البته برای پرونده‌های غیر متنی هم می‌شه ازش استفاده کرد. با مثال جلو برم بهتره، من یک پرونده‌ دارم به اسم «kdewebdev-3.5.8.tar.bz2» با حجم «6055535byte» که البته می‌دونید که نزدیک به 6MB هستش. من توی اون پوشه ای که این پرونده‌ هست، دستور زیر رو می‌نویسم:


split kdewebdev-3.5.8.tar.bz2

خروجی دستور 25 تا پرونده‌، با اسم هایی که با x شرو می‌شه و 2 حرف بعدش ادامه داره، اما از خروجی یک لیست می‌گیرم که متوجه بشین:


6055535 kdewebdev-3.5.8.tar.bz2
231423 xaa
225017 xab
225813 xac
218265 xad
266633 xae
241322 xaf
263471 xag
217687 xah
239489 xai
251063 xaj
268824 xak
250660 xal
272641 xam
247741 xan
261805 xao
239534 xap
241567 xaq
226826 xar
243129 xas
246051 xat
241094 xau
214849 xav
265853 xaw
244498 xax
210280 xay

اعداد اول حجم پرونده‌‌هاست و بعدش هم نام اونها. می‌بینید که پرونده‌‌ها حجم مساوی ندارن. البته فراموش نکنید که ما ساده ترین مد کاری رو آزمایش کردیم! توی همین مد کاری ساده می‌تونیم اسم خروجیمون رو هم که حالت پیشفرض «x» هست رو تغییر بدیم، البته بهتربود می‌گفتم که پیشوند اسم و نه خود اسم. برای این کار کافیه که بعد از دستور split و نام پرونده‌، پیشوند خروجی رو بنویسیم، دستور و خروجیش رو ببینید:


split kdewebdev-3.5.8.tar.bz2 ramin
-----------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
231423 raminaa
225017 raminab
225813 raminac
218265 raminad
266633 raminae
241322 raminaf
263471 raminag
217687 raminah
239489 raminai
251063 raminaj
268824 raminak
250660 raminal
272641 raminam
247741 raminan
261805 raminao
239534 raminap
241567 raminaq
226826 raminar
243129 raminas
246051 raminat
241094 raminau
214849 raminav
265853 raminaw
244498 raminax
210280 raminay

همون طور که می‌بینید پیشوند به «ramin» تغییر کرد. اما پسوند! با سوییچ «a» می‌شه که تعداد اون پسوند رو هم تغییر داد، مثال بالا رو با سوییچ a و بعد 5 ببینید:


split -a 5 kdewebdev-3.5.8.tar.bz2 ramin
----------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
231423 raminaaaaa
225017 raminaaaab
225813 raminaaaac
218265 raminaaaad
266633 raminaaaae
241322 raminaaaaf
263471 raminaaaag
217687 raminaaaah
239489 raminaaaai
251063 raminaaaaj
268824 raminaaaak
250660 raminaaaal
272641 raminaaaam
247741 raminaaaan
261805 raminaaaao
239534 raminaaaap
241567 raminaaaaq
226826 raminaaaar
243129 raminaaaas
246051 raminaaaat
241094 raminaaaau
214849 raminaaaav
265853 raminaaaaw
244498 raminaaaax
210280 raminaaaay

خب می‌بینید که چطور شد؟! اما می‌شه به جای پسوند که از حروف تشکیل شده، اعداد رو به کار بست! من این رو ترجیح می‌دم، سوییچ «d» این کار رو می‌کنه. مثال بالا رو با سوییچ d ببینید:


split -da 5 kdewebdev-3.5.8.tar.bz2 ramin
-----------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
231423 ramin00000
225017 ramin00001
225813 ramin00002
218265 ramin00003
266633 ramin00004
241322 ramin00005
263471 ramin00006
217687 ramin00007
239489 ramin00008
251063 ramin00009
268824 ramin00010
250660 ramin00011
272641 ramin00012
247741 ramin00013
261805 ramin00014
239534 ramin00015
241567 ramin00016
226826 ramin00017
243129 ramin00018
246051 ramin00019
241094 ramin00020
214849 ramin00021
265853 ramin00022
244498 ramin00023
210280 ramin00024

خب، جالب شد! اما اگه یادتون باشه گفتیم که به طور پیشفرض پرونده‌ رو به پرونده‌ هایی حاوی 1000 «سطر» تقسیم می‌کنه. می‌شه با سوییچ «l» و بعد تعداد «سطر» اون 1000 پیشفرض رو تغییر داد، من به 10000 تغییرش می‌دم.


split -da 5 -l 10000 kdewebdev-3.5.8.tar.bz2 ramin
--------------------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
2380183 ramin00000
2498778 ramin00001
1176574 ramin00002

من خیلی با این حالت «سطر» بازی کار نمی‌کنم! یه سوییچ داره که خیلی جالبه! به جای «سطر» پرونده‌ های خروجی رو با تعداد «Byte» ها پر می‌کنه و نه تعداد «سطر» ها و این اون چیزیه که می‌خوایم. سوییچ «b» و بعد حجم پرونده‌ خروجی، آسونه نه؟! همون پرونده‌ رو به قطعاتی با حجم «1000000» تقسیم می‌کنم:


split -db 1000000 kdewebdev-3.5.8.tar.bz2 ramin
-----------------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
1000000 ramin00
1000000 ramin01
1000000 ramin02
1000000 ramin03
1000000 ramin04
1000000 ramin05
55535 ramin06

اما جالب تر بود اگه می‌تونستم حجم هر پرونده‌ خروجی رو دقیقا 1Mega Byte کنم؟! نه؟ کافیه به جای «1000000» بنویسم «1m»، دیدین چه باحاله؟!


split -db 1m kdewebdev-3.5.8.tar.bz2 ramin
-------------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
1048576 ramin00
1048576 ramin01
1048576 ramin02
1048576 ramin03
1048576 ramin04
812655 ramin05

البته می‌دونم که می‌دونید هر «1048576» Byte، یک Mega Byte هستش! البته به جای اون «m» می‌شه از «k» برای هر کیلو Byte و از «b» برای هر 512 Byte استفاده کرد. اما راه برگش این پرونده‌‌ها! اون هم خیلی آسونه، از دستور «cat» استفاده می‌کنیم! چطور؟ برای آخرین مثال، تمام پرونده های خروجی رو می‌ریزم توی یه پرونده‌ به اسم «saar»:


cat ramin* > saar

البته شاید برای اطمینان چک کردن «md5» هر دو تا پرونده‌ (اولی و آخری) بد نباشه، من برای هر دو دستور «md5sum» رو می‌نویسم:


md5sum saar kdewebdev-3.5.8.tar.bz2
6c17c4b71a4d306da4b81a0cfd3116e1 saar
6c17c4b71a4d306da4b81a0cfd3116e1 kdewebdev-3.5.8.tar.bz2

می‌بینید که هر دوتاشون دقیقا یکی هستن، چون حتی اگه یک Byte هم اختلاف داشتن، «md5» شون یکی نمی‌شد! البته بعدا در مورد این «md5» بیشتر توضیح می‌دم. حالا که از صحت پرونده‌مون اطمینان داریم، می‌تونیم پرونده‌ ها قسمت شده رو پاک کنیم:


rm ramin*

دیدین چقدر خط فرمان لذت داره! به همین راحتی می‌شه با Computer به صورت خیلی کامل کار کرد! البته این قسمت خط‌فرمان اونه و نه محیط گرافیکیش! محیط گرافیکی به شدت کامل و آسونی هم داره! Gnome و KDE این محیط های گرافیکی هستن که محیط بسیار آروم، زیبا و دلچسبی رو براتون فراهم می‌کنن. البته برای این که حرفم رو کامل کنم، باید بگم به جز این دو تا محیط گرافیکی، محیط های دیگه‌ای هم وجود داره.


کارها

اطلاعات

2 جواب

30 01 2008
یاس وحشی

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

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

.:: با تقدیم احترام ::.

2 02 2008
mostafa hakhamaneshy

منم لینوکس رو خیلی دوست دارم و در کل عاشق دنیای opensource ام .
وبلاگ باحالی داری .دمت گرم .

دیدگاه‌تان را بنویسید: