シェルプログラミング
ナビゲーションに移動
検索に移動
| Programming C | Linux | Cygwin | Linux コマンド |
目次
シェルプログラミング
これらの本からの覚書。
ソフトウェアツールの開発理念
詳解シェルスクリプト イントロダクション
- 一つのことをしっかりやる
- バイナリデータではなく文字列を扱う
- 正規表現を使う
- 特に指定がなければ標準入力と標準出力を使う
- 余計な出力は行わない
- 入力データと同じ形式で処理結果を出力する
- 一つのプログラムで全てをこなそうと思わない
- ツールをどんどん作る
基本
リダイレクトとパイプ
- < を使って標準入力を変更する
- > を使って標準出力を変更する
- >> を使ってファイルに追記する
- | を使ってパイプラインを作る
特殊ファイル
/dev/null
- ビットバケツ(bit bucket) と呼ばれる
- このファイルに送られるデータは全て削除される
- データを読み込むと、常にファイル終端文字が返される
/dev/tty
- プログラムが実行された端末にリダイレクトされる
- パスワードなど必ず手入力して欲しい場合などに便利
文字列の検索と置換
- 当初から存在していた、grep(POSIXのBRE:Basic Regular Expressionsに対応)、拡張された、egrep(ERE:Extended Regular Expressionsに対応)、正規表現に対応しない代わりに、高速な固定検索をおこなう、fgrepが、歴史的な経緯で存在しているが、1992年のPOSIX標準で、grepに統合され、オプションで切り替えられるようになった(現実的には削除されずに残っている)
正規表現
変数
条件
制御
リスト
関数
コマンド
Tips
grepで対象のファイル数が多く argument list too longとなる場合
- NG
$ grep "hoge" * -bash: /usr/bin/grep: Argument list too long
- 書き換え
$ echo * | xargs grep "hoge"
複数ファイルを処理
- ディレクトリのファイルをまとめて解凍
#!/bin/sh for f in `ls *.zip` do unzip $f done
日付
書式
+で書式設定
# date +%Y%m%d%H%M%S 20130817093545
スクリプト中で使う
sufix=`date +%Y%m%d%H%M%S` echo $sufix
© 2006 矢木浩人