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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: افزایش مهارت در اسکریپت نویسی  (دفعات بازدید: 2455 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
افزایش مهارت در اسکریپت نویسی
« : 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، 03:56 ب‌ظ توسط احسان فعالپور »
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #1 : 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، 02:35 ب‌ظ توسط احسان فعالپور »
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #2 : 02 آذر 1394، 03:51 ب‌ظ »
کار خیلی خوبی میکنی
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #3 : 02 آذر 1394، 05:12 ب‌ظ »
کانورت با کلیک راست در ناتیلوس ! (خیلی مبتدی)

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

  • Zenity
  • FFmpeg

اول یه فایل متنی با اسم 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
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3504
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #4 : 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
« آخرین ویرایش: 02 آذر 1394، 05:38 ب‌ظ توسط Rasubuntu »
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :) - آزادی، بزرگ‌ترین دروغ بشریت

آفلاین { AliReaza }

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی، دیگر در مورد آزادی شعار نده...
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #5 : 02 آذر 1394، 06:03 ب‌ظ »
سلام

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

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


آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #6 : 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 مینویسیم.
(راستی من برای چک کردن اینکه آیا فایل صوتی هست یا نه راه بهتری بلد نیستم واینکه اگه من توی یه پوشه پر از آهنگ بخوام این اسکریپت به همه اعمال بشه باید چجوری آرکومانها رو بهش پاس بدم؟اگه کسی میتونه اینو بهم یاد بده لطف کنه واسکریپت کامل شده رو پست کنه)
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین علیرضاامیرصمیمی

  • ناظر انجمن
  • *
  • ارسال: 2489
  • جنسیت : پسر
  • Arch Linux + KDE
    • وبسایت شخصی من
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #7 : 02 آذر 1394، 10:17 ب‌ظ »
یادمه یه تاپیک مشابه همین بود قفل شد
دوستان یه پیشنهاد مهم به همه :)
اگه میخواید برای بقیه مفید باشه کامنت گذاری بفرمایید :)

آفلاین { AliReaza }

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی، دیگر در مورد آزادی شعار نده...
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #8 : 03 آذر 1394، 05:38 ق‌ظ »
یادمه یه تاپیک مشابه همین بود قفل شد
دوستان یه پیشنهاد مهم به همه :)
اگه میخواید برای بقیه مفید باشه کامنت گذاری بفرمایید :)

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

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

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

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #9 : 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


طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #10 : 03 آذر 1394، 06:39 ق‌ظ »
بمب دستی خودم!
کاری نمیکنه جز اینکه حافظه تون رو تا یه مدت پر میکنه و کامپیوتر رو کند و بعد متوقف میشه.سطح : بشدت مبتدی رده : تخریب،سرگرمی‎
bomb(){bomb();}حالا تابع رو یه بار اجرا کنید.
« آخرین ویرایش: 04 آذر 1394، 11:45 ب‌ظ توسط فاروق کریمی زاده »
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین علیرضاامیرصمیمی

  • ناظر انجمن
  • *
  • ارسال: 2489
  • جنسیت : پسر
  • Arch Linux + KDE
    • وبسایت شخصی من
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #11 : 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

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #12 : 03 آذر 1394، 02:31 ب‌ظ »
علیرضا دانلود منیجرت که دلیل وجود من هست لینک اونو نده.

یکم توضیح بده از اسکریپت چرت چطوری استفاده کردی از کامنت هم استفاده کن.
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین علیرضاامیرصمیمی

  • ناظر انجمن
  • *
  • ارسال: 2489
  • جنسیت : پسر
  • Arch Linux + KDE
    • وبسایت شخصی من
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #13 : 04 آذر 1394، 04:08 ق‌ظ »
من میخواستم وقتی کاربر ctrl + c رو میزنه دانلود کنسل بشه! ولی اطلاعات دانلود (مثل لینک و درصد دانلود شده و ...) هم به فایل report انتقال پیدا کنه تا بعدا کاربر بتونه بهش دسترسی پیدا کنه برای همین ctrl+c رو trap کردم

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : افزایش مهارت در اسکریپت نویسی
« پاسخ #14 : 04 آذر 1394، 04:14 ق‌ظ »
من میخواستم وقتی کاربر ctrl + c رو میزنه دانلود کنسل بشه! ولی اطلاعات دانلود (مثل لینک و درصد دانلود شده و ...) هم به فایل report انتقال پیدا کنه تا بعدا کاربر بتونه بهش دسترسی پیدا کنه برای همین ctrl+c رو trap کردم

ممنون جواب دادی در کل من که خیلی با pdm حال میکنم بهتر از اون هم ندیدم اما خب حالا چطوری هم کنسل میشه و هم میفرسته اگه ترپ کنی که دیگه کنسل نمیشه ؟؟؟؟
طرفدار انیمه و مانگا - کاربر آرچ لینوکس