Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー

Book description

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

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  賞賛の声
  5.  監訳者まえがき
  6.  まえがき
  7. 第Ⅰ部 主要な概念
  8.  1章 コマンドの組み合わせ
  9.   1.1 入力、出力、パイプ
  10.      コマンドとは何か?
  11.   1.2 コマンドラインに取り掛かるための6個のコマンド
  12.    1.2.1 コマンド① wc
  13.      lsは、リダイレクトされると動作を変える
  14.    1.2.2 コマンド② head
  15.    1.2.3 コマンド③ cut
  16.    1.2.4 コマンド④ grep
  17.    1.2.5 コマンド⑤ sort
  18.    1.2.6 コマンド⑥ uniq
  19.   1.3 重複ファイルの検出
  20.   1.4 まとめ
  21.  2章 シェルについての理解
  22.   2.1 シェルの用語
  23.   2.2 ファイル名に関するパターンマッチング
  24.   2.3 変数の評価
  25.    2.3.1 変数はどこから来るか
  26.    2.3.2 変数と迷信
  27.    2.3.3 パターン vs. 変数
  28.   2.4 エイリアスを使ってコマンドを短縮する
  29.   2.5 入力と出力のリダイレクト
  30.      標準エラー出力(stderr)とリダイレクト
  31.   2.6 引用符やエスケープを使って評価を無効にする
  32.   2.7 実行すべきプログラムの検索
  33.   2.8 環境と初期化ファイル(簡略版)
  34.   2.9 まとめ
  35.  3章 コマンドの再実行
  36.   3.1 コマンド履歴の表示
  37.   3.2 履歴からコマンドを呼び出す
  38.    3.2.1 履歴内のカーソル移動
  39.      コマンド履歴に関するFAQ(よくある質問)
  40.    3.2.2 履歴展開
  41.    3.2.3 (履歴展開を利用して)別のファイルの削除を避ける
  42.    3.2.4 コマンド履歴のインクリメンタル検索
  43.   3.3 コマンドライン編集
  44.    3.3.1 コマンド内のカーソル移動
  45.    3.3.2 キャレットを用いた履歴展開
  46.      履歴展開を用いた、より強力な置換
  47.    3.3.3 EmacsスタイルまたはVimスタイルのコマンドライン編集
  48.   3.4 まとめ
  49.  4章 ファイルシステム内の移動
  50.   4.1 特定のディレクトリーに効率よく移動する
  51.    4.1.1 ホームディレクトリーにジャンプする
  52.    4.1.2 タブ補完を使って素早く移動する
  53.    4.1.3 エイリアスや変数を使って、頻繁にアクセスするディレクトリーにジャンプする
  54.    4.1.4 CDPATHを使って、大きなファイルシステムを小さく感じさせる
  55.    4.1.5 素早い移動のためにホームディレクトリーを整理する
  56.   4.2 効率よくディレクトリーに戻る
  57.    4.2.1 「cd -」を使って、2つのディレクトリーを切り替える
  58.    4.2.2 pushdとpopdを使って、多くのディレクトリーを切り替える
  59.     4.2.2.1 スタックにディレクトリーをプッシュする
  60.     4.2.2.2 ディレクトリースタックを表示する
  61.     4.2.2.3 スタックからディレクトリーをポップする
  62.     4.2.2.4 スタック内のディレクトリーを入れ替える
  63.     4.2.2.5 間違えてしまったcdをpushdに変える
  64.     4.2.2.6 スタックにさらに踏み込む
  65.   4.3 まとめ
  66. 第Ⅱ部 次のレベルへ
  67.  5章 ツールボックスの拡張
  68.   5.1 テキストの生成
  69.    5.1.1 dateコマンド
  70.    5.1.2 seqコマンド
  71.    5.1.3 ブレース展開(シェルの機能)
  72.    5.1.4 findコマンド
  73.    5.1.5 yesコマンド
  74.   5.2 テキストの抽出
  75.    5.2.1 grepコマンドをさらに詳しく
  76.    5.2.2 tailコマンド
  77.    5.2.3 awkの{print}コマンド
  78.   5.3 テキストの結合
  79.    5.3.1 tacコマンド
  80.    5.3.2 pasteコマンド
  81.    5.3.3 diffコマンド
  82.   5.4 テキストの変換
  83.    5.4.1 trコマンド
  84.    5.4.2 revコマンド
  85.    5.4.3 awkおよびsedコマンド
  86.     5.4.3.1 awkの要点
  87.     5.4.3.2 重複ファイルの検出パイプラインを改善する
  88.     5.4.3.3 sedの要点
  89.     5.4.3.4 sedによる部分式のマッチ
  90.   5.5 さらに大きなツールボックスに向けて
  91.   5.6 まとめ
  92.      【監訳補】正規表現で日本語を扱うときのヒント
  93.  6章 親と子、および環境
  94.   6.1 シェルは実行可能ファイルである
  95.   6.2 親プロセスと子プロセス
  96.   6.3 環境変数
  97.    6.3.1 環境変数の作成
  98.    6.3.2 迷信警報:「グローバル」変数
  99.   6.4 子シェルとサブシェル
  100.   6.5 環境を構成する
  101.    6.5.1 構成ファイルの再読み込み
  102.    6.5.2 環境との付き合い方
  103.   6.6 まとめ
  104.  7章 コマンドを実行するための追加の11の方法
  105.   7.1 リストに関するテクニック
  106.    7.1.1 テクニック① 条件付きリスト
  107.      終了コードは成功または失敗を表す
  108.    7.1.2 テクニック② 無条件リスト
  109.   7.2 置換に関するテクニック
  110.    7.2.1 テクニック③ コマンド置換
  111.    7.2.2 テクニック④ プロセス置換
  112.      プロセス置換はどのように機能するか
  113.   7.3 文字列としてのコマンドに関するテクニック
  114.    7.3.1 テクニック⑤ コマンドをbashに引数として渡す
  115.    7.3.2 テクニック⑥ コマンドをbashにパイプで渡す
  116.    7.3.3 テクニック⑦ sshを使って文字列をリモートで実行する
  117.    7.3.4 テクニック⑧ xargsを使ってコマンドのリストを実行する
  118.      findとxargsに関する安全性
  119.   7.4 プロセス制御に関するテクニック
  120.    7.4.1 テクニック⑨ コマンドのバックグラウンド実行
  121.     7.4.1.1 バックグラウンドでコマンドを起動する
  122.     7.4.1.2 コマンドを一時停止してバックグラウンドに送る
  123.     7.4.1.3 ジョブとジョブ制御
  124.     7.4.1.4 一般的なジョブ制御の操作
  125.     7.4.1.5 バックグラウンドでの出力と入力
  126.     7.4.1.6 バックグラウンド実行に関するヒント
  127.    7.4.2 テクニック⑩ 明示的なサブシェル
  128.      どのテクニックによってサブシェルが作成されるか?
  129.    7.4.3 テクニック⑪ プロセス交換
  130.   7.5 まとめ
  131.  8章 ブラッシュワンライナーの作成
  132.   8.1 ブラッシュワンライナーを作成するための準備
  133.    8.1.1 柔軟性を持つ
  134.    8.1.2 どこを出発点とすべきかを考える
  135.    8.1.3 テストツールを知る
  136.   8.2 一連のファイル名の中にファイル名を挿入する
  137.   8.3 対応するファイルのペアをチェックする
  138.   8.4 ホームディレクトリーからCDPATHを生成する
  139.   8.5 テストファイルを生成する
  140.   8.6 空のファイルを生成する
  141.   8.7 まとめ
  142.  9章 テキストファイルの活用
  143.   9.1 最初の例:ファイルの検索
  144.   9.2 ドメインの期限切れをチェックする
  145.   9.3 市外局番のデータベースを作成する
  146.      【監訳補】日本の市外局番を扱うときのヒント
  147.   9.4 パスワードマネージャーの作成
  148.      暗号化されたファイルを直接編集する
  149.   9.5 まとめ
  150. 第Ⅲ部 追加のヒント
  151.  10章 キーボードの効率的な活用
  152.   10.1 ウィンドウの操作
  153.    10.1.1 すぐに起動するシェルとブラウザー
  154.    10.1.2 ワンショットウィンドウ
  155.    10.1.3 ブラウザーのキーボードショートカット
  156.    10.1.4 ウィンドウやデスクトップの切り替え
  157.   10.2 コマンドラインからのWebアクセス
  158.    10.2.1 コマンドラインからブラウザーウィンドウを開く
  159.    10.2.2 curlとwgetを使ってHTMLを取得する
  160.    10.2.3 HTML-XML-utilsを使ってHTMLを処理する
  161.      長い正規表現の処理
  162.    10.2.4 テキストベースのブラウザーを使って、レンダリングされたWebコンテンツを取得する
  163.   10.3 コマンドラインからのクリップボード制御
  164.    10.3.1 セレクションをstdinやstdoutに接続する
  165.    10.3.2 パスワードマネージャーの改善
  166.   10.4 まとめ
  167.  11章 最後の時間節約術
  168.   11.1 すぐに成果の出るテクニック
  169.    11.1.1 lessからエディターにジャンプする
  170.    11.1.2 特定の文字列を含んでいるファイルを編集する
  171.    11.1.3 タイプミスを受け入れる
  172.    11.1.4 空のファイルを素早く作成する
  173.    11.1.5 ファイルを一度に1行ずつ処理する
  174.    11.1.6 再帰処理をサポートしているコマンドを認識する
  175.    11.1.7 manページを読む
  176.   11.2 今後の学習について
  177.    11.2.1 bashのmanページを読む
  178.    11.2.2 cron、crontab、atについて学ぶ
  179.    11.2.3 rsyncについて学ぶ
  180.    11.2.4 別のスクリプト言語を学ぶ
  181.    11.2.5 プログラミング以外の作業にmakeを使用する
  182.    11.2.6 日常的なファイルにバージョン管理を適用する
  183.   11.3 最後に
  184.  付録A Linuxの簡単な復習
  185.   A.1 コマンド、引数、オプション
  186.   A.2 ファイルシステム、ディレクトリー、パス
  187.   A.3 ディレクトリー間の移動
  188.   A.4 ファイルの作成と編集
  189.   A.5 ファイルとディレクトリーの操作
  190.   A.6 ファイルの表示
  191.   A.7 ファイルのアクセス許可
  192.   A.8 プロセス
  193.   A.9 ドキュメントの表示
  194.   A.10 シェルスクリプト
  195.   A.11 スーパーユーザーとして実行する
  196.   A.12 参考文献
  197.  付録B 他のシェルを使用する場合
  198.  付録C WSLを用いたシェルの利用
  199.   C.1 Windowsでシェルが利用できると何が便利か?
  200.   C.2 Linuxをインストールする
  201.    C.2.1 systemd-binfmt.serviceの無効化
  202.    C.2.2 binfmtの設定ファイル作成
  203.   C.3 シェルからPowerShellを利用する
  204.   C.4 PowerShellからシェルを利用する
  205.   C.5 最後に
  206.      文字コードについて
  207.  著者紹介
  208.  奥付

