انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: احسان فعالپور در 02 آذر 1394، 01:52 ب‌ظ

عنوان: افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: احسان فعالپور در 02 آذر 1394، 01:52 ب‌ظ
سلام دوستان.
اگه مایل باشید در هر پست از این تاپیک یه اسکریپت بش قرار بدیم( والبته تعیین کنیم که سطح اسکریپت مبتدیه یا متوسط یا ...)
به نظر من میتونه مفید باشه برای افزایش اطلاعاتمون راجع به بش.
اولش رو خودم میذارم:
تعیین سایز یک پوشه:(سطح متوسط)

#!/bin/bash
number=$(pwd | grep -io / | wc -l)
nameOfCurrentDirectory=$(pwd | cut -d'/' -f$((number+1)))
moreInfo=0
help(){
echo -e "\033[1m Anonymes Argument $1\033[0m"
echo -e "\033[1m Please Pass To This Script ONLY 2 Arguments\033[0m"
        echo -e "\033[1m -h for set the scaleFactor to 1024 OR -H for set the scaleFactor to 1000\033[0m"
        echo -e "\033[1m -v Or -V Getting Available Space In Current Partition(Scale Is According To Previous Switch.\033[0m"
exit 1
}
scaleFactor=1000
while [ $# -gt 0 ]
do
key=$1
case $key in
-h)
scaleFactor=1024
shift
;;
-H)
scaleFactor=1000
shift
;;
-v|-V)
moreInfo=1
shift
;;
*)
help $key
shift
;;
esac
done
size=$(du -b --max-depth=1 2>/dev/null | sed -n '/^.* *\.$/p' | sed -e 's/\.$//' -e 's/ //g' -e "s/$/\/($scaleFactor*$scaleFactor)/"| bc -l | sed -e 's/^\./0\./' -e 's/0*$/0/')
tmpSize=$(echo $size | sed 's/\..*$//')
if [ $tmpSize -gt 1000 ];then
size=$(echo -e $size"/$scaleFactor" | bc -l | sed -e 's/^\./0\./' -e 's/0*$/0/')
echo -e "Size Of \033[1m$nameOfCurrentDirectory\033[0m Directory : \033[1m$size GiB\033[0m \033[0m"
elif [ $tmpSize -eq 0 ];then
size=$(echo -e $size"*$scaleFactor" | bc -l | sed -e 's/^\./0\./' -e 's/0*$/0/')
echo -e "Size Of \033[1m$nameOfCurrentDirectory\033[0m Directory : \033[1m$size KiB\033[0m \033[0m"
else
echo -e "Size Of \033[1m$nameOfCurrentDirectory\033[0m Directory : \033[1m$size MiB\033[0m \033[0m"
fi
if [ $moreInfo -eq 1 ];then
        if [ $scaleFactor -eq 1000 ];then
                available=$(df -BGB . | grep -v "Filesystem" | awk '{print $4}')

        else
                available=$(df -BG . | grep -v "Filesystem" | awk '{print $4}')
        fi
echo -e "Available Space In This Partition :\033[1m $available \033[0m "
fi

کافیه توی یه پوشه باشید و اجراش کنید تا بهتون سایز اون پوشه رو بده:

