>

shell写俄罗丝方块游戏,设定壁纸自动切换的sh

- 编辑:正版管家婆马报彩图 -

shell写俄罗丝方块游戏,设定壁纸自动切换的sh

Ubuntu 设定壁纸自动切换的shell脚本,ubuntushell

进级到Ubuntu14.04后,认为bug的确比12.04少多了。顶上部分职务栏帮助半透明效果,所以一切桌面也看起来美丽了无数。那样的桌面也是值得瞎捣鼓一下的,想到换壁纸,不过没找到设定动态转变壁纸的选项,但手动更正配置文件的法子总是某些,本文的目标也在于此。(以下进度在Ubuntu14上开展,未测验别的版本!)。

从#!/bin/sh开端往下都是真的的源码,直接复制到shell中就可以使用,对了,未有图像分界面也得以玩的呵呵。

原理

右键桌面->校勘桌面背景,如下图所示,在右侧缩略图中富含小石英钟Logo的就代表为动态切换的壁纸:

图片 1

系统是透过读取这一个文件来扩充动态壁纸切换的:

/usr/share/backgrounds/contest/trusty.xml

文本根本内容如下:

<background>
    <starttime>
        <year>2014</year>
        <month>09</month>
        <day>21</day>
        <hour>00</hour>
        <minute>00</minute>
        <second>00</second>
    </starttime>
    <static>
        <duration>300</duration>
        <file>/home/kyy/Wallpaper/1019236,106.jpg</file>
    </static>
    <transition>
        <duration>3</duration>
        <from>/home/kyy/Wallpaper/1019236,106.jpg</from>
        <to>/home/kyy/Wallpaper/1019306,106.jpg</to>
    </transition>
    <static>
        <duration>300</duration>
        <file>/home/kyy/Wallpaper/1019306,106.jpg</file>
    </static>
    <transition>
        <duration>3</duration>
        <from>/home/kyy/Wallpaper/1019306,106.jpg</from>
        <to>/home/kyy/Wallpaper/1082502,106.jpg</to>
    </transition>
        <static>......
        </static>
         <transition>......
        </transition>
        ......
</background>

 

 

其间static标签内file表示近期图像,duration表示前段时间图像彰显的持续时间

transition标签内from和to分别表示不下一步在这里四个图片之间切换,duration表示过渡时间

so,系统正是基于这几个来进展桌面壁纸动态切换的。可是没切换一回图像就须要写大量代码,大家自然不会脑残到协和手动去写的,那么的,既然实在Linux下,用shell脚本替代人工自然是最合适不过了

 

#!/bin/sh
aBox0_0=(0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0)
aBox0_1=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0)
aBox0_2=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1)
aBox0_3=(0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0)
aBox1_0=(0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0)
aBox1_1=(0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0)
aBox1_2=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1)
aBox1_3=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0)
aBox2_0=(0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0)
aBox2_1=(0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0)
aBox3_0=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0)
aBox3_1=(0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0)
aBox4_0=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 -1)
aBox4_1=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0)
aBox5_0=(0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0)
aBox6_0=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0)
aBox6_1=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0)
aBox6_2=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1)
aBox6_3=(0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0)
iSumType=7  #方块类型总数
aStyles=(4 4 2 2 2 1 4) #各个种类方块样式数
iOrigoX=10  #显示起始位置x
iOrigoY=5   #显示起始位置y
iMapWidth=12    #方块宽10
iMapHeight=15   #方块高15
iBox_X=0    #方块位置x
iBox_Y=0    #方块位置y
iScore=0    #分数
iLevel=0    #级别
iScoreEachLevle=50  #每升一级需积累分数
#初始化所有背景方块
for((i = 0;i<iMapWidth*iMapHeight;i++))
do
  aBoxBg[$i]=0
