ویرایش دسته جمعی تصاویر در ترمینال

از دستور for استفاده میکنیم تا عکس ها رو در یک فولدر پیدا کنه و بعد تغییرات خودمون رو روی عکس ها میدیم. تغییراتی که خودم لازم داشتم، یکی تغییر اندازه ی عکس ها به ۸۰۰×۶۰۰ بود و یکی گذاشتن یک watermark روی تک تک عکس ها. برای این کار اول باید imagemagic رو نصب کنیم.

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

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

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

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

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

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

ادامه مطلب

حذف پسورد فایل PDF

حتما با PDF هایی که پسورد دارند مواجه شدید. بسته به سطح دسترسی که سازنده تعیین کرده، شما به یک سری چیزها دسترسی دارید یا ندارید. مثلا میتونید پرینت کنید یا نمی تونید و … اگر پسورد فایل رو ندونید هیچ کاری نمیتونید بکنید. در ویندوز نرم افزارهای خنده داری هستند که پسورد فایل PDF رو پیدا میکنند. اما در لینوکس یک چیز بسیار ساده و فوق العاده ای هست که به راحتی و با یک خط دستور در ترمینال فایل PDF شما رو بعله…
برای اینکار، در Terminal دستور بفرمایید:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=/home/amin/bedoone-password.pdf -c .setpdfwrite -f  /home/amin/Desktop/baa-password.pdf
هم اکنون برید حالش رو ببرید.

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

یک فایل متنی داریم. آت و آشغال زیاد داره. اما کلی ایمیل توش هست که ما به اونها نیاز داریم.
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’ {} \;
میتونید آخرش هم بنویسید > ~/resault.txt که نتایج رو براتون تو یه فایل ذخیره کنه.

خاموش کردن مانیتور بدون دکمه

مانیتور هایی که دکمه ی خاموش و روشن ندارن، مثلا لپ تاپ ها، و نمیدونیم کلید میانبر این کار چیه، در xorg این دستور این کار رو انجام میده:

sleep 1 && xset dpms force off

عدد ۱ یعنی یک ثانیه صبر کن و بعد مانیتورو خاموش کن. بعدش هم با تکون دادن موس یا زدن کلید روی کیبرد، روشن میشه.  میتونید این دستور رو براش یه کلید میانبر shortcut درست کنید و راحت…

اگر دستور بالا کار نکرد این رو امتحان کنید

xset s blank ; sleep 1 ; xset s activate

و اگر در wayland  در Gnome بودید این رو امتحان کنید

busctl --user call org.gnome.Shell /org/gnome/ScreenSaver org.gnome.ScreenSaver SetActive b true

چند کار کاربردی با ffmpeg

همون طور که می‌دونید ffmpeg یکی از کتابخانه های پر استفاده در مدیریت و پخش فایلهای تصویری و صوتی است. ابزارهای گرافیکی مختلفی برای کار با ffmpeg درست شدن، ولی کار با خط فرمان یک چیز دیگه است! 

در این مطلب میخوام چند تا از کارهایی که من با ffmpeg لازم داشتم انجام بدم رو بنویسم. 

جدا کردن یک تکه از ویدیو - بدون re-encode 

ffmpeg  -i input.mp4  -vcodec copy -acodec copy -ss 00:00:10 -to 00:09:05  output.mp4

دستور بالا میگه از ثانیه ۱۰ تا دقیقه ۰۹ و ثانیه ۰۵ کات کن و در یک فایل ذخیره کن. این کار رو هم بدون re-encode کردن ویدیو انجام بده. اگه ویدیوی شما حاوی keyframe باشه (یعنی فریم هایی که موقع ساخت ویدیو بعنوان نقطه عطف تعیین شدن! نمیدونم چطوری توضیح بدم!) موقع کات کردن بدون re-encode زمانی رو که شما تعیین کردید برش انجام بشه رعایت نمیشه و برش از نزدیک ترین keyframe اتفاق می افته. بنابراین دقیق نخواهد بود. ولی اگر ویدیو شما keyframe نداشته باشه، این مشکل پیش نمیاد. 

جدا کردن یک تکه از ویدیو - با re-encode

ffmpeg  -i input.mp4  -ss 00:00:10 -to 00:09:05  -async 1 output.mp4

دستور بالا هم برای کات کردن ویدیو هست. ولی با re-encode. این بار اگه ویدیو keyframe داشته باشه، اول ویدیو رو یک باره دیگه تولید میکنه و keyframe ها رو حذف میکنه و بعد اون رو کات میکنه. این طولانی تر خواهد بود ولی زمان برش دقیقا همان چیزی خواهد بود که شما تعیین کردید. ولی اگر میخواید چند تکه از یک ویدیوی حاوی keyframe رو کات کنید، نیاز نیست هربار re-encode کنید. با دستور زیر یک بار ویدیوی بدون keyframe تحویل بگیرید و عملیات برش رو روی این ویدیو با دستور اولی انجام بدید تا سریع برش ها انجام بشن:

ffmpeg  -i input.mp4  -async 1 output.mp4

ادامه مطلب




حاصل سر و کله زدن های من با لینوکس