لینوکس و من

حذف دایرکتوری هایی که خالی نیستند

نویسنده : امین | تاریخ: 1395/05/28

میتونیم از دستور rm یا rmdir برای حذف فایلها و دایرکتوری ها استفاده کنیم. اما برای اینکه دایرکتوری هایی که خالی نیستند هم بتونیم با این روش حذف کنیم (که ایراد میگیره و میگه این دایرکتوری خالی نیست) میتونیم از سوییچ زیر استفاده کنیم:
rm -rf
و به راحتی حذف میشن

حذف فایل ها با پسوند خاص در همه دایرکتوری ها

نویسنده : امین | تاریخ: 1395/05/28

ممکنه یک وقت یک فول آلبوم از یکی از این سایت هایی که احساس میکنند صاحب حقوق مادی و معنوی اثر هستند دانلود کنید. علاوه بر اینکه توی هر سوراخی که بتونن اسم خودشون رو مینویسند، ممکنه تعداد زیادی فایلهای txt و url هم توی هر پوشه ای قرار داده باشند.
برای اینکه به راحتی کل این فایلهای مزاحم رو حذف کنیم کافیه در پوشه ی دایرکتوری فول آلبوم این دستور رو اجرا کنیم

find . -type f -name '*.txt' -delete
یا
find . -type f -name '*.txt' -exec rm {} \;
یا
rm -- **/*.txt
که طبیعتا بجای txt میتونید هر چیز دیگه ای قرار بدید. اما مواظب باشید که این رو در دایرکتوری های عقب تر مثل فولدر home اجرا نکنید که... وا مصیبتا!

لینک‌های مرتبط

برگرداندن backspace به nautilus

نویسنده : امین | تاریخ: 1395/05/19

از وقتی گنوم ۳ اومد همین طور از قابلیت های شخصی سازی دسکتاپ کمتر و کمتر شد. تا اینکه متوجه شدم در نسخه 3.20 که الان نصبه فایل منیجر Nautilus قابلیت backspace که یک فولدر به عقب برمیگشت رو نداره! و توسعه دهندگان تصمیم گرفتند از Alt و کلید های جهت‌نمای کیبورد استفاده کنند و هیچ حق تغییر هم به کاربر ندادند.
خیلی گشتم تا این اسکریپت پایتون رو پیدا کردم که باعث میشه این قابلیت برگرده. برای این منظور اول از github دانلودش کنید و اون رو در مسیر زیر قرار بدید، و اگر فولدرها وجود ندارند اونها رو بسازید
~/.local/share/nautilus-python/extensions/


بسته python-nautilus هم باید نصب باشه. و یک بار با سوییچ q باید nautilus رو از نو اجرا کنید تا تاثیرش رو ببینید.
اگر در آینده لینک اسکریپت خراب شد، در ادامه همین مطلب میتونید ببینیدش. اون رو در یک فایل پایتون با پسوند py ذخیره کنید و در مسیر بالا قرار بدید.
ادامه مطلب

چند اسکریپت در مورد زمان (ویرایش شد)

نویسنده : امین | تاریخ: 1395/05/17

اولی ساعت رو به همراه میزان زمانی که کامپیوتر روشن بوده بوسیله notify-osd اعلام میکنه. به درد مواقعی میخوره که شما در حالت فول اسکرین یک برنامه هستید و به ساعت دسترسی ندارید، با یه شورتکات میتونید این اسکریپت رو اجرا کنید. همچنین میتونید به cron بدید تا مثلا سر هر ساعت یه نوتیفیکیشن بیاد و ساعت رو به شما اعلام کنه!


#!/bin/bash
play /usr/share/sounds/freedesktop/stereo/message-new-instant.oga && /usr/bin/notify-send -u critical -i "clock" "Clock" "Its $(date +%H:%M) now. Uptime: $(uptime | sed 's/.*up \([^,]*\), .*/\1/')"



شما میتونید به جای دستور play از mplayer یا cvlc یا چیزای دیگه هم استفاده کنید. و فایل صدای ساعت رو هم به دلخواه خودتون تعیین کنید.

اسکریپت بعدی که توی اینترنت پیداش کردم و با notify-osd ترکیبش کردم بوسیله zenity یه تایمی از شما میگیره و بعد از اون تایم به شما یه نوتیفیکیشن میده. یعنی یه تایمر بسیار ساده.