done
#定义控制信号,挪用信号25~31
iSIG=0           #
iSIG_Rotate=25   #旋转
iSIG_Left=26     #向左移动
iSIG_Right=27    #向右移动
iSIG_Down=28     #向下
iSIG_FallDown=29 #直落到底
iSIG_Exit=30     #退出
iSIG_Pause=31    #暂停
Control()
{
  trap "Game_Exit" 2 3 15 $iSIG_Exit
  echo -ne "33[?25l"
  SAVEDSTTY=`stty -g`
  iDisplayPID=$1
  while :
  do
  read -s -n 1 LINE
  iSIG=0
  case $LINE in
  "A" )
    iSIG=$iSIG_Rotate
    ;;
  "B" )
    iSIG=$iSIG_Down
    ;;
  "D" )
    iSIG=$iSIG_Left
    ;;
  "C" )
    iSIG=$iSIG_Right
    ;;
  "")
    iSIG=$iSIG_FallDown
    ;;
  p|P)
    iSIG=$iSIG_Pause
    ;;
  q|Q )
    Game_Exit
    ;;
  esac
  [ $iSIG -ne 0 ] && kill -$iSIG $iDisplayPID
  done
}
Display()
{
  trap "iSIG=$iSIG_Rotate"   $iSIG_Rotate
  trap "iSIG=$iSIG_Down"     $iSIG_Down
  trap "iSIG=$iSIG_Left"     $iSIG_Left
  trap "iSIG=$iSIG_Right"    $iSIG_Right
  trap "iSIG=$iSIG_FallDown" $iSIG_FallDown
  trap "iSIG=$iSIG_Pause"    $iSIG_Pause
  local iSIGThis i
  clear

  Draw_info
  Create_Box
  while :
  do
  if [ $iSIG -ne $iSIG_Pause ];then
    for((i=0;i<20-iLevel;i++))
    do
      iSIG_Display=$iSIG
      iSIG=0
      case $iSIG_Display in
      $iSIG_Rotate)
        Move_Rotate
        ;;
      $iSIG_Down)
        Move_Down
        ;;
      $iSIG_Left)
        Move_Left
        ;;
      $iSIG_Right)
        Move_Right
       ;;
      $iSIG_FallDown)
        Move_FallDown
        ;;
      $iSIG_Pause)
        iSIG=$iSIG_Pause
        break
        ;;
      esac
    sleep 0.02
    done
    Move_Down
  fi
  done
}
Game_Exit()
{
  echo -ne "33[21;1Hgame overn"
  echo -ne "33[0m33[?25h"
  stty $SAVEDSTTY
  kill -9 $iDisplayPID
  exit 0
}

Draw_Line()
{
  echo -ne "33[$1;$((iOrigoX))H--====================--"  #iOrigoY
}

Draw_Row()
{
  local i
  for((i=iOrigoY;i<iOrigoY+15;i++))
  do
    echo -ne "33[$i;$1H||"
  done
}
#显示程序主画面
Draw_info()
{
  echo -ne "33[45m"
  Draw_Line $((iOrigoY-1))
  Draw_Line $((iOrigoY+iMapHeight))
  Draw_Row $((iOrigoX)) #iOrigoY+(3*2)-2
  Draw_Row $((iOrigoX+2+20))  #iOrigoY+(3*2)+10*2
  echo -ne "33[0m"
  echo -ne "33[$((iOrigoY+8));$((iOrigoX+25))H   SCORE"
  echo -ne "33[$((iOrigoY+10));$((iOrigoX+30))H0"
  echo -ne "33[$((iOrigoY+13));$((iOrigoX+25))H   LEVEL"
  echo -ne "33[$((iOrigoY+15));$((iOrigoX+30))H0"
}

