UNIXシェルスクリプト逆引き大全 333の極意
概 要
本書は、4つのUNIX OS(Linux,FreeBSD,Solaris,MacOS X)に対応したシェルスクリプトの逆引き解説書です。文法や機能について丁寧に解説していますので、これからシェルスクリプトを学ぼうとする初心者の方にも、また実用的なシェルスクリプトを作成したいという中級者以上の方にも役立つ一冊です。本書で解説しているサンプルスクリプトはすべてダウンロードすることができるので実際に動作しながら学べます。
| 著者 | 中橋一朗 |
| 価格 | 円(税込)(本体2400円) |
| ISBN | 4-7980-0884-2 |
| 発売日 | 2004/09/30 |
| 判型 | A5 |
| 色数 | 2色 |
| ページ数 | 464 |
| CD/DVD | - |
| 対象読者 | 中級 |
| シリーズ | 逆引き大全 |
目次
■第1章 シェルスクリプト基本の極意
◆1-1 スクリプトを設計する
001 何故シェルスクリプトを使うのか
002 シェルスクリプトに向いた作業・向かない作業
003 コマンドの使い方を調べる
004 目的に合ったコマンドを探す
◆1-2 スクリプトを作成する
005 スクリプトを作成する
006 スクリプトをコマンドとして実行できるようにする
007 スクリプトを実行する
008 スクリプトをデバッグする
■第2章 コマンド実行の極意
◆2-1 色々な実行方法
009 コマンドを実行する
010 組み込みコマンドと同じ名前の外部コマンドを実行する
011 関数名と同じ名前の組み込みコマンドを実行する
012 空白を含む引数をコマンドに渡す
013 コマンドの実行が成功したかどうかを調べる
014 パイプでつないだ各コマンドの終了コードを調べる
015 コマンドをバックグラウンドで実行する
016 複数のコマンドを続けて実行する
017 コマンドの実行が成功した時だけ、次のコマンドを実行する
018 コマンドがエラーになった時だけ、次のコマンドを実行する
019 ログオフした後もバックグラウンドでの実行を継続する(デーモンとして動作させる)
020 サブシェルを使って実行する
021 グルーピング({ ... })を使って実行する
022 変数の内容をコマンドとして実行する
023 コマンドの実行結果をコマンドとして実行する
024 対話型コマンドを決められた手順通りに動かす
025 コマンドが出力するメッセージの言語を変更する
◆2-2 標準入出力の使い方
026 標準入出力を使う
027 コマンドの実行結果を別のコマンドの入力にする(パイプ)
028 コマンドの実行結果をファイルに書き込む
029 コマンドの実行結果を画面とファイルの両方に出力する(tee)
030 コマンドの実行結果を変数に取り込む(コマンド置換)
031 ファイルの内容をコマンドの入力にする
032 変数の内容をコマンドの入力にする
033 標準入力に渡すデータをスクリプトに埋め込む(ヒアドキュメント)
034 2つ以上のファイルを入力に取るコマンド(diffなど)に、コマンドの実行結果を渡す(bash編)
035 標準入出力を使うオプションのないコマンドで、標準入出力を使う(標準編)
036 標準入出力を使うオプションのないコマンドで、標準入出力を使う(bash編)
037 エラーメッセージをファイルに書き込む
038 エラーメッセージと標準出力のメッセージの両方を取り込む
039 エラーメッセージを表示しないようにする
040 複数のコマンドにわたって標準入出力を切り替えたままにする
◆2-3 関数を使う
041 関数を定義する
042 関数の定義を取り消す
043 関数を呼び出す
044 関数の途中で処理を終え、呼び出し元に戻る
045 関数呼び出しにおいて、引数を受け渡す
046 関数呼び出しにおいて、結果を受け渡す
047 関数内でローカル変数を使う
048 再帰処理を行う
049 別のファイル中に定義した関数をスクリプトに読み込む
■第3章 変数・文字列の極意
◆3-1 変数を使う
050 変数とは何か
051 シェル変数を使う
052 環境変数を使う
053 変数の定義を取り消す
054 スクリプトや関数に与えられた引数を受け取る
055 「$*」と「$@」の違い
056 変数の内容をファイルに書き込む
057 ファイルの内容を変数に読み込む
058 変数が定義されているかどうかを調べる
059 変数が定義されていない場合、デフォルトの値を使う
060 変数が定義されていない場合、エラーメッセージを表示して終了する
061 環境変数を一時的に変更する
062 初期設定ファイルの内容を一度に読み込み、変数にセットする(初級編)
063 初期設定ファイルの内容を一度に読み込み、変数にセットする(上級編)
064 変数の値を書き換えられないようにする
◆3-2 文字列を扱う
065 文字列を変数に代入する
066 単語の扱い
067 ""...""と'...'の違い"
068 文字列の中に変数の値を展開する
069 複数行に渡る文字列を書く
070 メタキャラクタの使い方
071 制御文字(改行・タブなど)を含む文字列を作成する
072 入れ子になった文字列
073 文字列を比較する
074 文字列のn番目の単語を取り出す
075 文字列のm文字目からn文字目までを取り出す(標準編)
076 文字列のm文字目からn文字目までを取り出す(bash編)
077 文字列に別の文字列が含まれているかどうかを調べる(検索する)(grep編)
078 文字列に別の文字列が含まれているかどうかを調べる(検索する)(expr編)
079 文字列の一部を置換する(標準編)
080 文字列の一部を置換する(bash編)
081 文字列から正規表現に一致する部分を抜き出す
082 文字列の大文字・小文字を変換する
083 文字列の長さを調べる
084 文字列を指定した区切り文字で分割する(シェル変数IFS)
◆3-3 その他のデータを扱う
085 整数の演算を行う(標準編)
086 整数の演算を行う(bash編)
087 数値の比較を行う
088 乱数を得る(標準編)
089 乱数を得る(bash編)
090 文字列が整数かどうかを調べる
091 変数を整数変数として宣言する(bash編)
092 浮動小数点の演算を行う
093 日付や時刻を指定した書式で得る
094 日付や時刻の計算をする(Linux/GNU date編)
095 日付や時刻の計算をする(FreeBSD編)
096 時刻を指定したタイムゾーンで表記する
097 配列を扱う(標準編)
098 配列を扱う(bash編)
099 配列変数の要素数を調べる(bash編)
100 配列変数に一度に値をセットする(bash編)
101 配列変数のすべての要素を一度に表示する(bash編)
102 辞書(連想配列)を扱う
103 配列のデータを整列させる(ソートする)(bash編)
104 片方の配列にはあって、もう片方にはないデータを見つける(bash編)
■第4章 制御構文の極意
◆4-1 制御構文の基本
105 条件に応じて実行を分岐する(if~then~else~fi)
106 if文にたくさんの条件を書く(elif)
107 if文の条件を逆にする
108 条件が成立している間、繰り返す(while~do~done)
109 条件が成立するまでの間、繰り返す(until~do~done)
110 いくつかの項目について繰り返す(for~in~do~done)
111 文字列のパターンに応じて分岐する(case~in~esac)
112 次の繰り返しに進む(continue)
113 繰り返しを中断して(ループを抜けて)次の処理に進む(break)
◆4-2 様々な繰り返し処理
114 引数に与えられた項目に対して繰り返し処理を行う
115 コマンドの出力結果に対して繰り返し処理をする
116 ファイル名の一覧に対して繰り返し処理をする
117 繰り返し処理をバックグラウンドで行う
118 繰り返し処理の入出力をリダイレクトする
119 繰り返し処理の入出力をパイプに流す
■第5章 ファイル操作の極意
◆5-1 ファイル名の操作
120 パス名からディレクトリ名を取り出す
121 パス名からファイル名を取り出す
122 ファイル名から拡張子を取り除く(拡張子が決まっている場合)
123 ファイル名から拡張子を取り除く(拡張子が不定の場合)
124 ファイル名の拡張子を調べる
125 ファイル名の拡張子を変更する
126 相対パスから絶対パスを得る
127 絶対パスから相対パスを得る
128 正規表現を使ってファイル名を変更する(sed編)
129 正規表現を使ってファイル名を変更する(ruby編)
130 「-」で始まるファイル名の扱い
131 「*」や「?」などの記号を含むファイル名の扱い
◆5-2 ファイルの作成・変更
132 空のファイルを作成する
133 ファイルの更新日付を変更する
134 深いディレクトリを一気に作成する
135 所有者や権限を指定してファイルをコピー(インストール)する
136 一時ファイル(テンポラリファイル)を作成する
137 ファイルの所有者を変更する
138 ファイルのアクセス権を設定する
139 ファイルが新規に作成される場合の、デフォルトのアクセス権を設定する
140 所有権やアクセス権、更新日付などを保ったままファイルをコピーする
141 アクセス権等に加え、シンボリックリンクを保ったままファイルをコピーする
142 ファイルやディレクトリのバックアップを作成する
143 tarでバックアップしたファイルを展開する
144 条件に合うファイルだけをバックアップする
145 cpioでバックアップしたファイルを展開する
146 指定した容量のファイルを作成する
◆5-3 ファイルの状態を調べる
147 ファイルが存在するかどうかを調べる
148 ディレクトリが存在するかどうかを調べる
149 ファイルの大きさを調べる
150 ディレクトリの大きさ(ディスク使用量)を調べる
151 指定されたパスがファイルなのかディレクトリなのかを調べる
152 ファイルの種類を調べる
153 ファイルの更新日付を調べる(標準編)
154 ファイルの更新日付を調べる(Linux編)
155 2つのファイルの新旧を比較する
156 ファイルがシンボリック・リンクかどうかを調べる
157 ファイルの所有者を調べる
158 ファイルのアクセス権を調べる
159 ファイルのiノード番号を調べる
160 ホームディレクトリの場所を調べる
161 自分以外のユーザーのホームディレクトリの場所を調べる
162 カレント・ディレクトリを調べる
163 テンポラリ・ディレクトリ(一時ファイルを作成するディレクトリ)の場所を調べる
164 コマンドのある場所を調べる
◆5-4 ファイルの検索
165 ディレクトリ内のファイルの一覧を得る
166 ファイルの内容で検索する
167 ファイル名から検索する
168 パターン(ワイルドカード)に一致する名前のファイルを探す
169 正規表現に一致する名前のファイルを探す
170 更新日付からファイルを検索する(初級編)
171 更新日付からファイルを検索する(上級編)
172 検索で見つかったファイルに対してコマンドを実行する
173 複雑な条件でファイルを検索する
◆5-5 テキストファイルの操作
174 テキストファイルの内容を検索する
175 テキストファイルの内容を検索置換する
176 複数のテキストファイルを連結する
177 テキストファイルを一定の大きさに分割する
178 テキストファイルの最初のn行を取り出す
179 テキストファイルの最後のn行を取り出す
180 テキストファイルのn行目からm行目を取り出す
181 テキストファイルをソート(並べ替え)する
182 テキストファイルを特定のフィールドでソート(並べ替え)する
183 重複する行だけを抽出する
184 重複する行を削除する
185 テキストファイルから特定のフィールドを取り出す(例えば、/etc/passwdからログイン名だけを取り出す)
186 テキストファイルに新たなフィールドを追加する
187 2つのテキストファイルの違いを調べる
188 テキストファイルの行数を調べる
189 テキストファイルの文字数を調べる
190 文字コードを変換する
191 タブをスペースに変換する
192 スペースをタブに変換する
193 テキストを1行ずつ読み込む
194 テキストファイルを配列に読み込む(bash編)
195 各行の一部の桁だけを取り出す
196 CSV/TSV形式のファイルを処理する
197 テキストファイルをエディタで開く
198 長いテキストファイルを1ページずつ表示する
◆5-6 その他のファイル操作
199 バイナリファイルを一定の大きさに分割する
200 複数のバイナリファイルを連結する
201 バイナリファイルの一部を取り出す
202 バイナリファイルの一部を書き換える
203 バイナリファイルに含まれる文字列を抽出する
204 2つのバイナリファイルの違いを調べる
205 ファイルの後ろに0を付け加えて、指定したサイズに拡大する
206 ファイルのチェックサム(ハッシュ値)を得る
207 ファイルをアーカイブする・圧縮する
208 ファイルを展開する(解凍する)
209 ファイルを暗号化する
210 ファイルを複号する(暗号化を解除する)
211 カレントディレクトリを一時的に変更する
■第6章 ユーザーインタフェースの極意
◆6-1 コマンドラインでのユーザーインタフェース
212 コマンドラインオプションを解析する
213 自分自身のファイル名に応じてスクリプトの動作を変える
214 メッセージを画面に表示する
215 書式を設定してメッセージを表示する
216 標準エラー出力にメッセージを出力する
217 最後に改行せずにメッセージを表示する
218 1行入力を得る
219 Yes/Noを問い合わせる
220 複数の項目から選択する(bash編)
221 端末から1文字だけ読み込む
222 画面をクリアする
223 カーソル位置などを制御する(tput)
224 文字の色を変える
225 タイプした文字を画面に表示しないようにする(エコーバックを禁止する)
226 端末をリセットする(文字色やエコーバックの状態を標準に戻す)
227 実行中のスクリプトの現在の行番号を調べる(bash編)
228 シェルが対話モードかどうかを調べる(標準入力が端末かどうかを調べる)
229 標準出力が端末かどうかを調べる
◆6-2 テキストダイアログを使ったユーザーインタフェース
230 端末にダイアログボックスを表示する
231 テキストダイアログでメッセージを表示する
232 テキストダイアログでYes/Noを問い合わせる
233 テキストダイアログで1行入力を得る
234 テキストダイアログで複数の項目から選択する
235 テキストダイアログでファイルを選択する
◆6-3 GUIのユーザーインタフェース
236 X Window Systemを使用してダイアログボックスを表示する
237 GUIでメッセージを表示する
238 GUIでYes/Noを問い合わせる
239 GUIで1行入力を得る
240 GUIで長いテキストを編集する
241 GUIで複数の項目から選択する
242 GUIでファイルを選択する
■第7章 プロセス管理の極意
◆7-1 プロセスを操作する
243 特定のコマンドが実行されているかどうかを調べる
244 コマンド実行の所要時間を調べる
245 プロセスを強制終了させる
246 サーバ・プロセスを再起動する
247 特定のコマンドのプロセスを全て終了させる
248 プロセスが終了するのを待つ
249 プロセス優先度を指定してコマンドを実行する
250 実行中のコマンドのプロセス優先度を変更する
251 スクリプトの実行を一時中断する
252 スクリプトが中断された時に後始末をする
253 スクリプトを中断できないようにする
254 スクリプトが使用する計算機資源(メモリ使用量など)を制限する
255 計算機資源の制限状況(ulimitの設定値)を表示する
◆7-2 プロセス間通信
256 スクリプトの終了コードを指定する
257 名前付パイプを使って他のプロセスと通信する
258 シグナルを使って他のプロセスと通信する
259 ロックファイルを用いて排他制御を行う
■第8章 ネットワーク操作の極意
◆8-1 LANを利用する
260 リモートホストでコマンドを実行する
261 標準入出力を使ってリモートホストにデータを送る・受け取る
262 リモートホストのHDDにファイルをバックアップする
263 リモートホストのCD-Rにデータを書き込む
264 scpでファイルを転送する
265 リモートホストが動作しているかどうかを監視する
266 IPアドレスからホスト名を調べる
267 ホスト名からIPアドレスを調べる
268 自分のホストの名前を調べる
269 自分のホストの完全修飾名(ドメイン名を含んだホスト名)を調べる
270 自分のホストのIPアドレスを調べる
271 Windowsマシンの共有フォルダにファイルをアップロードする
272 Windowsマシンの共有フォルダからファイルをダウンロードする
273 TCP/UDPソケットにアクセスする
274 TCP/UDPソケットを作成する(待ち受けする)
275 簡単なネットワーク・サーバを作成する
◆8-2 インターネットを利用する
276 webやftpでファイルをダウンロードする
277 ftpでファイルをアップロードする
278 未読のメールがあるかどうかを調べる
279 電子メールを送信する
280 電子メールを受信し、スクリプトで処理する
281 添付ファイル付きの電子メールを送信する
282 電子メールから添付ファイルを取り出す
283 CGIスクリプトを書く
■第9章 システム管理の極意
◆9-1 セキュリティー
284 suコマンドで管理者権限を得る
285 sudoコマンドで管理者権限を得る
286 パスワードを入力せずに管理者権限を得る
287 自分がrootかどうかを調べる
288 自分のユーザー名や所属グループを調べる
289 スクリプトを特定のユーザー以外は実行できないようにする
290 ファイルの中身を他のユーザーが読めないようにする
291 ディレクトリへのアクセスは許可するが、ファイルの一覧は許可しない
292 ディレクトリに新規ファイルを作成することは許可するが、一覧は許可しない
◆9-2 システムを管理する
293 スクリプトを定期的に実行する
294 コマンドを決められた時刻に一回だけ実行する
295 atコマンドで実行待ちになっている項目を表示する
296 atコマンドで実行待ちになっている項目を取り消す
297 起動時・シャットダウン時にスクリプトを実行する(RedHat系Linux編)
298 起動時・シャットダウン時にスクリプトを実行する(Debian編)
299 起動時・シャットダウン時にスクリプトを実行する(FreeBSD編)
300 起動時・シャットダウン時にスクリプトを実行する(Solaris編)
301 起動時にスクリプトを実行する(Mac OS X編)
302 シャットダウン時にスクリプトを実行する(Mac OS X編)
303 ログイン時にスクリプトを実行する(テキスト端末編)
304 ログイン時にスクリプトを実行する(X編)
305 ログアウト時にスクリプトを実行する(テキスト端末・標準sh編)
306 ログアウト時にスクリプトを実行する(テキスト端末・bash編)
307 ログアウト時にスクリプトを実行する(X編)
308 ログイン時・ログアウト時にスクリプトを実行する(Mac OS X編)
309 システムログを監視して、条件に応じてコマンドを実行する
310 メッセージをシステムログに記録する(syslogに送る)
311 全ての端末にメッセージを表示する
312 古いログファイルを整理する
313 OSの種類やバージョンを調べる
314 ユーザーを登録する(Linux編)
315 ユーザーを登録する(FreeBSD編)
316 ユーザーを登録する(Solaris編)
317 ユーザーを削除する
318 ユーザーを登録・削除する(Mac OS X編)
319 ユーザーのパスワードを変更する
320 グループを登録・削除する
◆9-3 ハードウェアを管理する
321 システムをシャットダウン・再起動する
322 ディスクの空き容量を調べる
■第10章 マルチメディアの極意
◆10-1 画像を操作する
323 画像を表示する
324 画像の形式を変換する
325 画像のサイズを変更する
326 画像の一部を切り取る
327 画像の情報を得る
328 シェルスクリプトで画像を作成する
◆10-2 音声・動画を操作する
329 動画を再生する
330 音声を再生する
331 動画ファイルの形式を変換する
332 音声ファイルの形式を変換する
333 動画・音声の情報を得る
■付録
付録A 簡易リファレンス
A.1 シェルの特殊変数
A.2 シェルの定義済み変数
A.3 シェルのワイルドカード
A.4 シェルの変数展開
A.5 シェルの制御構文
A.6 正規表現リファレンス
付録B 各ソフトウェアのインストール方法
B.1 GNU Coreutils
B.2 dialog
B.3 fetchmail
B.4 GNU Findutils
B.5 GnuPG
B.6 mimekit
B.7 mktemp
B.8 mpack
B.9 mplayer
B.10 netcat
B.11 nkf
B.12 ucspi-tcp
B.13 Xdialog
B.14 wget

