请问 随机打开图片的脚本如何写?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
秘密花园
帖子: 57
注册时间: 2009-07-15 13:55

请问 随机打开图片的脚本如何写?

#1

帖子 秘密花园 » 2011-02-16 4:36

如题,想用eog每次随机打开某目录下的图片,虽然eog菜单中有此功能,但很想知道具体命令是什么,对于高手应该很简单吧,试了很久都没成功,期待高手经过!(比如 /home/kdelove/图片 目录下。)
头像
tenzu
论坛版主
帖子: 36924
注册时间: 2008-11-21 20:26

Re: 请问 随机打开图片的脚本如何写?

#2

帖子 tenzu » 2011-02-16 8:27

神发过一个脚本,你自己找找吧,或者去问他/她/它
头像
秘密花园
帖子: 57
注册时间: 2009-07-15 13:55

Re: 请问 随机打开图片的脚本如何写?

#3

帖子 秘密花园 » 2011-02-16 11:44

ls来的真早啊!
echo `expr $RANDOM % 999` 可以随机获得一个数字,加什么参数可以让它只输出三位数?有时候它会产生两位数来?我在仔细找找看,
期待神的降临!
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

Re: 请问 随机打开图片的脚本如何写?

#4

帖子 bigsun » 2011-02-16 13:21

/usr/bin/fbsetbg中的代码:

代码: 全选

# random wallpaper code
if [ "$option" = random ]; then
    # Lets make one thing clear...
    wallpaperdir="$wallpaper"
    if [ -z "$wallpaperdir" ]; then
        message "No random wallpaper directory specified."
        exit 1
    fi
    if [ -d "$wallpaperdir" ]; then
        number_of_wallpapers=`ls "$wallpaperdir"|wc -l`
        if find_it random_number; then
            randomnumber=`random_number`
        # some shells don't support $RANDOM
        elif [ -z "$RANDOM" ]; then
            randomnumber=`(echo $$ ;time ps; w ; date )2>&1 | cksum | cut -f1 -d' '`
        else
            randomnumber="$RANDOM"
        fi
        wallpapernumber=`expr $randomnumber % $number_of_wallpapers + 1`
        #remember previous wallpaper
        if [ ! "$remember" = false ]; then
            remembercommand
        fi
        remember=false
        #set -x
        wallpaper="$wallpaperdir/`ls \"$wallpaperdir\"|sed -n ${wallpapernumber}p`"
        option=$option2 # have to choose something...
    else
        message "Invalid random wallpaper directory specified."
        exit 1
    fi
fi
头像
秘密花园
帖子: 57
注册时间: 2009-07-15 13:55

Re: 请问 随机打开图片的脚本如何写?

#5

帖子 秘密花园 » 2011-02-16 14:09

bigsun 写了:/usr/bin/fbsetbg中的代码:

代码: 全选

# random wallpaper code
if [ "$option" = random ]; then
    # Lets make one thing clear...
    wallpaperdir="$wallpaper"
    if [ -z "$wallpaperdir" ]; then
        message "No random wallpaper directory specified."
        exit 1
    fi
    if [ -d "$wallpaperdir" ]; then
        number_of_wallpapers=`ls "$wallpaperdir"|wc -l`
        if find_it random_number; then
            randomnumber=`random_number`
        # some shells don't support $RANDOM
        elif [ -z "$RANDOM" ]; then
            randomnumber=`(echo $$ ;time ps; w ; date )2>&1 | cksum | cut -f1 -d' '`
        else
            randomnumber="$RANDOM"
        fi
        wallpapernumber=`expr $randomnumber % $number_of_wallpapers + 1`
        #remember previous wallpaper
        if [ ! "$remember" = false ]; then
            remembercommand
        fi
        remember=false
        #set -x
        wallpaper="$wallpaperdir/`ls \"$wallpaperdir\"|sed -n ${wallpapernumber}p`"
        option=$option2 # have to choose something...
    else
        message "Invalid random wallpaper directory specified."
        exit 1
    fi
fi

谢谢ls,我只是想用 eog 每次随机打开图片目录下的一个图片,而不用作为壁纸的功能,简单的说就是做一个随机选择号码的彩票模拟器,打开的图片就是每个数字的png号码。脚本如何来写?
附件
0.png
0.png (38.14 KiB) 查看 1349 次
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 请问 随机打开图片的脚本如何写?

#6

帖子 fnan » 2011-03-01 21:03

昨天开始学写脚本, 这个题目不错, 我试试再贴上来。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 请问 随机打开图片的脚本如何写?

#7

帖子 fnan » 2011-03-02 2:29

1 #!/bin/bash
2
3 v_picture_count=0;
4
5 for i in ~/Pictures/share/*;do #假设~/Pictures/share/里全是图片。
6 ((v_picture_count++)); #统计图片数。
7 a_picture_name[$v_picture_count]=$i; #记录图片名。
8 if [[ $v_picture_count -gt 99999 ]];then #最多十万图片。
9 break;
10 fi
11 done
12
13 eog -f ${a_picture_name[$(($RANDOM%$v_picture_count+1))]}; #随机显示一图片。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 请问 随机打开图片的脚本如何写?

#8

帖子 fnan » 2011-03-02 4:04

1 #如果图片名都是000.jpg格式:
2
3 #!/bin/bash
4
5 v_picture_count=0;
6
7 for i in ~/Pictures/share/*;do #假设~/Pictures/share/里全是图片。
8 ((v_picture_count++)); #统计图片数。
9 a_picture_name[$v_picture_count]=$i; #记录图片名。
10 if [[ $v_picture_count -gt 999 ]];then #最多一千(000.jpg至999.jpg)图片。
11 break;
12 fi
13 done
14
15 v_random=$(($RANDOM%$v_picture_count+1)); #产生随机数。
16 v_number=${a_picture_name[$v_random]}; #获取图片名。
17 v_number=${v_number##*/};
18 v_number=${v_number%%.*};
19 v_number=${v_number##*0};
20 v_number=${v_number:-0};
21 echo 幸运数字是: $v_number; #显示相关数字。
22 sleep 3;
23 eog -f ${a_picture_name[$v_random]}; #显示图片。
~
~
~
~
"eograndom.sh" 23L, 696C 1,1 All
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
秘密花园
帖子: 57
注册时间: 2009-07-15 13:55

Re: 请问 随机打开图片的脚本如何写?

#9

帖子 秘密花园 » 2011-03-25 11:30

fnan 写了:1 #如果图片名都是000.jpg格式:
2
3 #!/bin/bash
4
5 v_picture_count=0;
6
7 for i in ~/Pictures/share/*;do #假设~/Pictures/share/里全是图片。
8 ((v_picture_count++)); #统计图片数。
9 a_picture_name[$v_picture_count]=$i; #记录图片名。
10 if [[ $v_picture_count -gt 999 ]];then #最多一千(000.jpg至999.jpg)图片。
11 break;
12 fi
13 done
14
15 v_random=$(($RANDOM%$v_picture_count+1)); #产生随机数。
16 v_number=${a_picture_name[$v_random]}; #获取图片名。
17 v_number=${v_number##*/};
18 v_number=${v_number%%.*};
19 v_number=${v_number##*0};
20 v_number=${v_number:-0};
21 echo 幸运数字是: $v_number; #显示相关数字。
22 sleep 3;
23 eog -f ${a_picture_name[$v_random]}; #显示图片。
~
~
~
~
"eograndom.sh" 23L, 696C 1,1 All


一直没时间来,谢谢楼上大侠,收下了。
回复