علی شکیبا

دفتر یادداشت دیجیتال برای هر چیز مفید!

۳ مطلب با کلمه‌ی کلیدی «bash» ثبت شده است

برای تایپ از TeX Studio استفاده می‌کنم، اما تایپ متن فارسی با آن زجرآور است! به همین دلیل، ترجیح می‌دهم تا متن فارسی را در gedit تایپ کنم و خروجی آن را هم در evince ببینم. اما اجرای دستی xelatex زجرآور است، گرچه خیلی کمتر از زجر تایپ فارسی در TeX Studio است! اولین تلاش برای خودکار کردن به صورت زیر بود که هر دقیقه یکبار xelatex را اجرا می‌کرد!

while $( sleep 60s )
do
xelatex -synctex=-1 -interaction=nonstopmode report.tex
   bibtex report
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
done

این موضوع خوب بود تا اینکه زمان پایان اجرای xelatex کمی بیش از یک دقیقه شد! این بار دست به دامن اینترنت شدم! بسته inotify-tools دقیقا این کار را انجام می‌دهد!

while inotifywait -e close_write report.tex
do
xelatex -synctex=-1 -interaction=nonstopmode report.tex
   bibtex report
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
done

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

while true
do
change = $( inotifywait -e close_write,moved_to,create . )
change = ${change#./ *}
if [ "$change" = "report.tex" ]
then
xelatex -synctex=-1 -interaction=nonstopmode report.tex
    bibtex report
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
fi
done
۰ نظر موافقین ۰ مخالفین ۰ ۰۱ ارديبهشت ۹۴ ، ۱۱:۱۴
علی شکیبا

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

find . -iname "*.mp4" -exec mplayer -vo null -ao null -frames 0 -identify -msglevel all=0 {} \; | grep ^ID_LENGTH | python -c "import sys; print sum(float(l.split('=')[1])/60.0 for l in sys.stdin), ' minutes.'"

البته اگر پایتون نداشته باشیم، این دستورات bash مجموع زمان فیلم‌ها را به واحد ثانیه نشان می‌دهد

find . -iname "*.mp4" -exec mplayer -vo null -ao null -frames 0 -identify -msglevel all=0 {} \; | grep ^ID_LENGTH | tr -d "ID_LENGTH=" | paste -s -d+ | bc
۰ نظر موافقین ۰ مخالفین ۰ ۱۲ فروردين ۹۴ ، ۲۳:۵۵
علی شکیبا

شب گذشته بر اثر اشتباه، حافظه فلش خودم رو به سیستم کناری (سیستم دوستم که از نظر تعداد و تنوع ویروس‌ها در جهان باید تک باشد!) زدم! از آنجا که از لینوکس استفاده می‌کنم خیلی مشکل خاصی نیست! با یک نگاه به محتویات فلش متوجه ویروس عزیز New Folder شدم که در تمام دایرکتوری ها و زیر دایرکتوری ها خودش رو تکثیر کرده با نام های مختلف! بنابراین یکی از اون فایل ها را به شاخه اصلی فلش منتقل کردم و بعد هم برای موارد مشابه، فایل را به main.txt تغییر نام دادم. حالا وقت اون رسیده تا حساب این ویروس رو برسیم!

#!/bin/bash
counter=0
find . -type f -iname "*.exe" -print0 | while IFS= read -r -d $'\0' i; do
if [ $(md5sum "$i" | cut -f 1 -d ' ') == $(md5sum "./main.txt" | cut -f 1 -d ' ') ]
then
rm "$i"
counter=$((counter+1))
echo "$counter\t"
fi
done

البته فراموش نکنید فایل های autorun.ini رو هم پاک کنید!

۰ نظر موافقین ۱ مخالفین ۰ ۰۸ دی ۹۳ ، ۰۹:۰۱
علی شکیبا