#!/bin/bash
    # This script asks the user for a time, waits the specified amount
    # of time, and shows an alert dialog.

    TIME=$(zenity --entry --title="Timer" --text="Enter a duration for the timer.\n\n Examples: 5s or 5m or 5h")

    sleep $TIME

    /usr/bin/notify-send -u critical -i "clock" "Ding Ding!" "It has been $TIME. " && play /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga











تقویم های فارسی ای وجود دارند که ممکنه به سلیقه هر کسی خوش نیان. یا اینکه ممکنه فقط نیاز داشته باشید بدونید امروز چندمه! با یه اسکریپت ساده notify-osd میتونیم اینجوری تقویم رو داشته باشیم

قبلش باید jdate رو نصب کنید و بعد با این دستور میتونید این نوتیفیکیشن رو داشته باشید:
/usr/bin/notify-send -u critical -i "date" "تاریخ شمسی" "امروز، $(jdate +%G\ %W)"
با گذاشتتن یک شورتکات یا alias خیلی راحت تاریخ شمسی رو میتونیم داشته باشیم.

اما برای گذاشتن این موارد در cron باید یه تغییراتی در اسکریپت بدیم. خروجی دستور زیر رو کپی کنید:

set | grep DBUS_SESSION_BUS_ADDRESS



مثلا میشه این:
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus


بعد این رو در ابتدای اسکریپت قرار بدید:
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus


وگرنه notify-send در cron اجرا نمیشه.

یک اسکریپت برای ایجاد واترمارک روی ویدیو

نویسنده : امین | تاریخ: 1395/05/16

نیاز داشتم به اینکه یک واترمارک روی یک سری ویدیوهای آموزشی قرار بدم. سرچ کردم و روشش رو با ffmpeg پیدا کردم. منتها اگه میخواستی برای هر ویدیو اون دستور طولانی رو اجرا کنی سخت میشد! برای همین از دوستان انجمن فارسی آرچ کمک گرفتم تا یک اسکریپت داشته باشم برای اینکار. آقای Arcush زحمت کشیدن و این اسکریپت رو ساختن.

اول اینکه دستور اولی به این شکل بود:
ffmpeg -i '/PATH/TO/INPUT.flv'  -i /PATH/TO/wm.png -filter_complex '[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
یا
ffmpeg -i '/PATH/TO/INPUT.flv' -i /PATH/TO/wm.png -filter_complex "overlay=15:10" -preset veryfast output.mp4



دستور بالا واترمارکی که در مسیر مشخص شده قرار گرفته روی فایلی که مورد نظر ماست قرار میده و اون رو با نام output.mp4 در پوشه home کاربر میسازه. چیز جالبیه. اما راحت نیست. 15:10 هم یعنی ۱۵ واحد از سمت چپ و ۱۰ واحد از سمت بالا فاصله داشته باشه.
#!/bin/bash 
for k in $(ls *.wmv); do ffmpeg -i "$k" -i ~/wm.png -filter_complex '[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast "new-$k"; done
یا
for k in $(ls *.wmv); do ffmpeg -i "$k" -i ~/wm.png -filter_complex "overlay=15:10" -preset veryfast "new-$k"; done




اگه ما دستور بالا رو به این شکل در بیاریم، و اون رو در یک اسکریپت مثلا با نام addwmall قرار بدیم، و اون رو در پوشه ای که فیلمهای ما قرار دارند اجرا کنیم، فایل wm.png که باید در فولدر ویدیوها موجود باشه به تمام  فایل‌های wmv در پوشه ای که اسکریپت در اون ایجاد میشه اضافه میشه. که این هم خوبه، ولی چیزی که میخواستم اسکریپت پایینی بود که دوست خوبم در انجمن آرچ اون رو نوشت:
#!/bin/bash

path_of_first_file=$(dirname "$1")
name_of_first_file=$(basename "$1")

new_name="new-$(echo "$name_of_first_file.mp4")"
new_output=$(echo "$path_of_first_file/$new_name")

ffmpeg -i "$1"  -i "$2" \
-filter_complex "overlay=15:10" -preset veryfast "$new_output"

