لینوکس و من

۱۵ مطلب با کلمه‌ی کلیدی «ترمینال» ثبت شده است

ویرایش یک اتوبوس عکس در ترمینال!

عنوان ایهام تناسب داره! منظورم اینه که ویرایش چندین عکس در خط فرمان لینوکس. تنها با یک خط دستور! مثل مطلب قبلی از دستور for استفاده میکنیم تا عکس ها رو در یک فولدر پیدا کنه و بعد تغییرات خودمون رو روی عکس ها میدیم. تغییراتی که خودم لازم داشتم، یکی تغییر اندازه ی عکس ها به ۸۰۰×۶۰۰ بود و یکی گذاشتن یک watermark روی تک تک عکس ها. برای این کار اول باید imagemagic رو نصب کنیم و بعد بریم توی فولدر عکس ها و ترمینال رو اونجا باز کنیم. آنگاه: (!)

 

اول تغییر اندازه ی عکس ها:

 

for k in $(ls *.JPG); do convert -resize 800x600 -quality 90 $k re-$k; done

 

با این دستور عکس های با پسوند JPG (دقت کنید که به حروف بزرگ و کوچیک حساسه) تبدیل به عکس هایی با اندازه ی ۸۰۰×۶۰۰ با کیفیت ۹۰٪ میشن که اول اسمشون re داره. یعنی فایل اصلی دست نخورده باقی میمونه.

 

حالا میخوایم به عکس های جدید یک watermark بیفزاییم! یعنی مثلا اسم خودتون، یا وبسایتتون… بطن کار اینه که دستور پایینی دو تا عکس رو با درجه شفافیتی که تعیین میکنیم میندازه روی هم.  پس ما یه عکس کوچیک میسازیم که توش نوشته مثلا delstory.com . اندازه این عکس wm.png مثلا هست ۱۲۷×۲۷ و بعد اون رو با درجه شفافیت ۸۰% میندازیم روی عکس ها.

 

for k in $(ls re*.JPG); do composite -watermark 80% wm.png $k wm-$k; done

 

نتیجه ی این دستور، فایهایی هستند به نام wm-re-FILENAME.JPG که دارای سایز ۸۰۰×۶۰۰ و مارک دلخواه شما هستند. بنا بر این الآن سه گروه فایل داریم. یک گروه فایل اصلی (اولیه) و دست نخورده. یک گروه عکس هایی که فقط تغییر اندازه پیدا کردن و یک گروه عکس هایی که تغییر اندازه پیدا کردن و watermark روشون قرار گرفته. میتونید گروه دوم یا اول رو حذف کنید.

آفرین پسر خوب

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

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

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

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

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

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

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 که نتایج رو براتون تو یه فایل ذخیره کنه.

تغییر owner , group در خط فرمان

یک دستور خوب برای تغییر owner و group در مورد فولدر ها و فایل های درون اون ها به چیزی که خودتون میخواید. مثلا من میخوام فولدر /home/amin/bigbig رو که توسط root ساخته شده و نمیذاره که من بهش دسترسی داشته باشم، با این دستور اینکارو می کنم:

sudo chown -hR amin:amin /home/amin/bigbig

حالا محتویات این فولدره به علاوه خودش، به owner از نوع amin (اولی) , group از نوع amin (دومی) تغییر کرد.  یعنی لازم نیست تک تک فایل ها رو edit کنید. که چه کار ….نانه ایست!