409
http://w.atwiki.jp/432-23/
409
ja
2010-04-22T17:21:24+09:00
1271924484
-
シェルスクリプト
https://w.atwiki.jp/432-23/pages/19.html
[[シェルとり]] ver 2.1
unixコマンドでしりとりをするシェルスクリプト
-t or taisen : 対戦モード
-d or demo : デモモード
2010-04-22T17:21:24+09:00
1271924484
-
シェルとり
https://w.atwiki.jp/432-23/pages/20.html
#!/bin/bash
# THE SHELLTORI 2.1
# written by takafu3
# USAGE
# DEFAULT MODE # shelltori
# DEMO MODE # shelltori demo or -d
# TAISENMODE # shelltori taisen or -t
# DIR FILE CONFIG
DIR=~
KOMANDO=${DIR}/komando.txt
TMP=${DIR}/tmp$$
LOG=${DIR}/torilog.txt
MODE=DEFAULT
PHASE=PLAYER
> $KOMANDO
> $TMP
> $LOG
# COLOR
GREEN=$'\e[0;32m'
BLACK=$'\e[0;30m'
RED=$'\e[0;31m'
BLUE=$'\e[0;34m'
# MAKE KOMANDO FILE
i=1
while [ 0 ]
do
ls -F `echo $PATH |\
cut -f $i -d ":"` >>\
$TMP
i=`expr $i + 1`
[ `echo $PATH |\
cut -f $i -d ":" |\
grep -c .` -eq 0 ] &&\
break
done
cut -f 1 -d \* $TMP |\
grep -v @ |\
grep -v / |\
grep -v [0-9]$ |\
grep -v ^[0-9] |\
sort -u |\
grep -v "\." >> $KOMANDO
rm $TMP
# SET MODE
echo $1 |\
[ `grep -c taisen` -gt 0 ] &&\
MODE=TAISEN
echo $1 |\
[ `grep -c "-"` -gt 0 ] &&\
echo $1 |\
[ `grep -c "t"` -gt 0 ] &&\
MODE=TAISEN
echo $1 |\
[ `grep -c demo` -gt 0 ] &&\
MODE=DEMO &&\
PHASE=COMPUTER
echo $1 |\
[ `grep -c "-"` -gt 0 ] &&\
echo $1 |\
[ `grep -c "d"` -gt 0 ] &&\
MODE=DEMO &&\
PHASE=COMPUTER
# GAME START
echo "This is SHIRITORI by unix commands"
echo "If you Give up, Type OTEAGE"
GYOSU=`grep -c . $KOMANDO`
SAISYO=`expr $RANDOM % $GYOSU + 1`
TORI=`grep -n . $KOMANDO |\
grep $SAISYO |\
head -n 1 |\
cut -f 2 -d ":"`
echo "$GREEN"1st command is "$RED"${TORI}"$BLACK"
# GAME LOOP
while [ 0 ]
do
SIRI=`echo ${TORI} |\
cut -c ${#TORI}`
while [ $PHASE == "PLAYER" ]
do
[ $MODE == TAISEN ] &&\
echo +++ "$BLUE" PLAYER PHASE" $BLACK" +++
echo "$GREEN"Input a command start from "$RED"${SIRI}"$BLUE"
[ $MODE != DEMO ] &&\
read TORI
[ ${#TORI} -eq 0 ] &&\
continue
[ $TORI == "OTEAGE" ] &&\
break
[ `echo $TORI | cut -c 1` == ${SIRI} ] &&\
break
echo "$RED"WRANG HEAD WORD"$BLACK"
done
if [ $PHASE == "COMPUTER" ]
then
[ $MODE == TAISEN ] &&\
echo "$BLACK"+++ "$RED"COMPUTER PHASE"$BLACK" +++
[ $MODE == DEMO ] &&\
echo "$GREEN"Input a command start from "$RED"${SIRI}"$BLACK"
sleep 5
NUMBER=`grep -c ^$SIRI $KOMANDO`
FARST=`grep -n ^$SIRI $KOMANDO |\
head -n 1 |\
cut -f 1 -d :`
LINE=`expr $FARST + $RANDOM % $NUMBER`
TORI=`head -n $LINE $KOMANDO |\
tail -n 1`
echo "$RED"$TORI"$BLACK"
fi
# GIVE UP
[ $TORI == "OTEAGE" ] &&\
STATUS=OTEAGE &&\
break
# SEARCH FROM KOMANDO FILE
[ `grep -c ^${TORI}$ $KOMANDO` -eq 0 ] &&\
STATUS=NOLITED &&\
break
# SEARCH FROM LOG FILE
[ `grep -c ^${TORI}$ $LOG` -ne 0 ] &&\
STATUS=SAME &&\
break
# OUTPUT TO LOG FILE
echo $TORI >> $LOG
MAN=`man "$TORI" 2>/dev/null |\
sed '/^$/d' |\
head -n 3 |\
tail -n 1`
[ ${#MAN} -ne 0 ] && echo $MAN
[ $MODE != TAISEN ] &&\
continue
# PHASE CHANGE
[ $PHASE == PLAYER ] &&\
PHASE=COMPUTER &&\
continue
PHASE=PLAYER
done
# GAME OVER
SCORE=`grep -c . $LOG`
[ $MODE == "TAISEN" ] &&\
SCORE=`expr $SCORE / 2`
echo "$BLACK"-----------------------------------------
[ $MODE != TAISEN ] &&\
echo GAME OVER
[ $MODE == TAISEN ] &&\
[ $PHASE == PLAYER ] &&\
echo "$RED"YOU LOSE"$BLACK"
[ $MODE == TAISEN ] &&\
[ $PHASE == COMPUTER ] &&\
echo "$BLUE"YOU WIN"$BLACK"
[ $STATUS == "OTEAGE" ] &&\
echo "$RED"OTEAGE"$BLACK"
[ $STATUS == "NOLITED" ] &&\
echo "$RED"NO LISTED WORD"$BLACK"
[ $STATUS == "SAME" ] &&\
echo "$RED"SAME WORD"$BLACK"
echo Your Score is $SCORE
echo -----------------------------------------
[ $PHASE == "COMPUTER" ] &&\
exit 0
echo + Answer Example +
NUMBER=`grep -c ^$SIRI $KOMANDO`
FARST=`grep -n ^$SIRI $KOMANDO |\
head -n 1 |\
cut -f 1 -d :`
for i in U S P
do
LINE=`expr $FARST + $RANDOM % $NUMBER`
head -n $LINE $KOMANDO |\
tail -n 1
done
exit 0
2010-04-22T17:17:42+09:00
1271924262
-
NOTEBOOK
https://w.atwiki.jp/432-23/pages/1.html
NOTEBOOK
FOR
ME
----
2010-04-21T17:12:36+09:00
1271837556
-
条件文
https://w.atwiki.jp/432-23/pages/16.html
A,B : 対象
X,Y : 条件文
S,T,U : 処理
----
***うさげ
[ X ] && S : if X then S
[ X ] || S : if not X then S
if [ X ]
then
S
elif [ Y ]
then
T
else
U
fi
while [ X ]
do
S
done
until [ X ]
do
S
done
----
***数値
[ A -eq B ] : A Equal B
[ A -ne B ] : A Not Equal B
[ A -gt B ] : A Greater Than B
[ A -ge B ] : A Greater or Equal B
[ A -lt B ] : A Less Than B
[ A -le B ] : A Less or Equal B
***文字
[ A ] [ -n A ] : number of characters > 0
[ ! A ] [ -z A ] : number of characters = 0
***ファイル
[ -d A ] : A is Directory
[ -f A ] : A is File
[ -L A ] : A is Link
[ -r A ] : A is Readable
[ -w A ] : A is Writable
[ -x A ] : A is eXecutable
[ -s A ] : Size of A > 0
[ A -nt B ] : A is Newer Than B
[ A -ot B ] : A is Older Than B
----
***○○かつ××,○○または××
[ X -a Y ] : X = 0 and Y = 0
[ X -o Y ] : X = 0 or Y = 0
----
2010-04-21T15:01:22+09:00
1271829682
-
TOOL
https://w.atwiki.jp/432-23/pages/18.html
Audim : Messenger
http://adium.im/
ClamXav : Anti Virus
http://www.clamxav.com/
Mi : Text Editor
http://mimikaki.net/
VLC media player : Music or Movie
http://www.videolan.org/vlc/
----
2010-04-21T14:59:35+09:00
1271829575
-
メニュー
https://w.atwiki.jp/432-23/pages/2.html
#recent(5)
-[[更新履歴]]
----
**Bash
-[[条件文]]
-[[正規表現]]
-[[シェルスクリプト]]
**Mac OS X
-[[TOOL]]
2010-04-21T14:44:25+09:00
1271828665
-
更新履歴
https://w.atwiki.jp/432-23/pages/17.html
#recent(100)
2010-04-21T14:21:26+09:00
1271827286