Draw_Box_Clear()
#把方块隐藏掉
{
  local i
  for((i=0;i<$((${#aBoxMove[*]}-1));i++))
  do
    [ ${aBoxMove[$i]} -ne 0 ] && echo -ne "33[$(((i/12)+iBox_Y+iOrigoY));$((((i%12)*2)+iOrigoX))H  "
  done
}

Draw_Box_New()
#显示方块
{
  local i
  for((i=0;i<$((${#aBoxMove[*]}-1));i++))
  do
    [ ${aBoxMove[$i]} -ne 0 ] && echo -ne "33[1m33[${iCurrentColor}m33[$(((i/12)+iBox_Y+iOrigoY));$((((i%12)*2)+iOrigoX))H[]33[0m"
  done
}

IsBottom()
#检查方块是否下落到底
{
  local i
  if [ $(($iBox_Y+(${#aBoxMove[*]}/12))) -eq 15 ];then
    return 0
  fi
  iBox_Y=$((iBox_Y+1))  #虚拟下移一行
  for((i=0;i<${#aBoxMove[*]};i++))
  do
  [ $((iBox_Y*12+i)) -lt 0 ] && continue    #排除刚开始显示方块时iBox_Y为负的情况
    if [ "${aBoxMove[$i]}" == "1" -a "${aBoxBg[$((iBox_Y*12+i))]}" != "0" ];then    #触底
      iBox_Y=$((iBox_Y-1))  #复原
      return 0
    fi
  done
  iBox_Y=$((iBox_Y-1))
  return 1
}

Box_Delete()
#消行.计算分数.
{
  local i j k line
  aLineFull=()
  aBoxBgNew=()
  line=0
  k=0
  #检查那些行可以消掉
  for((i=0;i<15;i++))    #y
  do
    for((j=0;j<10;j++))
      do
        [ ${aBoxBg[$((i*12+1+j))]} -eq 0 ] && break
        [ $j -eq 9 ] && aLineFull[$line]=$i && (( line++ ))
      done
  done
  [ $line -eq 0 ] && return 0
  #计算分数和级别
  iScore=$((iScore+(line*2)-1))
  echo -ne "33[15;$((iOrigoX+30))H${iScore}         "
  if [[ $((iScore/iScoreEachLevle)) -gt $iLevel && $iLevel -lt 20 ]]
  then
     (( iLevel++ ))
  fi
  echo -ne "33[20;$((iOrigoX+30))H${iLevel}        33[0m"

  #重新整理aBoxBg数组
  for((i=0;i<15;i++))
  do
    while [ "$((i+k-line))" == "${aLineFull[$k]}" ] #这里处理连续消除多行
    do
      (( k++ ))
    done
    for((j=0;j<12;j++))
    do
      if [ $i -lt $line ];then
        aBoxBgNew[$((i*12+j))]=0
      else
        aBoxBgNew[$((i*12+j))]=${aBoxBg[$(((i+k-line)*12+j))]}
      fi
    done
  done

  #刷新背景
  aBoxBg=(${aBoxBgNew[*]})
  for((i=0;i<15;i++))     #y
  do
    for((j=0;j<10;j++))
      do
        echo -ne "33[$((i+iOrigoY));$((((j+1)*2)+iOrigoX))H"
        if [ ${aBoxBg[$((i*12+1+j))]} -eq 0 ];then
           echo "  "
        else
           echo -ne "33[1m33[${aBoxBg[$((i*12+1+j))]}m[]33[0m"
        fi
      done
  done
}

Create_Box()
#显示新方块
{
  aBoxMove=()
  if [ -z "$iCurrentType" ];then
    (( iCurrentType = RANDOM % $iSumType ))
    (( iCurrentStyle = RANDOM % ${aStyles[$iCurrentType]} ))
    (( iCurrentColor = 41 + RANDOM % 7 ))
  else
    iCurrentType=$iNewType
    iCurrentStyle=$iNewStyle
    iCurrentColor=$iNewColor
  fi
  #iCurrentType=4
  #iCurrentStyle=1
  aBoxMove=( `eval 'echo ${aBox'$iCurrentType'_'$iCurrentStyle'[*]}'` )
  iBox_Y=${aBoxMove[$((${#aBoxMove[*]}-1))]}
  iBox_X=0
  Draw_Box_New
  Random_Box
  IsBottom && kill -$iSIG_Exit $PPID
}

Random_Box()
#随机产生方块并预显示
{
  local i
  (( iNewType = RANDOM % $iSumType ))
  (( iNewStyle = RANDOM % ${aStyles[$iNewType]} ))
  (( iNewColor = 41 + RANDOM % 7 ))
  #抹掉原显示
  for((i=0;i<${#aBoxMove[*]};i++))
  do
    if [ ${aBoxMove[$i]} -eq 1 ];then
    echo -ne "33[$(($i/12+iOrigoY));$((($i%12)*2+iOrigoX+20))H  "
  fi
  done
  #预显示新方块
  aBoxNEW=( `eval 'echo ${aBox'$iNewType'_'$iNewStyle'[*]}'` )
  for((i=0;i<${#aBoxNEW[*]};i++))
  do
    if [ ${aBoxNEW[$i]} -eq 1 ];then
    echo -ne "33[1m33[${iNewColor}m33[$(($i/12+iOrigoY));$((($i%12)*2+iOrigoX+20))H[]33[0m"
  fi
  done
}

Move_Left()
{
  local i
  #判断是否碰墙
  for((i=0;i<$((${#aBoxMove[*]}/12));i++))
  do
    [ ${aBoxMove[$((i*12+1))]} -eq 1 ] && return 0
  done
  #判断是否碰背景
  for((i=0;i<${#aBoxMove[*]};i++))
  do
    [ $((iBox_Y*12+i)) -le 0 ] && continue   #排除刚开始显示方块时iBox_Y为负的情况
    [ ${aBoxMove[$i]} -eq 1 -a ${aBoxBg[$((iBox_Y*12+i-1))]} -ne 0 ] && return 0 #触底
  done
  #清除原显示
  Draw_Box_Clear
  for((i=0;i<$((${#aBoxMove[*]}-2));i++))
  do
    aBoxMove[$i]=${aBoxMove[$((i+1))]}
  done
  #重新显示方块
  Draw_Box_New
  iBox_X=$((iBox_X-1))
}

Move_Right()
#右移
{
  local i
  #判断是否碰墙
  for((i=0;i<$((${#aBoxMove[*]}/12));i++))
  do
  [ ${aBoxMove[$((i*12+10))]} -eq 1 ] && return 0
  done
  #判断是否碰背景
  for((i=0;i<${#aBoxMove[*]};i++))
  do
    [ $((iBox_Y*12+i)) -lt 0 ] && continue   #排除刚开始显示方块时iBox_Y为负的情况
    [ "${aBoxMove[$i]}" == "1" -a "${aBoxBg[$((iBox_Y*12+i+1))]}" != "0" ] && return 0 #触底
  done
  #清除原显示
  Draw_Box_Clear
  for((i=$((${#aBoxMove[*]}-2));i>0;i--))
  do
    aBoxMove[$i]=${aBoxMove[$((i-1))]}
  done

  #重新显示方块
  Draw_Box_New
  iBox_X=$((iBox_X+1))
}

Move_Down()
#下落一格
{
  local i
  if ! IsBottom #返回0则表示底部
  then
    Draw_Box_Clear
    iBox_Y=$((iBox_Y+1))
    #画新方块
    Draw_Box_New
  else
  # 把当前方块移到背景 (把方块位置的背景设置为颜色数)(注:0为空)
  for((i=0;i<${#aBoxMove[*]};i++))
  do
    if [ ${aBoxMove[$i]} -eq 1 ];then
      aBoxBg[$((iBox_Y*12+i))]=$iCurrentColor
    fi
  done
    Box_Delete
    Create_Box
  fi
}

Move_FallDown()
#直落到底
{
  local i
  Draw_Box_Clear
  for((i=0;i<15;i++))
  do
    if ! IsBottom
    then
      iBox_Y=$((iBox_Y+1))
    else
      break
    fi
  done
  Draw_Box_New
  Move_Down
}
Move_Rotate()
#当前style跳转到下一style ,x位移量根据iBox_X位置决定
{
  local i
  [ ${aStyles[$iCurrentType]} -eq 1 ] && return 0   #只有一种类型的不处理
  [ $iBox_Y -lt 0 ] && return 0 #iBox_Y<0不处理
  sRotateStyle=$(((iCurrentStyle+1)%${aStyles[$iCurrentType]}))
  aBoxRotate=( `eval 'echo ${aBox'$iCurrentType'_'$sRotateStyle'[*]}'` )
  #先根据iBox_X作左右移位处理,把重新赋值aBoxRotate/aBoxMove
  if [ $iBox_X -gt 0 ];then #右移
    for((i=$((${#aBoxRotate[*]}-2));i>=iBox_X;i--)) #原数组末尾增加了一位数记录起始位置,所以这里要减2
    do
      aBoxRotate[$i]=${aBoxRotate[$((i-iBox_X))]}
    done

    for((i=0;i<iBox_X;i++))
    do
      aBoxRotate[$i]=0
    done
  else  #左移
    for((i=0;i<$((${#aBoxRotate[*]}+$iBox_X-2));i++))
    do
      aBoxRotate[$i]=${aBoxRotate[$((i-iBox_X))]}
    done

    for((i=$((${#aBoxRotate[*]}+$iBox_X-2));i<$((${#aBoxRotate[*]}-1));i++))
    do
      aBoxRotate[$i]=0
    done
  fi

  #判断旋转后是否能放得下
  #1.判断是否碰墙
  for((i=0;i<$((${#aBoxRotate[*]}/12));i++))
  do
    [ ${aBoxRotate[$((i*12))]} -eq 1 ] && return 0
    [ ${aBoxRotate[$((i*12+11))]} -eq 1 ] && return 0
  done
  #2.判断是否触底
  [ $(($iBox_Y+(${#aBoxRotate[*]}/12))) -gt 15 ] && return 0 #旋转后触底
  for((i=0;i<${#aBoxRotate[*]};i++))
  do
  #set -xv
  [ $((iBox_Y*12+i)) -lt 0 ] && continue   #排除刚开始显示方块时iBox_Y为负的情况
    [ "${aBoxRotate[$i]}" == "1" -a "${aBoxBg[$((iBox_Y*12+i))]}" != "0" ] && return 0  #触底
  #set +xv
  done

  #可以旋转,消除原方块,显示新方块
  Draw_Box_Clear
  aBoxMove=()
  aBoxMove=(${aBoxRotate[*]})
  iCurrentStyle=$sRotateStyle
  aBoxRotate=()
  Draw_Box_New
}

#主程序从这里开始
if [ "$1" != "display" ]
then
  bash $0 display&
  Control $!
  exit
else
  Display
  exit
fi

shell脚本达成

  1 #!/bin/bash
  2 
  3 #可用文件后缀名列表
  4 readonly prefixs=("jpg" "jpeg" "png" "bmp")
  5 
  6 #动态背景文件地址
  7 #/usr/share/backgrounds/contest/trusty.xml
  8 readonly animate_background_file_path="/usr/share/backgrounds/contest/trusty.xml"
  9  
 10 #文件列表索引
 11 index=0
 12 
 13 #获取图像文件列表
 14 get_image_files(){
 15     
 16     #获取文件所在目录名称
 17     base_dir="`dirname $1`/`basename $1`/"
 18     
 19     for f in `ls $1`
 20     do    
 21         #检查文件后缀
 22         for p in "${prefixs[@]}"
 23         do
 24             len_before=${#f}
 25             f_after=${f%"$p"}
 26             len_after=${#f_after}
 27             
 28             #名称发生改变,说明后缀名称符合条件
 29             if [ $len_before -ne $len_after ]
 30             then
 31                 file_list[$index]="$base_dir$f"
 32                 echo "获取图像:$base_dir$f"
 33                 let index=$index+1
 34                 break
 35             fi
 36         done
 37     done
 38 
 39 }
 40  
 41 
 42 #写入文件
 43 replae_file(){
 44 
 45     #创建临时文件
 46     animate_back="animate_back.xml"
 47     #清空文本内容
 48     cat /dev/null > $animate_back
 49     
 50     echo -e  "<background>" >> $animate_back
 51     echo -e  "t<starttime>" >> $animate_back
 52     echo -e  "tt<year>$(date +%Y)</year>" >> $animate_back
 53     echo -e  "tt<month>$(date +%m)</month>" >> $animate_back
 54     echo -e  "tt<day>$(date +%d)</day>" >> $animate_back
 55     echo -e  "tt<hour>00</hour>" >> $animate_back
 56     echo -e  "tt<minute>00</minute>" >> $animate_back
 57     echo -e  "tt<second>00</second>" >> $animate_back
 58     echo -e  "t</starttime>" >> $animate_back
 59 
 60     #写入文件名称
 61     index_=0
 62     len=${#file_list[@]}
 63     for f in "${file_list[@]}"
 64     do    
 65         if [ $index_ -eq $((len-1)) ]
 66         then
 67             fn=${file_list[0]}
 68         else
 69             fn=${file_list[$index_+1]}
 70         fi
 71 
 72         echo -e  "t<static>" >> $animate_back
 73         echo -e  "tt<duration>${STAY:=300}</duration>" >> $animate_back
 74         echo -e  "tt<file>$f</file>" >> $animate_back
 75         echo -e  "t</static>" >> $animate_back        
 76         echo -e  "t<transition>" >> $animate_back
 77         echo -e  "tt<duration>${DURATION:=3}</duration>" >> $animate_back
 78         echo -e  "tt<from>$f</from>" >> $animate_back
 79         echo -e  "tt<to>$fn</to>" >> $animate_back
 80         echo -e  "t</transition>" >> $animate_back
 81         
 82         let index_=$index_+1
 83     done
 84         
 85     echo -e  "</background>" >> $animate_back
 86     
 87     #移动文件
 88     mv $animate_back $animate_background_file_path
 89     if [ $? -eq 0 ]        
 90     then 
 91         echo -e  "已经设定好文件"
 92     fi
 93 
 94 }
 95 
 96 help(){
 97     echo
 98     echo "命令格式:`basename $0` [OPTION] -f Filepath"
 99     echo "指定图片目录,目录下的图片将作为动态更换的壁纸"
100     echo
101     echo -e "-f[Filepath]t 图像文件目录"
102     echo -e "-d[Duration]t 图像切换时长,默认3s"
103     echo -e "-s[StayTime]t 图像停留时长,默认300s"
104     echo
105     exit 1
106 }
107 
108 
109 #处理参数
110 while getopts f:s:d: OPTION
111 do
112     case "$OPTION" in
113     f)
114         FILE_PATH="$OPTARG"
115         ;;
116     s)
117         STAY="$OPTARG"
118         ;;
119     d)
120         DURATION="$OPTARG"
121         ;;
122     *)
123         help
124         ;;
125     esac
126 done
127 
128 if [ -z "$FILE_PATH" ]
129 then  
130     help    
131 fi
132 
133 
134  
135 #判断目录是是否存在
136 if [ -d $FILE_PATH ]
137 then     
138     #获取到文件列表
139     get_image_files $FILE_PATH
140     
141     #获取文件数目
142     file_count=${#file_list[@]}
143     
144     if [ $file_count -gt 0 ]        
145     then
146         #替换原有动态背景文件
147         echo "共获取到$file_count个图像文件"
148         replae_file     
149     else
150         echo "目录$FILE_PATH下不存在符合要求的图像文件:${prefixs[*]}"
151     fi
152     
153 
154 else
155     echo "不存在目录:$FILE_PATH"            
156 fi                     
157  
158 
159 exit 0

 

#----------------------------------------------------------------------------

在ubuntu窗户里,要到这里工夫够生出一个 shell程序/脚本?

在ubuntu桌面左上角 ,应用程序/附属类小零器件/终端,展开终端后敲
gedit test.sh (本人取个名字,这里本身用test卡塔尔(英语:State of Qatar)
会弹出一个像样windows里记事本相同的窗口,将代码复制进去,
#!/usr/bin/sh
echo "Hello "`whoami`
。。。。。。
echo 'no this num!'
fi
done
然后直接关闭,会提醒您保存。
然后继续在终端下
bash test.sh 回车,实施后,不要关闭终端。按钮盘上的print screen截屏开关,会将最近荧屏截成二个图纸,保存地方就放在桌面上好了,注意数十次截图文件名不要覆盖了。
下一场将图片或通过u盘,大概直接复制到windows系统所在分区,转移走。
然后步向windows系统,张开那多个图片,粘贴到word里,只怕用windows的图案工具放大用矩形再截一下。

(基本操作应该正是那么了,只是一点没反映出linux的优良性。ubuntu10.04版是吧,空中楼阁10.03版。楼主借使像学linux能够从bash脚本,vim编辑器从前学起。)  

图片 2

ubuntu 下举办shell脚本的主题素材

诶!你还要去精粹去玩一下Linux(不要用图形系统),你问的那么些标题,真倒霉解释
1,chmod +x test.sh:将test.sh产生可实行权限。
2,test.sh 第风度翩翩行有"#!/bin/sh” 告诉解释器在如何地方。
3,第一步test.sh形成可推行了,./test.sh(运维当前目录下三个可实践文件,那是二个shell脚本,须求解释器,即便有"#!/bin/sh”通过sh解释,若无会报错没这么些命令卡塔尔国。
4,./test.sh(第三步笔者以表明如何意思卡塔尔;运营test.sh(将同过path路线去找这几个命令,显明那几个tesh.sh那些文件不在你path路线下,你怎可以运营吧)。
5,sh test.sh(sh在/bin目录下相当于曾经倘若path路线,用sh命令解释你那么些本子卡塔尔  

设定壁纸自动切换的shell脚本,ubuntushell 升级到Ubuntu14.04后,认为bug的确比12.04少多了。顶上部分任务栏襄助半晶莹剔透效果,所以总体桌面也看...

正文出自 “history_xcy” 博客,请必需保留此出处

#!/bin/sh最初往下都是真的的源码,直接复制到shell中就足以运用,对了,未有图像分界面也能够玩的呵呵。 #!/bin/shaBox0_0=(0 0 0 0 0 0 1 0 0 0...

本文由关于计算机发布,转载请注明来源:shell写俄罗丝方块游戏,设定壁纸自动切换的sh