Efficient Linuxコマンドライン

―開発と自分に磨きをかけるLinuxのテクノロジー

[cover photo]
TOPICS
Linux
発行年月日
PRINT LENGTH
336
ISBN
978-4-8144-0048-5
原書
Efficient Linux at the Command Line
FORMAT
Print PDF EPUB
Ebook
2,640円
Ebookを購入する
Print
3,300円

Linuxスキルをレベルアップする実用的な実践書。本書では、コマンドを組み合わせて複雑なコマンドを作成することで、手動で行われているタスクを自動化するための方法を学びます。具体的には、パスワードの管理、大量のテストファイルの生成、テキストファイルを変換してデータベースのように扱う方法など、現実的なビジネスの問題を解決する方法を明らかにします。単なるテクニックではなく、背後で何が行われているかについても学べるので、Linuxのシェルに対する理解が深まります。それと同時に、Linuxコマンドに関するさらに上級レベルの知識とテクニックが身につきます。

関連ファイル

目次

賞賛の声
監訳者まえがき
まえがき

第I部 主要な概念 

1章 コマンドの組み合わせ
    1.1 入力、出力、パイプ
    1.2 コマンドラインに取り掛かるための6個のコマンド
        1.2.1 コマンド① wc
        1.2.2 コマンド② head
        1.2.3 コマンド③ cut
        1.2.4 コマンド④ grep
        1.2.5 コマンド⑤ sort
        1.2.6 コマンド⑥ uniq
    1.3 重複ファイルの検出
    1.4 まとめ

2章 シェルについての理解
    2.1 シェルの用語
    2.2 ファイル名に関するパターンマッチング
    2.3 変数の評価
        2.3.1 変数はどこから来るか
        2.3.2 変数と迷信
        2.3.3 パターンvs.変数
    2.4 エイリアスを使ってコマンドを短縮する
    2.5 入力と出力のリダイレクト
    2.6 引用符やエスケープを使って評価を無効にする
    2.7 実行すべきプログラムの検索
    2.8 環境と初期化ファイル(簡略版)
    2.9 まとめ

3章 コマンドの再実行
    3.1 コマンド履歴の表示
    3.2 履歴からコマンドを呼び出す
        3.2.1 履歴内のカーソル移動
        3.2.2 履歴展開
        3.2.3 (履歴展開を利用して)別のファイルの削除を避ける
        3.2.4 コマンド履歴のインクリメンタル検索
    3.3 コマンドライン編集
        3.3.1 コマンド内のカーソル移動
        3.3.2 キャレットを用いた履歴展開
        3.3.3 EmacsスタイルまたはVimスタイルのコマンドライン編集
    3.4 まとめ

4章 ファイルシステム内の移動
    4.1 特定のディレクトリーに効率よく移動する
        4.1.1 ホームディレクトリーにジャンプする
        4.1.2 タブ補完を使って素早く移動する
        4.1.3 エイリアスや変数を使って、頻繁にアクセスするディレクトリーにジャンプする
        4.1.4 CDPATHを使って、大きなファイルシステムを小さく感じさせる 
        4.1.5 素早い移動のためにホームディレクトリーを整理する
    4.2 効率よくディレクトリーに戻る
        4.2.1 「cd-」を使って、2つのディレクトリーを切り替える
        4.2.2 pushdとpopdを使って、多くのディレクトリーを切り替える
    4.3 まとめ

第II部 次のレベルへ 

5章 ツールボックスの拡張
    5.1 テキストの生成
        5.1.1 dateコマンド
        5.1.2 seqコマンド
        5.1.3 ブレース展開(シェルの機能)
        5.1.4 findコマンド
        5.1.5 yesコマンド
    5.2 テキストの抽出
        5.2.1 grepコマンドをさらに詳しく
        5.2.2 tailコマンド
        5.2.3 awkの{print}コマンド
    5.3 テキストの結合
        5.3.1 tacコマンド
        5.3.2 pasteコマンド
        5.3.3 diffコマンド
    5.4 テキストの変換
        5.4.1 trコマンド
        5.4.2 revコマンド
        5.4.3 awkおよびsedコマンド
    5.5 さらに大きなツールボックスに向けて
    5.6 まとめ

6章 親と子、および環境
    6.1 シェルは実行可能ファイルである
    6.2 親プロセスと子プロセス
    6.3 環境変数
        6.3.1 環境変数の作成
        6.3.2 迷信警報:「グローバル」変数
    6.4 子シェルとサブシェル
    6.5 環境を構成する
        6.5.1 構成ファイルの再読み込み
        6.5.2 環境との付き合い方
    6.6 まとめ

