詳解 シェルスクリプト

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
372
ISBN
978-4-87311-267-1
原書
Classic Shell Scripting
FORMAT
Print
Print
3,080円

Unixのプログラムは「ツール」と呼ばれます。Unixは、処理を実現するために複数の道具(ツール)を組み合わせる「ソフトウェアツール」という思想の下に設計されているためです。そしてこれらツールを「組み合わせる」ということこそがUnixの真髄です。また、シェルスクリプトの作成には言語自体だけでなくそれぞれのツールに対する理解も求められます。つまり、あるツールが何のためのものであり、それを単体あるいは他のプログラムと組み合わせて利用するにはどのようにすればよいかということを理解しなければなりません。本書は、Unixシステムへの理解を深めながら、シェルスクリプトの基礎から応用までを幅広く解説します。標準化されたシェルを通じてUnix(LinuxやFreeBSD、Mac OS XなどあらゆるUnix互換OSを含む)の各種ツールを組み合わせ、目的の処理を実現するための方法を詳しく学ぶことができます。

目次

推薦の言葉
はじめに

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 その他のプログラム

索引