マスタリングLinuxシェルスクリプト 第2版

―Linuxコマンド、bashスクリプト、シェルプログラミング実践入門

[cover photo]
TOPICS
Linux
発行年月日
PRINT LENGTH
400
ISBN
978-4-8144-0011-9
原書
Mastering Linux Shell Scripting, 2nd Edition
FORMAT
Print PDF EPUB
Ebook
3,300円
Ebookを購入する
Print
3,300円

Linuxシェルスクリプトの解説書。その中でも特にbashのシェルスクリプティングに焦点を当てています。シェルスクリプトの書き方、デバッグ方法、bashプログラミングの基本といったシェルスクリプティングの基礎から、sedやAWKなど各種ツールとの連携といった実践的な応用までを体系的に解説します。WebサーバーなどのLinuxシステムの管理を任されるようになった初級の管理者にも、もっと高度で実践的なテクニックを必要としている中級の管理者や開発者にも広く役に立つ内容です。

関連ファイル

目次

監訳者まえがき
まえがき

1章 bashのスクリプトとは何か、なぜそれが必要なのか?
    1.1 技術要件
    1.2 Linuxのシェルの種類
    1.3 bashスクリプトとは何か?
    1.4 bashコマンドの階層
        1.4.1 コマンドの種類
        1.4.2 コマンドのパス
    1.5 スクリプトのためのテキストエディターの準備
        1.5.1 vimの設定
        1.5.2 nanoの設定
        1.5.3 geditの設定
    1.6 スクリプトの作成と実行
        1.6.1 Hello World!
        1.6.2 スクリプトを実行する
        1.6.3 終了ステータスをチェックする
        1.6.4 一意の名前を確保する
        1.6.5 Hello Dolly!
        1.6.6 スクリプト名を表示する
    1.7 変数の宣言
        1.7.1 ユーザー定義変数
        1.7.2 環境変数
    1.8 変数のスコープ
    1.9 コマンド置換
    1.10 スクリプトのデバッグ
    1.11 まとめ
    1.12 練習問題

2章 インタラクティブなスクリプトの作成
    2.1 オプション付きのechoの使用
    2.2 readを使った基本的なスクリプト
    2.3 スクリプトのコメント
    2.4 readプロンプトを使ってスクリプトを拡張する
    2.5 入力文字数を制限する
    2.6 入力テキストの可視性を制御する
    2.7 オプションの受け渡し
        2.7.1 オプションとパラメーターの受け渡し
        2.7.2 オプションの値を読み取る
    2.8 標準的であること
    2.9 簡単なスクリプトを使って理解を深める
        2.9.1 スクリプトを使ったバックアップ
        2.9.2 サーバーへの接続
        2.9.3 バージョン1:ping
        2.9.4 バージョン2:SSH
        2.9.5 バージョン3:MySQL/MariaDB
        2.9.6 ファイルの読み取り
    2.10 まとめ
    2.11 練習問題

3章 条件の付加
    3.1 コマンドラインリストを使ったシンプルな決定経路
    3.2 リストを使ってユーザー入力を検証する
    3.3 シェル組み込みコマンドのtestの使用
        3.3.1 文字列のテスト
        3.3.2 整数のテスト
        3.3.3 ファイルの種類のテスト
    3.4 ifを使って条件文を作成する
    3.5 elseを使ってifを拡張する
    3.6 testコマンドを伴うif文
        3.6.1 文字列のチェック
        3.6.2 ファイルやディレクトリーのチェック
        3.6.3 数値のチェック
        3.6.4 テストの結合
    3.7 elifを使って条件を増やす
        3.7.1 elifを使ってbackup2.shを作成する
    3.8 case文の使用
    3.9 レシピ:grepのフロントエンドを作成する
    3.10 まとめ
    3.11 練習問題

4章 コードスニペットの作成
    4.1 短縮入力
    4.2 コードスニペットの使用
        4.2.1 ターミナルに色を導入する
    4.3 VS Codeを使ったスニペットの作成
    4.4 まとめ
    4.5 練習問題

