انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: بهزادubuntu در 21 بهمن 1387، 04:32 قظ
-
سلام دوستان راستش من مدتیه میخوام این کارو بکنم ولی نتونستم چون نمیدونستم از کجا باید شروع کنم ولی از اینجا (http://forum.ubuntu.ir/index.php?topic=7960.msg66145#new) شروع شد که برای روشن شدن موضوع قسمتیشو میذارم
حسین جان من مدتیه دارم سعی میکنم شبیه این کار رو در خط فرمان بکنم ! که خیلی اذیت شدم میتونم یک برنامه
اینطوری با این کاربرد ها درست کنم:
گزینه سرچ
در قسمت name پسوند های انتخابی خودم باشه و گزینه برای اظافه و حذف پسوند
در قسمت بالاش گزینه برای 'mv to poshe' و... باشه که دستور رو بتونم دستی عوض کنم ویا کم و زیاد کنم
وگزینه preview داشته باشه
من سرسشم دانلد کردم و لی خیلی پیچیدس میشه همینو تغییر بدم یا یه برنامه اماده بااین مشخصات پیدا کنم یا ساده شدش رو بدون رابط گرافیکی بسازم ??? لطفا راهنماییم کنید و منبا مناسب بهم معرفی کنید چون نمیدونم دنبال چی بگردم
ممنون ;)
با چی می خوایین یه اینترفیس درست کنید ؟ جاوا بلدید یا پایتون و غیره . اونطوری ها که میگین اسون نیست . یه زمانی با پایتون نوشته بودم ولی الان ندارمش .
اقا مهدی من اصلا برنامه نویسی کار نکردم و میخوام یه کار عشقی بکنم مثلا الان برای تست از یه اسکریپت که یکی از دوستان نوشته استفاده کردم و یه اسکریپت ساده نوشتم که فایل های jpg رو در ~پیدا میکنه و در مرحله دوم در ~/pic کپی میکنه من همین کارو در ابعاد یکم وسیعتر میخوام بکنم که اگه بشه گرافیکی باشه خیلی بهتره \\:D/
مثلا دستور
find /home -name '*.jpg' | xargs -i cp -v {} '/home/behzad/pic'
رو به این صورت بکنه:
۱-تیک find رو فعال کنم
۲-پوشه مورد نظر رو که برای پیدا کردن فایل هست بنویسم
۳-تیک فرمت jpg رو فعال کنم
۴-تیک copy رو فعال کنم
۵-پوشه مقصد رو وارد کنم
۶- دکمه action رو بزنم
به همین سادگی ;D
من از این کارها خیلی برای انجام دادن دارم ولی برای برنامه گرافیکی یا غیر گرافیکی نیاز به برنامه دارم این رو هم از اینترنت پیدا کردم ولی نه دقیقا میدونم چه کاری میکنه نه نیاز منو برطرف میکنه
(http://z.askapache.com/uploads/2008/09/search-and-replace.png)
#!/bin/bash
# 2008-09-23
umask 022
### run script with any argument to enable verbose debugging
[[ $# -ne 0 ]] && set -o xtrace && set -o verbose
### SHELL OPTIONS
set +o noclobber # allowed to clobber files
set +o noglob # globbing on
set -e # abort on first error
shopt -s extglob
VER="1.1"
SEARCH="AskApache";
REPLACE="AskApache1";
SDIR=$PWD;
###########################################################################--=--=--=--=--=--=--=--=--=--=--#
###
### FUNCTIONS
###
###########################################################################==-==-==-==-==-==-==-==-==-==-==#
#--=--=--=--=--=--=--=--=--=--=--#
# script_title
#==-==-==-==-==-==-==-==-==-==-==#
function script_title(){
#=# TURNS ON COLORING ONLY FOR TERMS THAT CAN SUPPORT IT
C="\033[";C0=;C1=;C2=;C3=;C4=;C5=;C6=;C7=;C8=;C9=;
case ${TERM:-dummy} in linux*|con80*|con132*|console|xterm*|vt*|screen*|putty|Eterm|dtterm|ansi|rxvt|gnome*|*color*)
C0="${C}0m";C1="${C}1;30m";C2="${C}1;32m";C3="${C}0;32m";C4="${C}1;37m";C5="${C}0;36m";C6="${C}1;35m";C7="${C}0;37m";C8="${C}30;42m";C9="${C}1;36m"; ;;
esac
clear
echo -e "${C1} __________________________________________________________________________ "
echo -e "| ${C2} ___ __ ___ __ ${C1} |"
echo -e "| ${C2} / _ | ___ / /__ / _ | ___ ___ _____/ / ___ ${C1} |"
echo -e "| ${C2} / __ |(_-</ '_// __ |/ _ \/ _ \`/ __/ _ \/ -_) ${C1} |"
echo -e "| ${C3} /_/ |_/___/_/\_\/_/ |_/ .__/\_,_/\__/_//_/\__/ ${C1} |"
echo -e "| ${C3} /_/ ${C1} |"
echo -e "| |"
echo -e "| ${C4} FIND AND REPLACE SCRIPT Version ${VER} ${C1} |"
echo -e "${C1} __________________________________________________________________________ ${C0} \n\n"
}
#--=--=--=--=--=--=--=--=--=--=--#
# pm
#==-==-==-==-==-==-==-==-==-==-==#
function pm()
{ echo -en "\n\n${C2}>>> ${C4}${1} ${C0}\n\n"; return 0; }
#--=--=--=--=--=--=--=--=--=--=--#
# pi
#==-==-==-==-==-==-==-==-==-==-==#
function pi()
{ echo -e "${C6}=> ${C4}${1} ${C0}"; return 0; }
#--=--=--=--=--=--=--=--=--=--=--#
# ok_continue
#==-==-==-==-==-==-==-==-==-==-==#
function ok_continue()
{ local ans; echo -en "${C4} \n [ Press any key to continue ] ${C0} \n"; read -n 1 ans; return 0; }
#--=--=--=--=--=--=--=--=--=--=--#
# yes_no
#==-==-==-==-==-==-==-==-==-==-==#
function yes_no()
{ local a YN=65; echo -en "${C2}>>> ${C4}${1:-Q} [y/n] ${C0}"; read -n 1 a; case $a in [yY]) YN=0; ;; esac; return $YN; }
#--=--=--=--=--=--=--=--=--=--=--#
# p_done
#==-==-==-==-==-==-==-==-==-==-==#
function p_done()
{ sleep 1; echo -e "\n${C8} DONE ${C0} \n"; sleep 1; return 0; }
#--=--=--=--=--=--=--=--=--=--=--#
# get_settings
#==-==-==-==-==-==-==-==-==-==-==#
function get_settings(){
local a cha
script_title
while true; do
for a in "SDIR" "SEARCH" "REPLACE"; do
cha=g
echo -en "\n ${C4}(Enter for Default: ${!a} )${C0}\n ${a}${C6}=> ${C0} "; read -e cha; echo;
[[ ${#cha} -gt 2 ]] && eval "$a"=$cha;
done
yes_no "ARE THESE SETTINGS CORRECT" && echo -e "\n\n" && break
done
}
#--=--=--=--=--=--=--=--=--=--=--#
# search_and_replace
#==-==-==-==-==-==-==-==-==-==-==#
function search_and_replace(){
for i in $(seq 0 $((${#FOUNDFILES[@]} - 1))); do
thefile=${FOUNDFILES[$i]}
if [[ $1 -eq 0 ]]; then
echo -e "\n\n\n___________________________________________________________________\n"
echo -e "${C4}FILE: ${C3}${thefile} ${C2}($(command du -hs ${thefile}|awk '{ print $1}'))"
echo -e "${C4}Type: ${C6}$(command file -b ${thefile})"
echo -e "${C7}Matching Lines:${C0}"
grep --color=always $SEARCH $thefile
echo -e "\n___________________________________________________________________\n"
while true; do
yes_no "Replace occurances of ${SEARCH} with ${REPLACE}?" && echo -e "\nREPLACING...\n" && sed -i -e "s%${SEARCH}%${REPLACE}%g" $thefile && p_done && break
echo -e "\nSKIPPING..\n" && p_done && break
done
else
sed -i -e "s%${SEARCH}%${REPLACE}%g" $thefile
fi
done
return 0;
}
############################################################################################################
###
### MAIN CODE
###
############################################################################################################
#=# CATCH SCRIPT KILLED BY USER
trap 'echo error; kill -9 $$' SIGHUP SIGINT SIGTERM
#=# ALLOWS SCRIPT TO WORK WHEN RUN STARTED FROM ANY DIRECTORY
cd `dirname $0`
#=# MAKE MAIN SCRIPT NICE AS POSSIBLE SINCE IT DOESNT DO MUCH
renice 19 -p $$ &>/dev/null
#=# GET SCRIPT SETTINGS
get_settings
#=# DISPLAY SCRIPT TITLE
script_title
cd $SDIR
declare -a FOUNDFILES=( `grep -R -l $SEARCH . 2>/dev/null` );
declare -a FOUNDMATCHES=( );
for i in $(seq 0 $((${#FOUNDFILES[@]} - 1))); do F=${FOUNDFILES[$i]}; FOUNDMATCHES[$i]=$(grep -c $SEARCH $F); done
pm "FOUND ${SEARCH} IN ${#FOUNDFILES[@]} FILES"
for i in $(seq 0 $((${#FOUNDFILES[@]} - 1))); do echo -e "${C4}${FOUNDFILES[$i]} ${C6}=>${C4} ${FOUNDMATCHES[$i]} matches"; done
echo -e "\n"
while true; do
yes_no "Replace all occurances of ${SEARCH} with ${REPLACE} without prompting?" && search_and_replace 1 && p_done && break
search_and_replace 0 && p_done && break
done
cd $OLDPWD
exit 0
http://snippets.dzone.com/
لطفا راهنماییم کنید :)
-
خوب یه راه آسون این هستش که وقتی اینترفیس رو ساختی و همه چیز رو توش تنظیم کردی مثلا مواردی که گفتی بیایی در انتها که مثلا کلید اجرا رو میزنی یه دستور برات تو خط فرمان ایجاد کنه که مواردی که کاربر دلش می خواد رو اجرا کنه .این آسونترین راه هستش فکر کنم
-
مواردی که گفتی بیایی در انتها که مثلا کلید اجرا رو میزنی یه دستور برات تو خط فرمان ایجاد کنه که مواردی که کاربر دلش می خواد رو اجرا کنه
نمیدونم چطور این کارو بکنم که مثلا تو خط فرمان ازم بپرسه ???
ادرس مبدا رو وارد کنید
کلمه جستجو رو وارد کنید
و...
-
میتونی از zenity توی اسکریپتت استفاده کنی ، مثلا اینطوری :
#!/bin/bash
if zenity --question --title "Yes Or No" --text "Do You Agree?"
then
echo "Yes"
else
echo "No"
fi
با اجرای این اسکریپت یه پنجره باز میشه ، اگر روی OK کلیک کنی توی خروجی Yes و اگر روی Cancel کلیک کنی توی خروجی No نمایش داده میشه. برای راهنمای کامل از man zenity و برای نمونه های بیشتر از اسکریپت های ناتیلوس میتونی استفاده کنی :
http://wiki.ubuntu-ir.org/NautilusScripts
-
ممنون بهنام جان
اینطوریش کردم ولی در دو حالت قبول یا رد کپی رو انجام میده
#!/bin/bash
echo "
"
read ""
find ~ -name '*.jpg'
echo "
clear
"
if zenity --question --title "Yes Or No" --text "Do You Copy in ~/pic?"
then
echo "Yes"
else
echo "No"
fi
find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
در ضمن میشه همشو گرافیکی کرد؟ :D البته در مرحله پایانی
-
فکر کنم توی اوبونتو به صورت پیش فرض نصب باشه .طبق خروجی ببین بسته ای به اسم libnotify هست که نصب کنی یا نه.
ویرایش :
دستور مورد نظر رو به جای echo اولی قرار بده . شما خارج از if داری کپی میکنی.
if zenity --question --title "Yes Or No" --text "Do You Copy in ~/pic?"
then
find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
fi
-
درست شد و پست رو ویرایش کردم لطفا دوباره ببینید :)
ویرایش:
ممنون کار کرد مرحله بعدی رو طراحی میکنم و نکاتی که نمیدونم رو میپرسم :P
-
بهنام جان من رد یا قبول رو به سرچ دادم ولی دیگه مرحله کپی رو انجام نمیده ](*,)
#!/bin/bash
echo "
"
read ""
if zenity --question --title "Yes Or No" --text "Do You Search Pics in ~?"
then
find ~ -name '*.jpg'
fi
else
echo "No"
fi
"
read ""
echo "
clear
"
if zenity --question --title "Yes Or No" --text "Do You Copy in ~/pic?"
then
find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
fi
else
echo "No"
fi
find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
یه لطفی میکنی حالا که سطح اطلاعات منو در این مورد دیدی یه راهنما بهم معرفی کنی که نخوام همش سوال ابتدایی بپرسم ممنون
-
#!/bin/bash
if zenity --question --title "Yes Or No" --text "Do You Want to Copy in
~/pic?"
then
find ~ -name '*.jpg' | xargs -i cp -v {} ~/pic
fi
به نظر من دو راه بیشتر نداری : ۱) کلا بیخیال بشی. ۲)یه مدت با یه زبان برنامه نویسی به صورت جدی کار کنی.
شایدم تفریحی داری اینکارو انجام میدی نمیدونم .منبع توی گوگل زیاده.
-
نشد بهنام جان اصلا به قسمت دوم که سرچ و کپی هست نمیره
به نظر من دو راه بیشتر نداری : ۱) کلا بیخیال بشی.
;D چرا بیخیال شم؟
۲)یه مدت با یه زبان برنامه نویسی به صورت جدی کار کنی.
شایدم تفریحی داری اینکارو انجام میدی نمیدونم .منبع توی گوگل زیاده.
فکر نکنم برای یه کار ساده یی که میخوام بکنم اطلاعات زیادی لازم باشه ???
میدونم منبا توی گوگل زیاده خیلی هم گشتم اونی که میخوام امادشو گیر بیارم :D ولی اصلا نمیدونم اینها چی هست و چرا من مینویسم یه کاری برام انجام میده البته یه چیزایی دستو پا شکسته خوندم ولی مثلا نمیدونم چه رشته یی رو بخونم برم جلو تا مفهوم یک دستورهایی مثل
if zenity --question --title "Yes Or No" --text
رو کلمه به کلمه یاد بگیرم :)
-
درسته کار سادهای میخوای انجام بدی ولی نمیدونم اسکریپتهایی که میگذاری چرا اینقدر پر اشکال به نظر میاد شاید هم من متوجه نمیشم این چند خط اولی که نوشتی به چه دردی میخوره و از چه قانون نحوی پیروی میکنه :
echo "
"
read ""
یا این قسمت :
"
read ""
echo "
clear
"
یا مثلا اگر قراره یک کار رو بدون قید و شرط انجام بدی چرا از if استفاده میکنی و اگر باید شرطی اعمال بشه چرا دستور رو خارج از بدنه if قرار میدی؟
برای اون دستور هم اول ساختار if رو یاد بگیر و بعد از manual برای zenity استفاده کن و گزینه های مختلف رو آزمایش کن ببین چه تغییری حاصل میشه و در هر حالت چه خروجی میده.
-
بهزادubuntu عزیز تو برنامه نویسی مشکلات زیادی داری و اطلاعاتت خیلی پایینه ولی پشتکار خوبی داری . اگه یه خورده اطلاعاتت بالا بود یه کتاب بسیار جالب برنامه نویسی شل اسکریپت رو بهت می دادم کیف می کردی . یه خورده خودت تمرین و ممارست بکن و در مورد برنامه نویسی کتابهای اینترنتی رو مطالعه کن . موفق باشی ;)
-
ممنون مهدی جان راستی اسکریپت خودم رو هم درست کردم
#!/bin/bash
if zenity --question --title "Yes Or No" --text "Do You Search Pics in ~?"
then
find ~ -name '*.jpg'
fi
if zenity --question --title "Yes Or No" --text "Do You Want to Copy in ~/pic?"
then
find ~ -name '*.jpg' | xargs -i cp -v {} ~/pic
fi
و الان دارم تو این pdf ها میگردم ببینم چی بدردم میخوره :)
http://portal.farsilinux.org/index.php?module=htmlpages&func=display&pid=12
-
سلام
من اینو دانلد کردم شاید کارمو راه بندازه ولی موقع اجرا چند خط ارور میده که نمیدونم چطور درستش کنم
-
سلام
چطور میتونم یه دستور مثل mv file1 file2 رو در این فرمان قرار بدم بطوری که جای تایپی که بمن میده من بتونم file1 رو توش بنویسم؟ ???
zenity --entry
نمیدونید دستوری مثل zenity برای qt چی هست؟ راهنماهای خیلی کمی توی اینترنت داره
-
سلام
من اینو درست کردم ولی یه مشکلی داره اینکه اونجاهاییکه نوشتم /home/behzad اگه مینوشتم ~ یا /~ کار نمیکرد چرا؟ ???
#!/bin/bash
rm -r ~/pic/* & rm logg & mkdir ~/pic/ & zenity --entry | xargs -i find ~/ -name {} | xargs -i cp -v {} ~/pic/ | xargs >> logg && zenity --text-info --filename=logg
-
سلام
من برای درست کردن این برنامه هه رفتم سراغ html ولی نتونستم یه کارهایی بکنم مثلا دکمه پیدا کن / از این ادرس / این حروف / چاپ کن اصلا نمیدونم میشه یا نه ! فکر کنم اگه بشه این اسون ترین راه باشه
سراغ glad هم رفتم ولی هرچی برنامه ساختم و کامپایل کردم کار نکرد و فقط ضربدر بالا برای بستن برنامه کار میکرد هرچقدر هم جستجو کردم نتونستم منبا درستو حسابی برای اموزشش پیدا کنم البته برنامه خیلی پیچیده ای یی ولی اگه دستم راه بیفته فکر کنم بتونم یه کارایی باش بکنم ::)
حالا راهنمایی میخوام که ببینم از چه برنامه یی میتونم استفاده کنم که این کارو باش بکنم و در کل از کجا شروع کنم ::)