Book description
Linuxスキルをレベルアップする実用的な実践書。本書では、コマンドを組み合わせて複雑なコマンドを作成することで、手動で行われているタスクを自動化するための方法を学びます。具体的には、パスワードの管理、大量のテストファイルの生成、テキストファイルを変換してデータベースのように扱う方法など、現実的なビジネスの問題を解決する方法を明らかにします。単なるテクニックではなく、背後で何が行われているかについても学べるので、Linuxのシェルに対する理解が深まります。それと同時に、Linuxコマンドに関するさらに上級レベルの知識とテクニックが身につきます。
Table of contents
- 大扉
- 原書大扉
- クレジット
- 賞賛の声
- 監訳者まえがき
- まえがき
- 第Ⅰ部 主要な概念
- 1章 コマンドの組み合わせ
- 1.1 入力、出力、パイプ
- コマンドとは何か?
- 1.2 コマンドラインに取り掛かるための6個のコマンド
- 1.2.1 コマンド① wc
- lsは、リダイレクトされると動作を変える
- 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 入力と出力のリダイレクト
- 標準エラー出力(stderr)とリダイレクト
- 2.6 引用符やエスケープを使って評価を無効にする
- 2.7 実行すべきプログラムの検索
- 2.8 環境と初期化ファイル(簡略版)
- 2.9 まとめ
- 3章 コマンドの再実行
- 3.1 コマンド履歴の表示
- 3.2 履歴からコマンドを呼び出す
- 3.2.1 履歴内のカーソル移動
- コマンド履歴に関するFAQ(よくある質問)
- 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.2.2.1 スタックにディレクトリーをプッシュする
- 4.2.2.2 ディレクトリースタックを表示する
- 4.2.2.3 スタックからディレクトリーをポップする
- 4.2.2.4 スタック内のディレクトリーを入れ替える
- 4.2.2.5 間違えてしまったcdをpushdに変える
- 4.2.2.6 スタックにさらに踏み込む
- 4.3 まとめ
- 第Ⅱ部 次のレベルへ
- 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.4.3.1 awkの要点
- 5.4.3.2 重複ファイルの検出パイプラインを改善する
- 5.4.3.3 sedの要点
- 5.4.3.4 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を使ってコマンドのリストを実行する
- findとxargsに関する安全性
- 7.4 プロセス制御に関するテクニック
- 7.4.1 テクニック⑨ コマンドのバックグラウンド実行
- 7.4.1.1 バックグラウンドでコマンドを起動する
- 7.4.1.2 コマンドを一時停止してバックグラウンドに送る
- 7.4.1.3 ジョブとジョブ制御
- 7.4.1.4 一般的なジョブ制御の操作
- 7.4.1.5 バックグラウンドでの出力と入力
- 7.4.1.6 バックグラウンド実行に関するヒント
- 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 まとめ
- 第Ⅲ部 追加のヒント
- 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 最後に
- 文字コードについて
- 著者紹介
- 奥付
Product information
- Title: Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー
- Author(s):
- Release date: November 2023
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784814400485
You might also like
book
Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築
本書は、Go言語で分散サービスを構築する方法を解説する書籍です。分散サービスの概要と基本を解説し、設計、開発、およびデプロイする方法をコードを使ってハンズオン形式で学びます。はじめに、ストレージレイヤの構築とデータ構造の定義を行い、gRPCを用いてAPIを定義したサービスをネットワーク上で動作させる方法を説明します。そしてサービスを分散させて、可用性、耐障害性、拡張性を実現する方法を解説し、本番環境のKubernetesへデプロイする方法を学びます。
book
ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化
現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。
book
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ。(本書「はじめに」より) コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。
book
リーダーの作法 ―ささいなことをていねいに
リーダーシップは一部の人だけに与えられる天職であり、複雑で膨大なリーダーシップの哲学を実践しなければならないと思われがちですが、そんなことはありません。ささいな行動を日々繰り返すことで、お互いを尊敬し、信頼し合うチームを作ることができます。 Netscapeでマネージャー、Appleでディレクター、Slackでエグゼクティブを経験した著者が、それぞれの立場のリーダーに必要な振る舞いを30のエッセイで紹介します。 1on1での傾聴、信頼関係の築き方、仕事の任せ方、メンバーのほめ方、チーム内のうわさ話への対応、組織の文化の作り方など、マネジメントの場面で出会うさまざまなテーマをとりあげ、リーダーとしての具体的な行動や考え方を解説します。