5章 代替構文
    5.1 testコマンドの要約
        5.1.1 ファイルのテスト
        5.1.2 ロジックの追加
        5.1.3 角括弧の詳細
    5.2 パラメーターのデフォルト値の設定
        5.2.1 変数
        5.2.2 特殊パラメーター
        5.2.3 デフォルト値の設定
    5.3 疑わしいときは……引用符を!
    5.4 [[を使った高度なテスト
        5.4.1 空白文字
        5.4.2 その他の高度な機能
    5.5 ((を使った算術演算
        5.5.1 単純な計算
        5.5.2 パラメーター操作
        5.5.3 標準的な算術テスト
    5.6 まとめ
    5.7 練習問題

6章 ループを使った反復処理
    6.1 forループ
    6.2 高度なforループ
    6.3 IFS(内部フィールドセパレーター)
    6.4 ディレクトリーとファイルのチェック
    6.5 C言語スタイルのforループ
    6.6 ネストされたループ
    6.7 ループの出力結果のリダイレクト
        6.7.1 ループの制御
    6.8 whileループとuntilループ
    6.9 ファイルからの入力の読み込み
    6.10 オペレーター用メニューの作成
    6.11 まとめ
    6.12 練習問題

7章 関数の作成
    7.1 関数の導入
    7.2 関数へのパラメーターの引き渡し
        7.2.1 配列の引き渡し
    7.3 変数のスコープ
    7.4 関数から値を返す
    7.5 再帰関数
    7.6 メニューでの関数の使用
    7.7 まとめ
    7.8 練習問題

8章 ストリームエディターの導入
    8.1 grepを使ってテキストを表示する
        8.1.1 インターフェース上の受信データの表示
        8.1.2 ユーザーアカウントデータの表示
        8.1.3 システム内のCPU数の表示
        8.1.4 CSVファイルの解析
    8.2 sedの基礎を理解する
        8.2.1 置換コマンド
        8.2.2 グローバル置換
        8.2.3 置換の限定
        8.2.4 ファイルの編集
    8.3 sedのその他のコマンド
        8.3.1 削除コマンド
        8.3.2 挿入コマンドと追加コマンド
        8.3.3 変更コマンド
        8.3.4 変換コマンド
    8.4 sedの複数のコマンド
    8.5 まとめ
    8.6 練習問題

9章 Apacheバーチャルホストの自動化
    9.1 技術要件
    9.2 Apacheの名前ベースのバーチャルホスト
        9.2.1 バーチャルホストのテンプレートの作成
        9.2.2 最初のステップ
        9.2.3 行の取り出し
        9.2.4 sedスクリプトファイル
    9.3 バーチャルホストの作成の自動化
        9.3.1 サイト作成時にデータ入力を促す
    9.4 まとめ
    9.5 練習問題

10章 AWKの基礎
    10.1 AWKの背後にある歴史
    10.2 ファイルの内容の表示とフィルタリング
    10.3 AWKの変数
        10.3.1 ユーザー定義変数
    10.4 条件文
        10.4.1 if文
        10.4.2 whileループ
        10.4.3 forループ
    10.5 出力結果の書式設定
    10.6 UIDを使ってユーザー表示をさらにフィルタリングする
    10.7 AWKの制御ファイル
        10.7.1 組み込み関数
    10.8 まとめ
    10.9 練習問題

11章 正規表現
    11.1 正規表現エンジン
    11.2 BREパターンの定義
        11.2.1 アンカー文字
        11.2.2 ドット文字
        11.2.3 文字クラス
        11.2.4 一連の文字
        11.2.5 特殊文字クラス
        11.2.6 アスタリスク
    11.3 EREパターンの定義
        11.3.1 疑問符
        11.3.2 プラス記号
        11.3.3 波括弧
        11.3.4 パイプ文字
        11.3.5 正規表現のグループ化
    11.4 grepの使用
    11.5 まとめ
    11.6 練習問題

12章 AWKを使ったログの集約
    12.1 HTTPログファイルのフォーマット
    12.2 Webログからのデータの表示
        12.2.1 日付によるエントリーの選択
        12.2.2 404エラーの集約
        12.2.3 HTTPアクセスコードの集約
        12.2.4 リソースのヒット数
        12.2.5 画像のホットリンクの識別
    12.3 最もランキングの高いIPアドレスの表示
    12.4 ブラウザーデータの表示
    12.5 Eメールログの処理
    12.6 まとめ
    12.7 練習問題

13章 AWKを使ったlastlogの改良
    13.1 AWKの範囲を使ってデータを除外する
        13.1.1 lastlogコマンド
        13.1.2 AWKによる行のフィルタリング
        13.1.3 マッチした行のカウント
    13.2 フィールド数に基づく条件
    13.3 AWKのレコードセパレーターを操作してXMLデータを処理する
        13.3.1 Apacheバーチャルホスト
        13.3.2 XMLカタログ
    13.4 まとめ
    13.5 練習問題

14章 bashスクリプトの代わりとしてのPython
    14.1 Pythonとは何か?
    14.2 PythonでのHello World
    14.3 Pythonでの引数
    14.4 引数の引き渡し
    14.5 引数のカウント
    14.6 重要な空白
    14.7 ユーザー入力の読み取り
    14.8 Pythonを使ってファイルに書き出す
    14.9 文字列の操作
    14.10 まとめ
    14.11 練習問題

付録A bashのその他の機能
    A.1 組み込みコマンド
        A.1.1 builtinコマンドとcommandコマンド
        A.1.2 declareコマンド
        A.1.3 getoptsコマンド
        A.1.4 mapfileコマンド(readarrayコマンド)
        A.1.5 printfコマンド
        A.1.6 selectコマンド
        A.1.7 setコマンド
        A.1.8 trapコマンド
        A.1.9 waitコマンド
    A.2 ヒアストリング
    A.3 ブレース展開
        A.3.1 数字のパターン生成
        A.3.2 アルファベットのパターン生成
        A.3.3 文字列のパターン生成
    A.4 パラメーター展開
        A.4.1 変数の定義の有無に基づく展開
        A.4.2 部分文字列の取得
        A.4.3 大文字小文字の変換
        A.4.4 文字列の削除、置換
        A.4.5 変数名が指定した文字列で始まる変数の一覧取得
        A.4.6 変数の変換
    A.5 プロセス置換

付録B 練習問題の解答
    1章 bashのスクリプトとは何か、なぜそれが必要なのか?
    2章 インタラクティブなスクリプトの作成
    3章 条件の付加
    4章 コードスニペットの作成
    5章 代替構文
    6章 ループを使った反復処理
    7章 関数の作成
    8章 ストリームエディターの導入
    9章 Apacheバーチャルホストの自動化
    10章 AWKの基礎
    11章 正規表現
    12章 AWKを使ったログの集約
    13章 AWKを使ったlastlogの改良
    14章 bashスクリプトの代わりとしてのPython

参考文献
索引

コラム目次
    ヒアドキュメント
    case文での文字列のマッチング