Bashメモ
- ディレクトリ一覧
find . -type d |sed 's!^\./!!'
- 日付を表示
date +\%Y\%m\%d
- 配列 と forループ
AA=(aa bb cc dd ee) for a in ${AA[@]}; do echo $a done 1行で。 for d in `ls`; do コマンド; done
for i in `seq 1 10`; do mysql -e "select count(*) as foo_$i from foo_$i.foo_table"; done
for i in `seq --format='%02g' 1 10`; do echo $i; done for i in `seq --format='%02g' 2 2 20`; do echo $i; done
- if文
DOMAINS=`ls | sort` for d in ${DOMAINS[@]}; do if [ -d $d ] && [ $d != www ] && !( [ -d company ] && [ -d info ] ) then cd $d echo `pwd` ls cat access_log.1 | zip > access_log.20070206.zip cd .. fi done 1行で。 if [ -d ディレクトリ ]; then コマンド; fi if [ -d ディレクトリ ]; then コマンド; else コマンド; fi if [ -d ディレクトリ ]; then コマンド; elif [ -d ディレクトリ ]; then コマンド; else コマンド; fi
- サンプル
サイズが0のファイルをリストする
for i in `ls`; do if ! [ -s $i ]; then echo $i; fi done
- ファイルと標準出力の両方に出力
コマンドの出力を画面を見ながらファイルに出力したい場合
# command | tee output_file
- 四則演算、算術計算
expr コマンドを使う。各トークンは、スペースで区切る。
足し算
# a=100 # b=200 # echo `expr $a + $b` 300 # echo $(($a+$b)) 300
引き算
# echo `expr $a - $b` -100 # echo $(($a-$b)) -100
かけ算
「*」を使うが、「*」はシェルで別の意味を持つので「\」でエスケープする。
# echo `expr $a \* $b` 20000 # echo $(($a * $b)) 20000
わり算
# echo `expr $a / $b` # echo $(($a / $b)) 0 # echo `expr $a % $b` # echo $(($a % $b)) 100
括弧の使い方
# echo `expr \( $a + $b \) \* 15` 4500 # echo $(( ($a + $b) * 15)) 4500
- 乱数
# echo $[RANDOM % 10] # echo $[RANDOM % 10+100]