ehsan@ehsan-SVF152190X:~/Downloads$ dirSize
Size Of Downloads Directory : 675.3292260 MiB
ehsan@ehsan-SVF152190X:~/Downloads$
منتظر اسکریپت های جذابتون هستم.
با تشکر
=====ویرایش ======
از دوستانی که قصد شرکت توی این تاپیک رو دارن تقاضا دارم اسپم ندن و طبق روال معین شده در هر پست فقط اسکریپت قرار بدن.
با تشکر از همه دوستان.
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: احسان فعالپور در 02 آذر 1394، 02:32 ب‌ظ
تغییر نام فایلهای با پسوند مشابه در یک پوشه(مبتدی)
من قبلا توی ویندوز که بودم دیدم واسه انجام یه همچین کار ساده ای برنامه نوشتن.
مثلا من یه سری عکس دارم و میخوام یه نظمی به اسمهاشون بدم کافیه به این اسکریپت بگم همه فایلهای با پسوند .jpg رو اسمشون رو بذار Photo.
این اسکریپت خودش بر اساس تعداد عکسها اونها رو با اسمی که من بهش دادم شماره گذاری میکنه.
#!/bin/bash
help(){
echo -e "\033[1m Missed/Anonymes Argument $1\033[0m"
echo -e "\033[1m Please Pass To This Script ONLY 2 Argument\033[0m"
        echo -e "\033[1m 1: -e or --extension Of Files (.jpg, .mp4, etc)\033[0m"
        echo -e "\033[1m 2: (Optional Argument) -n or --name (Photos, Clips, ...) The Default Name is File\033[0m"
exit 1
}
newName=File
if [ $# -gt 1 ];then
while [ $# -gt 0 ]
do
key=$1
case $key in
-e | --extension )
extension=$2
shift
;;
-n | --name )
newName=$2
shift
;;
* )
help $key
;;
esac
shift
done
else
help
fi
if [ -z ${extension+x} ];then
help
fi
listOfFiles=($(ls *${extension} 2>/dev/null))
if [ $? -ne 0 ];then
echo -e "\033[1m There is no file with $extension extension.\033[0m"
else
count=$(echo ${#listOfFiles[@]})
indices=($(seq -w $count))
current=0
for item in ${listOfFiles[*]}
do
mv $item "./$newName${indices[$current]}$extension" 2>/dev/null
((current++))
done
fi

مثال
ehsan@ehsan-SVF152190X:~/Desktop/Files$ touch file{1..25}.{txt,jpg}
ehsan@ehsan-SVF152190X:~/Desktop/Files$ ls
file10.jpg  file12.jpg  file14.jpg  file16.jpg  file18.jpg  file1.jpg   file21.jpg  file23.jpg  file25.jpg  file3.jpg  file5.jpg  file7.jpg  file9.jpg
file10.txt  file12.txt  file14.txt  file16.txt  file18.txt  file1.txt   file21.txt  file23.txt  file25.txt  file3.txt  file5.txt  file7.txt  file9.txt
file11.jpg  file13.jpg  file15.jpg  file17.jpg  file19.jpg  file20.jpg  file22.jpg  file24.jpg  file2.jpg   file4.jpg  file6.jpg  file8.jpg
file11.txt  file13.txt  file15.txt  file17.txt  file19.txt  file20.txt  file22.txt  file24.txt  file2.txt   file4.txt  file6.txt  file8.txt
ehsan@ehsan-SVF152190X:~/Desktop/Files$ renameall -e .jpg -n Photo
ehsan@ehsan-SVF152190X:~/Desktop/Files$ ls
file10.txt  file14.txt  file18.txt  file21.txt  file25.txt  file5.txt  file9.txt    Photo04.jpg  Photo08.jpg  Photo12.jpg  Photo16.jpg  Photo20.jpg  Photo24.jpg
file11.txt  file15.txt  file19.txt  file22.txt  file2.txt   file6.txt  Photo01.jpg  Photo05.jpg  Photo09.jpg  Photo13.jpg  Photo17.jpg  Photo21.jpg  Photo25.jpg
file12.txt  file16.txt  file1.txt   file23.txt  file3.txt   file7.txt  Photo02.jpg  Photo06.jpg  Photo10.jpg  Photo14.jpg  Photo18.jpg  Photo22.jpg
file13.txt  file17.txt  file20.txt  file24.txt  file4.txt   file8.txt  Photo03.jpg  Photo07.jpg  Photo11.jpg  Photo15.jpg  Photo19.jpg  Photo23.jpg
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: فاروق در 02 آذر 1394، 03:51 ب‌ظ
کار خیلی خوبی میکنی
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: Nelliel در 02 آذر 1394، 05:12 ب‌ظ
کانورت با کلیک راست در ناتیلوس ! (خیلی مبتدی)

پیش‌نیاز‌ها :


اول یه فایل متنی با اسم Aricon  در هوم درست میکنیم و بعد خطوط زیر را توش میذاریم :
#!/bin/bash
codec=$(zenity --title "Aricon" --width 500 --height 250 --list --text "Choose your codec" --radiolist --column "Select" --column "Codecs" TRUE "libx265" FALSE "libx264" FALSE "mpeg2video" FALSE "copy");
if [ $? = 1 ];
then exit;
fi
outname=$(zenity --entry --title="Aricon" --text="Please choose your output name" )
if [$? = 1];
then exit;
fi
format=$(zenity --title "Aricon" --width 500 --height 300 --list --text "Choose your output format" --radiolist --column "Select" --column "Format" TRUE "mp4" FALSE "mkv" FALSE "flv" FALSE "mov" FALSE "mp2" FALSE "mp3");
if [ $? = 1 ];
then exit;
fi
for i in *
do
  ffmpeg -i "$i" -c:v "$codec" -c:a copy "$outname"."$format"
done

حالا به فایل دستور اجرا شدن میدیم :

sudo chmod u+x Aricon
و حالا دستور زیر را میزنیم :

cp ~/Aricon ~/.local/share/nautilus/scripts
حالا کافی هست روی یه ویدو کلیک کرد و گزینه‌ی Aricon را زد تا کانورت شه به اون چیزی که انتخاب کردید  :)

فقط هنوز progress bar براش ننوشتم اگه خواستید ببینید اجرا شده یا نه این دستور را بزنید :

htop | grep ffmpeg
و اگه خواستید اجرا شدنش را ببینید باید فور گراندش کنید :

fg ffmpeg
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: رسول سعیدنژاد در 02 آذر 1394، 05:36 ب‌ظ
باخبر شدن از اپلود زیرنویس های مورد نظر در Subscene:

#!/bin/bash

wget 'http://bbsub.ir/subtitles/the-merchant-gaekju-2015--2015-jangsaui-sin-gaekju-2015/farsi_persian' -O '/home/ubuntu/Get-Subtitle/The-Merchant/file1.html'

sleep 2s

if [[ `diff /home/ubuntu/Get-Subtitle/The-Merchant/file.html /home/ubuntu/Get-Subtitle/The-Merchant/file1.html | grep 'blue face'` != "" ]];then
  gxmessage \
  -borderless \
  -center \
  -display :0 \
  -fn "ubuntu 14" \
  'Zirnevis-e The Merchant Oomad Yaro!!' ;

  touch The-Merchant_Subtitle{`date +%y-%m-%d-%a`}

fi

sleep 2s

mv -f '/home/ubuntu/Get-Subtitle/The-Merchant/file1.html' '/home/ubuntu/Get-Subtitle/The-Merchant/file.html'

آدرس و دیتاها برای سیستم من هستن و هرکس باید دیتای خودش رو جایگزین کنه  :)

