BShellまとめ

Information

version date memo
1.0 2012/09/16 first

for文を用いたファイル群変更

## Regular : 正規表現
## toFile  : 変換後ファイル名
for i in $(ls | grep -e "Regular");do mv $i toFile; done
正規表現
文末 $
文頭 ^
変数(一致箇所削除)
先頭一致(#, ##)
後方一致(%, %%)
#,%が最短、##,%%が最長
# 例(文末)
# picture01.txt, picture01.txt_backup があるとする
for i in $(ls | grep -e "picture0[0-9].txt"); do echo $i; done
# とすると
# $ picture01.txt
# $ picture01.txt_backup
# となり
for i in $(ls | grep -e "picture0[0-9].txt$"); do echo $i; done
# とすると
# $ picture01.txt
# となる
# 例(後方一致)
for i in $(ls | grep -e "picture0[0-9].txt$");do echo ${i%.txt}; done
# $ picture01
# となる。

シェル変数展開まとめ

http://open-groove.net/shell/summary-variables/

ファイル読み込み

# readのオプションにeをつけるのが味噌。
# (eはエスケープコマンド無視)
while read -e LINE;do echo $LINE; done < "ファイル名"

非同期実行

コマンド実行中に、「実行中です........」みたいなのをやりたいなと思った。
以下コード

emacs & # emacsをバックで動作
PID=$!  # PID値取得
echo -n 実行中です
while [ 0 ]; do
  echo -n .
  #sleep 1
done &
PID2=$! # "."表示PID値取得

wait $PID
if [ $PID ]; then
  echo 正常終了
else
  echo 異常終了
fi
kill -9 $PID2 # プロセス強制終了

killのオプションについて

http://www.k-tanaka.net/unix/kill.html

参考リンク

Bシェル基礎文法最速マスター

http://chaichan.lolipop.jp/src/BSH.htm