echo
echo "New video saved in: " "$path_of_first_file"\/$new_name
با اسکریپت بالا میتونیم دو مقدار فایل ویدیویی و فایل واترمارک رو بهش بدیم، تا یک فایل حاوی واترمارک با نام جدید در کنار فایل ویدیوی قبلی ایجاد بشه. مثلا:
addwm /PATH/TO/INPUT.flv /PATH/TO/wm.png

طبق تجربه ای که در کار با اسکریپت داشتم دریافتم که فایلهای flv وقتی روشون واترمارک میذاریم با کیفیت بدی ذخیره میشن. اگه اونها پسوند mp4 داشته باشن درست میشه. برای همین در اسکریپت بالا اون mp4. رو که برنگ سبز مشخص کردم اضافه کردم تا همه ی فایلهای واترمارک شده mp4 باشن اصلا! بنابراین میتونین اون new_ هم که با نارنجی مشخص کردم حذف کنین. چون مثلا فایلی به اسم video.flv به فایلی به اسم video.flv.mp4 تبدیل میشه و نیازی به new_ نیست.

غیر فعال کردن نمایش منوی فایرفاکس با Alt

نویسنده : امین | تاریخ: 1395/05/15

اینکه در فایرفاکس بخوایم زبان کیبرد رو با Alt و Shift مرتب عوض کنیم و هر دفعه منوی بالای فایرفاکس ظاهر بشه، روی اعصابه! میتونیم برای غیر فعال کردن این حالت بوسیله about:config وارد تنظیمات بشیم و بعد مقدار ui.key.menuAccessKeyFocuses رو به false تغییر بدیم. برای نمایش منو هم میتونیم از ترکیب Alt + V استفاده کنیم

نمایش مقدار باتری لپتاپ در ترمینال

نویسنده : امین | تاریخ: 1395/05/15

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

 upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage|time"


برای اینکه جالب تر بشه، میتونیم این دستور رو به صورت یک alias استفاده کنیم.

باز کردن new tab هنگام اجرای فایرفاکس

نویسنده : امین | تاریخ: 1395/05/13

برای اینکه وقتی فایرفاکس باز میشه ما صفحه ی speed dial خود فایرفاکس رو ببینیم، باید در قسمت Prefrences در قسمت آدرس Home page اینو قرار بدیم:

about:newtab

حذف بوردر فایرفاکس در گنوم ۳

نویسنده : امین | تاریخ: 1395/05/13

برای اینکه فضای بهتری در کار در گنوم ۳ داشته باشیم، میتونیم با این افزونه بوردر یا دکوریشن فایرفاکس رو موقعی که در حالت maximized قرار داره حذف کنیم.

انتقال فایل بین دو لپتاپ لینوکسی

نویسنده : امین | تاریخ: 1395/05/12

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

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

۱- در قسمت IPv4 تنظیمات IP رو از حالت اتوماتیک به Manual تغییر بدید و بعد به طور مثال برای هر کامپیوتر این مقادیر رو وارد کنید:

 gateway netmask address
  255.255.255.0 10.0.0.1 کامپیوتر اول
  255.255.255.0 10.0.0.2 کامپیوتر دوم
و بعد کانکشن ها رو فعال کنید. حالا با پینگ کردن آدرس هر کدوم از کامپیوترها میتونیم به متصل بودنشون مطمئن بشیم.

حالا میخوایم با استفاده از یک ماژول ساده ی پایتون از طریق FTP به فایلها در یک کامپیوتر دسترسی پیدا کنیم.  چون اینجا نیاز به اقدامات امنیتی نداره سراغ چیزای دیگه لازم نیست بریم و با یک کانکشن FTP غیر ایمن کارمون راه میفته.

در کامپیوتر مقصد، با استفاده از این دستور ماژول مربوط به پایتون رو نصب میکنیم:
yaourt -S python-pyftpdlib
یا
yaourt -S python2-pyftpdlib




حالا در دایرکتوری ای که میخوایم فایلها رو از اون منتقل کنیم یک ترمینال باز میکنیم و این دستور رو اجرا میکنیم

python -m pyftpdlib -w
یا
python2 -m pyftpdlib -w




حالا میتونیم در کامپیوتر مقصد با استفاده از یک نرم افزار FTP مثل Filezila به راحتی به کامپیوتر مبدا وصل بشیم و فایلها رو منتقل کنیم. IP کامپیوتر اول رو میدیم و کانکت میشیم.

1 2 3 4 5 6 7 ...