بسته های مورد نیاز:
coreutils
wget
gxmessage
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: { AliReaza } در 02 آذر 1394، 06:03 ب‌ظ
سلام

خواندن ‌BarCode با WebCam ( سطح: ساده تا متوسط )

http://forum.ubuntu.ir/index.php/topic,127456.0.html

عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: احسان فعالپور در 02 آذر 1394، 08:21 ب‌ظ
با تشکر از همه دوستان به خاطر اسکریپتهای باحالشون.
اضافه کردن آهنگها به play list ( سطح مبتدی):

#!/bin/bash
extensions=(.mp3 .ogg .wav)
isAudioFile=0
flagExist=0
currentItem="$1"
for extension in "${extensions[@]}";do
if [ "${currentItem: -4}" == "$extension" ];then
isAudioFile=1
fullpath=$(realpath "$currentItem")
if [ -f $HOME/.MPV_Playlist ];then
if [ $(grep -oc "$fullpath" $HOME/.MPV_Playlist) -gt 0 ];then
flagExist=1
break
else
echo "$fullpath">> $HOME/.MPV_Playlist
exit 0
fi
else
echo "$fullpath">> $HOME/.MPV_Playlist
exit 0
fi
fi
done
if [ $isAudioFile -eq 0 ];then
tput bold
echo -e "\033[1m $currentItem Is Not A Audio File\033[0m"
exit 1
fi
if [ $flagExist -eq 1 ];then
tput bold
echo -e "\033[1m $currentItem Is Already Exist In PlayList\033[0m"
exit 1
fi
تو این اسکریپت اول چک میشه که آیا فایل جزو فرمتهای صوتی هست یا نه وبعد اگه قبلا به playlist اضافه نشده بود اضافش میکنه.
حالا فقط کافیه یه با mpv پخشش کنیم که اون رو هم واسش یه alias مینویسیم.
(راستی من برای چک کردن اینکه آیا فایل صوتی هست یا نه راه بهتری بلد نیستم واینکه اگه من توی یه پوشه پر از آهنگ بخوام این اسکریپت به همه اعمال بشه باید چجوری آرکومانها رو بهش پاس بدم؟اگه کسی میتونه اینو بهم یاد بده لطف کنه واسکریپت کامل شده رو پست کنه)
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: علیرضاامیرصمیمی در 02 آذر 1394، 10:17 ب‌ظ
یادمه یه تاپیک مشابه همین بود قفل شد
دوستان یه پیشنهاد مهم به همه :)
اگه میخواید برای بقیه مفید باشه کامنت گذاری بفرمایید :)
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: { AliReaza } در 03 آذر 1394، 05:38 ق‌ظ
یادمه یه تاپیک مشابه همین بود قفل شد
دوستان یه پیشنهاد مهم به همه :)
اگه میخواید برای بقیه مفید باشه کامنت گذاری بفرمایید :)

