xlogo

อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ

www.tanabutr.co.th/photobook


เขียนเชลล์สคริปต์เพื่อใช้เป็นตัวอย่างในหนังสือที่กำลังเขียนอยู่ครับ.

#!/bin/sh
#
#  File name: xlogo.sh
#  Description: Show one xlogo window per second. If there are more than 
#  5 windows (default), it will kill the first one and keep the number of
#  window to 5. 
#
#  Location and color of xlogo are random.
#

if [ -z $1 ]
then
    N=5
else
    N=$1
fi

SHOWRGB=/usr/X11R6/bin/showrgb
XDPYINFO=/usr/X11R6/bin/xdpyinfo
XLOGO=/usr/X11R6/bin/xlogo
PGREP=/usr/bin/pgrep
KILL=/bin/kill
HEAD=/bin/head

width=`$XDPYINFO | awk '/dimensions/ {print $2}' | awk -F x '{print $1}'`
height=`$XDPYINFO | awk '/dimensions/ {print $2}' | awk -F x '{print $2}'`

colors=(`$SHOWRGB | sed -r 's/[[:digit:][:blank:]]+//' | grep -v ' '`)
NC=${#colors[*]}


while [ 1 ]
  do
  fg=${colors[$(($RANDOM % $NC))]}
  bg=${colors[$(($RANDOM % $NC))]}
  x=$(($RANDOM % $width))
  y=$(($RANDOM % $height)) 
  echo Foreground color: $fg
  echo Background color: $bg
  echo x position: $x
  echo y position: $y
  $XLOGO -fg $fg  -bg $bg -geometry +$x+$y &
  echo 
  if ((`$PGREP 'xlogo$' | wc -l` > $N ))
      then
      $KILL `pgrep 'xlogo$' | $HEAD -n 1`
  fi
  sleep 1
done

เป็นสคริปต์ดูเล่นๆเพลินๆ, จะแสดง xlogo หนึ่งหน้าต่างต่อวินาที. ถ้ามีหน้าต่างมากกว่า 5 หน้าต่าง (ค่าปริยาย) จะ kill หน้าแตกแรกที่อยู่ในคิว. แล้วรักษาจำนวนหน้าต่างให้มี 5 บาน. ตำแหน่งและสีฉากหลังฉากหน้าของโลโกจะสุ่มเอาครับ.

บันทึกเชลล์สคริปต์ข้างบนลงไฟล์, สมมติว่าชื่อ xlogo.sh แล้วสั่งคำสั่ง.

./xlogo.sh

ถ้าต้องการหน้าต่าง 10 บานสั่ง

./xlogo.sh 10