Product information

  • Title: Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー
  • Author(s): Daniel J. Barrett, 大嶋 真一, 原 隆文
  • Release date: November 2023
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784814400485

You might also like

book

Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築

by Travis Jeffery, 柴田 芳樹

本書は、Go言語で分散サービスを構築する方法を解説する書籍です。分散サービスの概要と基本を解説し、設計、開発、およびデプロイする方法をコードを使ってハンズオン形式で学びます。はじめに、ストレージレイヤの構築とデータ構造の定義を行い、gRPCを用いてAPIを定義したサービスをネットワーク上で動作させる方法を説明します。そしてサービスを分散させて、可用性、耐障害性、拡張性を実現する方法を解説し、本番環境のKubernetesへデプロイする方法を学びます。

book

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

by Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。

book

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

by Dustin Boswell, Trevor Foucher, 角 征典

美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ。(本書「はじめに」より) コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。

book

リーダーの作法 ―ささいなことをていねいに

by Michael Lopp, 和智 右桂

リーダーシップは一部の人だけに与えられる天職であり、複雑で膨大なリーダーシップの哲学を実践しなければならないと思われがちですが、そんなことはありません。ささいな行動を日々繰り返すことで、お互いを尊敬し、信頼し合うチームを作ることができます。 Netscapeでマネージャー、Appleでディレクター、Slackでエグゼクティブを経験した著者が、それぞれの立場のリーダーに必要な振る舞いを30のエッセイで紹介します。 1on1での傾聴、信頼関係の築き方、仕事の任せ方、メンバーのほめ方、チーム内のうわさ話への対応、組織の文化の作り方など、マネジメントの場面で出会うさまざまなテーマをとりあげ、リーダーとしての具体的な行動や考え方を解説します。