Stap 12: Paar New year's scripts.
Moet worden uitgevoerd op een linux box met figlet geïnstalleerd.
$ sudo apt-get update
$ sudo apt-get install figlet
Code:
$ terwijl [[$(datum + %Y) - ne 2012]]; doen figlet $(($(date-d 2012-01-01 +%s)-$(date +%s))); 1; slapen duidelijk; gedaan; figlet ' Happy New Year!'
-----------------------------------------------------------------
Vuurwerk:
Fireworks.sh
[code]
#! / bin/bash
rijen = $(tput lijnen)
cols = $(tput cols)
kleuren (rood groen blauw paars cyaan geel bruin) =
lock_file =
lock_file_base = / tmp/$(basename $0.sh)
meerdere = 0
Als [["$1"]]; vervolgens
nsingle = $1
Shift
anders
nsingle = 10
fi
Als [["$1"]]; vervolgens
nmultiple = $1
Shift
Als [[$nmultiple - gt 8]]; dan nmultiple = 8; fi
anders
nmultiple = 6
fi
functie colorstr()
{
lokale rij = $1
lokale col = $2
lokale kleur = $3
lokale v
"$color" in kast
rood) v = 31;
groen) v = 34;
blauw) v = 32;
paarse) v = 35;
cyaan) v = 36;
gele) v = 33;
bruin) v = 33;
witte) v = 37;
*) v=;;
ESAC
Shift 3
Als [[$multiple - ne 0]]; vervolgens
Touch $lock_file
terwijl [[$(ls $lock_file_base. * 2 >/dev/null | hoofd - n 1)! = $lock_file]]
doen
slaap 0,05
gedaan
fi
tput cup $row $col
echo - n -e "\e["$v"m"
set -f
echo - n $*
set + f
Als [[$multiple - ne 0]]; vervolgens
rm -f $lock_file
fi
}
functie center_colorstr()
{
lokale rij = $1
lokale kleur = $2
Shift 2
lokale s = "$*"
lokale slen = ${#s}
colorstr $row $(((cols / 2)-(slen / 2))) $color "$s"
}
functie fireworks()
{
lokale rij = $((rijen - 1))
lokale col$ = (((RANDOM % (cols/2)) + (cols / 4)))
lokale hoogte = $((RANDOM % rows-2))
lokale inslag
lokale h
lokale color1 = ${kleuren [$((RANDOM % ${#colors[*]}))]}
lokale kleur2 = ${kleuren [$((RANDOM % ${#colors[*]}))]}
lokale color3 = ${kleuren [$((RANDOM % ${#colors[*]}))]}
terwijl [[$color1 == $color2 || $color1 == $color3 || $color2 == $color3]]
doen
kleur2 = ${kleuren [$((RANDOM % ${#colors[*]}))]}
color3 = ${kleuren [$((RANDOM % ${#colors[*]}))]}
gedaan
zaak $((RANDOM % 4)) in
0) schuin =-2;
1) schuin =-1;
2) schuin = 1;
3) schuin = 2;
ESAC
Als [[$height - gt 5]]; vervolgens
h = $height
terwijl [[$h - gt 0]]
doen
colorstr $row $col $color1 '.'
laat rij--
Als [[$((col + inslag)) -ge $((cols - 3)) || $((col + inslag))-le 2]]; dan breken; fi
col += schuin laat
laat h--
slaap 0.1
gedaan
Als [[$((col + inslag)) - lt $((cols - 3)) & & $((col + inslag)) - gt 2]]; vervolgens
h = $((height / 5))
terwijl [[$h - gt 0]]
doen
colorstr $row $col $color2 '.'
laat rij ++
Als [[$((col + inslag)) -ge $((cols - 3)) || $((col + inslag))-le 2]]; dan breken; fi
col += schuin laat
laat h--
slaap 0.1
gedaan
fi
colorstr $((row)) $((col - 1)) $color3 ' ***'
colorstr $((rij - 1)) $((col)) $color3 ' *'
colorstr $((row + 1)) $((col)) $color3 ' *'
fi
}
voor ik in $(seq 1 $nsingle)
doen
wissen
vuurwerk
slaap 1
gedaan
wissen
PIDs =
voor ik in $(seq 1 $nmultiple)
doen
Laat meerdere ++
lock_file = $lock_file_base. $i
vuurwerk &
PIDs = "$$pids!"
gedaan
Val "doden-9 $pids 2 >/dev/null" EXIT
$pids wachten
slaap 3
wissen
center_colorstr $((rows / 2-1)) rood "Hope u genoot van de show!"
center_colorstr $((rows / 2 + 1)) rood "Happy New year!!"
center_colorstr $((rows / 2 + 3)) rood "Computothought"
ECHO
slaap 5
wissen
# vim: tabstop = 4: shiftwidth = 4: noexpandtab:
# kate: tabblad-breedte 4; streepje-breedte 4; vervangen-tabs onwaar;
[/ code]
Shell batchbestand te maken:
$ vim fireworks.sh
Maak het uitvoerbaar:
$ chmod + x fireworks.sh
Uitvoeren:
$./fireworks.sh