7章 コマンドを実行するための追加の 11の方法
    7.1 リストに関するテクニック
        7.1.1 テクニック① 条件付きリスト
        7.1.2 テクニック② 無条件リスト
    7.2 置換に関するテクニック
        7.2.1 テクニック③ コマンド置換
        7.2.2 テクニック④ プロセス置換
    7.3 文字列としてのコマンドに関するテクニック
        7.3.1 テクニック⑤ コマンドをbashに引数として渡す
        7.3.2 テクニック⑥ コマンドをbashにパイプで渡す
        7.3.3 テクニック⑦ sshを使って文字列をリモートで実行する
        7.3.4 テクニック⑧ xargsを使ってコマンドのリストを実行する
    7.4 プロセス制御に関するテクニック
        7.4.1 テクニック⑨ コマンドのバックグラウンド実行
        7.4.2 テクニック⑩ 明示的なサブシェル
        7.4.3 テクニック⑪ プロセス交換
    7.5 まとめ

8章 ブラッシュワンライナーの作成
    8.1 ブラッシュワンライナーを作成するための準備
        8.1.1 柔軟性を持つ
        8.1.2 どこを出発点とすべきかを考える
        8.1.3 テストツールを知る
    8.2 一連のファイル名の中にファイル名を挿入する
    8.3 対応するファイルのペアをチェックする
    8.4 ホームディレクトリーからCDPATHを生成する
    8.5 テストファイルを生成する
    8.6 空のファイルを生成する
    8.7 まとめ

9章 テキストファイルの活用
    9.1 最初の例:ファイルの検索
    9.2 ドメインの期限切れをチェックする
    9.3 市外局番のデータベースを作成する
    9.4 パスワードマネージャーの作成
    9.5 まとめ

第III部 追加のヒント 

10章 キーボードの効率的な活用
    10.1 ウィンドウの操作
        10.1.1 すぐに起動するシェルとブラウザー
        10.1.2 ワンショットウィンドウ
        10.1.3 ブラウザーのキーボードショートカット
        10.1.4 ウィンドウやデスクトップの切り替え
    10.2 コマンドラインからのWebアクセス
        10.2.1 コマンドラインからブラウザーウィンドウを開く
        10.2.2 curlとwgetを使ってHTMLを取得する
        10.2.3 HTML-XML-utilsを使ってHTMLを処理する
        10.2.4 テキストベースのブラウザーを使って、レンダリングされたWebコンテンツを取得する
    10.3 コマンドラインからのクリップボード制御
        10.3.1 セレクションをstdinやstdoutに接続する
        10.3.2 パスワードマネージャーの改善
    10.4 まとめ

11章 最後の時間節約術
    11.1 すぐに成果の出るテクニック
        11.1.1 lessからエディターにジャンプする
        11.1.2 特定の文字列を含んでいるファイルを編集する
        11.1.3 タイプミスを受け入れる
        11.1.4 空のファイルを素早く作成する
        11.1.5 ファイルを一度に1行ずつ処理する
        11.1.6 再帰処理をサポートしているコマンドを認識する
        11.1.7 manページを読む
    11.2 今後の学習について
        11.2.1 bashのmanページを読む
        11.2.2 cron、crontab、atについて学ぶ
        11.2.3 rsyncについて学ぶ
        11.2.4 別のスクリプト言語を学ぶ
        11.2.5 プログラミング以外の作業にmakeを使用する
        11.2.6 日常的なファイルにバージョン管理を適用する
    11.3 最後に

付録A Linuxの簡単な復習
    A.1 コマンド、引数、オプション
    A.2 ファイルシステム、ディレクトリー、パス
    A.3 ディレクトリー間の移動
    A.4 ファイルの作成と編集
    A.5 ファイルとディレクトリーの操作
    A.6 ファイルの表示
    A.7 ファイルのアクセス許可
    A.8 プロセス
    A.9 ドキュメントの表示
    A.10 シェルスクリプト
    A.11 スーパーユーザーとして実行する
    A.12 参考文献

付録B 他のシェルを使用する場合

付録C WSLを用いたシェルの利用
    C.1 Windowsでシェルが利用できると何が便利か?
    C.2 Linuxをインストールする
        C.2.1 systemd-binfmt.serviceの無効化
        C.2.2 binfmtの設定ファイル作成
    C.3 シェルからPowerShellを利用する
    C.4 PowerShellからシェルを利用する
    C.5 最後に

索引

コラム目次
    コマンドとは何か?
    lsは、リダイレクトされると動作を変える
    標準エラー出力(stderr)とリダイレクト
    コマンド履歴に関するFAQ(よくある質問)
    履歴展開を用いた、より強力な置換
    監訳補 正規表現で日本語を扱うときのヒント
    終了コードは成功または失敗を表す
    プロセス置換はどのように機能するか
    findとxargsに関する安全性
    どのテクニックによってサブシェルが作成されるか?
    監訳補 日本の市外局番を扱うときのヒント
    暗号化されたファイルを直接編集する
    長い正規表現の処理
    文字コードについて