پیشنهاد خوبه.

Script بررسی ارتباط با Internet ( سطح مبتدی )

http://forum.ubuntu.ir/index.php/topic,127381.0.html
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: Nelliel در 03 آذر 1394، 06:25 ق‌ظ
سطح : مبتدی

این اسکریپت هیچ استفاده‌ای نداره اما باحال هست احسان هم نگفت اسکریپت مفید بذارید گفت فقط اسکریپت بدید تا با شل اسکریپت آشنا شیم, من یه اسکریت خیلی به درد نخور ولی با حال نوشتم که میگه میخوام هوم را پاک کنم و در اون موقع دکمه‌های کنترل سی و کنترل زی هم غیر فعال میشن و شما نمی‌تونید با اون دکمه‌ها از ادامه‌ی کار جلوگیری کنید و اسکریپت به کارش ادامه میده.

این اسکریپت هیچ آسیبی نمیزنه.
#!/bin/bash
#disables control c
trap '' 2
# disables control z
trap "" SIGTSTP
#for undrestanding who is the user in order to print it
for i in $(whoami)
do
echo "We are going to delete /home/"$i" if you disagree use ctrl+c to exit."
done
sleep 10
echo Removing starts at :
sleep 1
echo 10
sleep 1
echo 9
sleep 1
echo 8
sleep 1
echo 7
sleep 1
echo 6
sleep 1
echo 5
sleep 1
echo 4
sleep 1
echo 3
sleep 1
echo 2
sleep 1
echo 1
sleep 1
echo Please wait we are optimizing ...
sleep 5
echo This files going to be delete :
sleep 3
for i in $(find ~/*)
do
echo "$i"
done
for i in $(whoami)
do
notify-send "we deleted /home/"$i""
done
sleep 4
sudo reboot


عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: فاروق در 03 آذر 1394، 06:39 ق‌ظ
بمب دستی خودم!
کاری نمیکنه جز اینکه حافظه تون رو تا یه مدت پر میکنه و کامپیوتر رو کند و بعد متوقف میشه.سطح : بشدت مبتدی رده : تخریب،سرگرمی‎
bomb(){bomb();}حالا تابع رو یه بار اجرا کنید.
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: علیرضاامیرصمیمی در 03 آذر 1394، 07:01 ق‌ظ
سطح : مبتدی

این اسکریپت هیچ استفاده‌ای نداره اما باحال هست احسان هم نگفت اسکریپت مفید بذارید گفت فقط اسکریپت بدید تا با شل اسکریپت آشنا شیم, من یه اسکریت خیلی به درد نخور ولی با حال نوشتم که میگه میخوام هوم را پاک کنم و در اون موقع دکمه‌های کنترل سی و کنترل زی هم غیر فعال میشن و شما نمی‌تونید با اون دکمه‌ها از ادامه‌ی کار جلوگیری کنید و اسکریپت به کارش ادامه میده.

این اسکریپت هیچ آسیبی نمیزنه.
#!/bin/bash
#disables control c
trap '' 2
# disables control z
trap "" SIGTSTP
#for undrestanding who is the user in order to print it
for i in $(whoami)
do
echo "We are going to delete /home/"$i" if you disagree use ctrl+c to exit."
done
sleep 10
echo Removing starts at :
sleep 1
echo 10
sleep 1
echo 9
sleep 1
echo 8
sleep 1
echo 7
sleep 1
echo 6
sleep 1
echo 5
sleep 1
echo 4
sleep 1
echo 3
sleep 1
echo 2
sleep 1
echo 1
sleep 1
echo Please wait we are optimizing ...
sleep 5
echo This files going to be delete :
sleep 3
for i in $(find ~/*)
do
echo "$i"
done
for i in $(whoami)
do
notify-send "we deleted /home/"$i""
done
sleep 4
sudo reboot




استفاده مثبت و مهم میشه ازش کرد! :) میشه برای clear کردن و ... trap کرد . من ازش اینجا استفاده کردم
https://github.com/alireza-amirsamimi/pdmt/blob/master/files/PDMT
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: Nelliel در 03 آذر 1394، 02:31 ب‌ظ
علیرضا دانلود منیجرت که دلیل وجود من هست لینک اونو نده.

یکم توضیح بده از اسکریپت چرت چطوری استفاده کردی از کامنت هم استفاده کن.
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: علیرضاامیرصمیمی در 04 آذر 1394، 04:08 ق‌ظ
من میخواستم وقتی کاربر ctrl + c رو میزنه دانلود کنسل بشه! ولی اطلاعات دانلود (مثل لینک و درصد دانلود شده و ...) هم به فایل report انتقال پیدا کنه تا بعدا کاربر بتونه بهش دسترسی پیدا کنه برای همین ctrl+c رو trap کردم
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: Nelliel در 04 آذر 1394، 04:14 ق‌ظ
من میخواستم وقتی کاربر ctrl + c رو میزنه دانلود کنسل بشه! ولی اطلاعات دانلود (مثل لینک و درصد دانلود شده و ...) هم به فایل report انتقال پیدا کنه تا بعدا کاربر بتونه بهش دسترسی پیدا کنه برای همین ctrl+c رو trap کردم

ممنون جواب دادی در کل من که خیلی با pdm حال میکنم بهتر از اون هم ندیدم اما خب حالا چطوری هم کنسل میشه و هم میفرسته اگه ترپ کنی که دیگه کنسل نمیشه ؟؟؟؟
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: علیرضاامیرصمیمی در 04 آذر 1394، 04:25 ق‌ظ
بعد kill میکنه دیگه :)
عنوان: پاسخ : افزایش مهارت در اسکریپت نویسی
ارسال شده توسط: فاروق در 04 آذر 1394، 11:50 ب‌ظ
حسین بهتر نبود تو قسمت شمارش معکوس از حلقه استفاده میکردی؟