詳解 シェルスクリプト
オライリー・ジャパン
著者:Arnold Robbins、Nelson H.F.Beebe
訳者:日向あおい
推薦の言葉
はじめに
1章 イントロダクション
1.1 Unixの歴史
1.2 ソフトウェアツールの開発理念
1.3 まとめ
2章 さあ始めよう
2.1 コンパイラ言語とインタプリタ言語
2.2 シェルスクリプトの必要性
2.3 簡単なスクリプトの例
2.4 自己完結型のスクリプト(先頭行の#!)
2.5 シェルの基本要素
2.5.1 コマンドと引数
2.5.2 変数
2.5.3 echoを使った簡単な出力
2.5.4 printfを使った高度な出力
2.5.5 入出力のリダイレクトの基礎
2.5.6 コマンドの探索順序
2.6 引数へのアクセス
2.7 処理状況を追跡する簡単な方法
2.8 国際化とローカライズ
2.9 まとめ
3章 文字列の検索と置換
3.1 文字列の検索
3.1.1 grepの基本
3.2 正規表現
3.2.1 正規表現とは
3.2.2 BRE
3.2.3 ERE
3.2.4 正規表現への拡張
3.2.5 各プログラムで利用される正規表現
3.2.6 文字列の置換
3.2.7 使用法の基本
3.2.8 sedの処理手順
3.2.9 特定の行のみに対するマッチング
3.2.10 マッチする文字列の長さ
3.2.11 「行」と「文字列」の違い
3.3 フィールド単位での処理
3.3.1 テキストファイルの変換
3.3.2 cutを使って特定のフィールドを取り出す
3.3.3 joinを使ってフィールドを結合する
3.3.4 awkを使ってフィールドを並べ替える
3.4 まとめ
4章 文字列処理ツール
4.1 行の並べ替え
4.1.1 行全体を使った並べ替え
4.1.2 フィールドを指定した並べ替え
4.1.3 複数行単位での並べ替え
4.1.4 並べ替えの効率
4.1.5 並べ替えの安定性
4.1.6 並べ替えに関するまとめ
4.2 重複を除いて出力する
4.3 段落の整形
4.4 行数、単語数、文字数のカウント
4.5 印刷
4.5.1 進化した印刷機能
4.5.2 その他の印刷用ソフトウェア
4.6 先頭行または最終行のみを取り出す
4.7 まとめ
5章 パイプラインの魔法
5.1 構造を持ったテキストファイルからデータを抽出する
5.2 Web向けに構造化されたデータ
5.3 クロスワードパズルのヒントを作成する
5.4 単語リスト
5.5 タグの一覧
5.6 まとめ
6章 変数、条件分岐、繰り返し
6.1 変数と演算
6.1.1 変数の割り当てと環境
6.1.2 変数展開
6.1.3 算術展開
6.2 終了ステータス
6.2.1 終了ステータスの値
6.2.2 if … elif … else … fi
6.2.3 論理演算のNOT、AND、OR
6.2.4 testコマンド
6.3 case文
6.4 ループ
6.4.1 forループ
6.4.2 whileループとuntilループ
6.4.3 breakとcontinue
6.4.4 shiftとオプションの処理
6.5 関数
6.6 まとめ
7章 入出力、ファイル、コマンドの評価
7.1 標準入力、標準出力、標準エラー出力
7.2 readを使って1行分のデータを読み込む
7.3 その他のリダイレクト機能
7.3.1 リダイレクト記号
7.3.2 ファイル記述子
7.4 printfの詳細
7.5 チルダ展開とワイルドカード
7.5.1 チルダ展開
7.5.2 ワイルドカード
7.6 コマンド展開
7.6.1 sedを使ってheadコマンドを作成する
7.6.2 メーリングリストの作成
7.6.3 exprを使った簡単な計算
7.7 クオート
7.8 処理の順序とevalコマンド
7.8.1 eval文
7.8.2 サブシェルとコードブロック
7.9 組み込みコマンド
7.9.1 setコマンド
7.10 まとめ
8章 実践的なスクリプトの例
8.1 パスの探索
8.2 ソフトウェアのビルドを自動化する
8.3 まとめ
9章 ファイル操作
9.1 ファイルの一覧表示
9.1.1 詳細な形式の出力
9.1.2 ファイルに関する情報の一覧表示
9.2 touchを使った最終更新日時の変更
9.3 一時ファイルの作成と利用
9.3.1 変数$$
9.3.2 mktempコマンド
9.3.3 特殊ファイル /dev/random と /dev/urandom
9.4 ファイルの検索
9.4.1 簡単な方法
9.4.2 コマンドの格納場所を調べる
9.4.3 findコマンド
9.4.4 異常なファイルを検索する
9.5 xargsを使ったコマンドの実行
9.6 ファイルシステムの利用状況
9.6.1 dfコマンド
9.6.2 duコマンド
9.7 ファイルの比較
9.7.1 cmpコマンドとdiffコマンド
9.7.2 patchコマンド
9.7.3 チェックサムの検査
9.7.4 デジタル署名の検証
9.8 まとめ
10章 移植性と独自の拡張
10.1 注意事項
10.2 bashのshoptコマンド
10.3 共通の拡張機能
10.3.1 selectループ
10.3.2 条件判定の拡張機能
10.3.3 パターンマッチングの拡張
10.3.4 ブレース展開
10.3.5 プロセス展開
10.3.6 配列
10.3.7 その他の拡張機能
10.4 ダウンロードとインストール
10.4.1 bash
10.4.2 ksh93
10.5 その他のBourne系シェル
10.6 シェルのバージョン情報
10.7 シェルの初期設定と終了処理
10.7.1 Bourneシェル(sh)の初期設定
10.7.2 Kornシェルの初期設定
10.7.3 bashの初期設定と終了処理
10.7.4 zshの初期設定と終了処理
10.8 まとめ
11章 シェルスクリプトとセキュリティ
11.1 安全なシェルスクリプトのためのヒント
11.2 制限付きシェル
11.3 トロイの木馬
11.4 setuidを使った悪い例
11.5 ksh93の特権モード
11.6 まとめ
付録 主要なUnixコマンド
A.1 シェルと組み込みコマンド
A.2 文字列処理
A.3 ファイル操作
A.4 プロセスの管理
A.5 その他のプログラム
索引