انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: احسان فعالپور در 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$
منتظر اسکریپت های جذابتون هستم.
با تشکر
=====ویرایش ======
از دوستانی که قصد شرکت توی این تاپیک رو دارن تقاضا دارم اسپم ندن و طبق روال معین شده در هر پست فقط اسکریپت قرار بدن.
با تشکر از همه دوستان.
-
تغییر نام فایلهای با پسوند مشابه در یک پوشه(مبتدی)
من قبلا توی ویندوز که بودم دیدم واسه انجام یه همچین کار ساده ای برنامه نوشتن.
مثلا من یه سری عکس دارم و میخوام یه نظمی به اسمهاشون بدم کافیه به این اسکریپت بگم همه فایلهای با پسوند .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
-
کار خیلی خوبی میکنی
-
کانورت با کلیک راست در ناتیلوس ! (خیلی مبتدی)
پیشنیازها :
اول یه فایل متنی با اسم 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
-
باخبر شدن از اپلود زیرنویس های مورد نظر در 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
-
سلام
خواندن BarCode با WebCam ( سطح: ساده تا متوسط )
http://forum.ubuntu.ir/index.php/topic,127456.0.html
-
با تشکر از همه دوستان به خاطر اسکریپتهای باحالشون.
اضافه کردن آهنگها به 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 مینویسیم.
(راستی من برای چک کردن اینکه آیا فایل صوتی هست یا نه راه بهتری بلد نیستم واینکه اگه من توی یه پوشه پر از آهنگ بخوام این اسکریپت به همه اعمال بشه باید چجوری آرکومانها رو بهش پاس بدم؟اگه کسی میتونه اینو بهم یاد بده لطف کنه واسکریپت کامل شده رو پست کنه)
-
یادمه یه تاپیک مشابه همین بود قفل شد
دوستان یه پیشنهاد مهم به همه :)
اگه میخواید برای بقیه مفید باشه کامنت گذاری بفرمایید :)
-
یادمه یه تاپیک مشابه همین بود قفل شد
دوستان یه پیشنهاد مهم به همه :)
اگه میخواید برای بقیه مفید باشه کامنت گذاری بفرمایید :)
پیشنهاد خوبه.
Script بررسی ارتباط با Internet ( سطح مبتدی )
http://forum.ubuntu.ir/index.php/topic,127381.0.html
-
سطح : مبتدی
این اسکریپت هیچ استفادهای نداره اما باحال هست احسان هم نگفت اسکریپت مفید بذارید گفت فقط اسکریپت بدید تا با شل اسکریپت آشنا شیم, من یه اسکریت خیلی به درد نخور ولی با حال نوشتم که میگه میخوام هوم را پاک کنم و در اون موقع دکمههای کنترل سی و کنترل زی هم غیر فعال میشن و شما نمیتونید با اون دکمهها از ادامهی کار جلوگیری کنید و اسکریپت به کارش ادامه میده.
این اسکریپت هیچ آسیبی نمیزنه.
#!/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
-
بمب دستی خودم!
کاری نمیکنه جز اینکه حافظه تون رو تا یه مدت پر میکنه و کامپیوتر رو کند و بعد متوقف میشه.سطح : بشدت مبتدی رده : تخریب،سرگرمی
bomb(){bomb();}
حالا تابع رو یه بار اجرا کنید.
-
سطح : مبتدی
این اسکریپت هیچ استفادهای نداره اما باحال هست احسان هم نگفت اسکریپت مفید بذارید گفت فقط اسکریپت بدید تا با شل اسکریپت آشنا شیم, من یه اسکریت خیلی به درد نخور ولی با حال نوشتم که میگه میخوام هوم را پاک کنم و در اون موقع دکمههای کنترل سی و کنترل زی هم غیر فعال میشن و شما نمیتونید با اون دکمهها از ادامهی کار جلوگیری کنید و اسکریپت به کارش ادامه میده.
این اسکریپت هیچ آسیبی نمیزنه.
#!/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
-
علیرضا دانلود منیجرت که دلیل وجود من هست لینک اونو نده.
یکم توضیح بده از اسکریپت چرت چطوری استفاده کردی از کامنت هم استفاده کن.
-
من میخواستم وقتی کاربر ctrl + c رو میزنه دانلود کنسل بشه! ولی اطلاعات دانلود (مثل لینک و درصد دانلود شده و ...) هم به فایل report انتقال پیدا کنه تا بعدا کاربر بتونه بهش دسترسی پیدا کنه برای همین ctrl+c رو trap کردم
-
من میخواستم وقتی کاربر ctrl + c رو میزنه دانلود کنسل بشه! ولی اطلاعات دانلود (مثل لینک و درصد دانلود شده و ...) هم به فایل report انتقال پیدا کنه تا بعدا کاربر بتونه بهش دسترسی پیدا کنه برای همین ctrl+c رو trap کردم
ممنون جواب دادی در کل من که خیلی با pdm حال میکنم بهتر از اون هم ندیدم اما خب حالا چطوری هم کنسل میشه و هم میفرسته اگه ترپ کنی که دیگه کنسل نمیشه ؟؟؟؟
-
بعد kill میکنه دیگه :)
-
حسین بهتر نبود تو قسمت شمارش معکوس از حلقه استفاده میکردی؟