Unixパワーツール 第3版

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
1400
ISBN
4-87311-142-0
原書
Unix Power Tools, 3rd Edition
FORMAT
Print
13,200円
この商品は品切れ再入荷未定です

本書は、1993年の初版発行以来、世界中のUnixユーザから高い評価を得てきた世界的ベストセラーの日本語版です。数百点ものティップスやスクリプト、ツール、設定のコツなど、いずれもUnixコミュニティを中心に長年に渡って培われてきた、ありとあらゆる情報を収録。LinuxやFreeBSD、Mac OS Xなどにも対応し、最新の情報も網羅しています。また、圧倒的なボリュームの一方で、実用的な「拾い読み」スタイルの構成も本書の大きな特徴です。すべての項目は読み切りサイズにまとめられ、必要に応じて手軽に参照できます。さらに、本文中の関連項目をたどれば、限りないUnixワールドへの読書散歩に出ることも可能です。まさにUnixユーザによるUnixユーザのための技と知識の集大成と呼ぶにふさわしい1冊です。

目次

本書の使い方
序文

第・部 基本的なUnix環境

1 章 はじめに
    1.1 Unixの優れている点とは?
    1.2 大きな力を手に入れる
    1.3 Unixのコア
    1.4 Unixとのコミュニケーション
    1.5 連携して動作するよう設計されたプログラム
    1.6 いろいろなシェル
    1.7 どのシェルを使っているのか
    1.8 誰でもシェルでプログラミングができる
    1.9 内部コマンドと外部コマンド
    1.10 カーネルとデーモン
    1.11 ファイル名
    1.12 ファイル名の拡張子
    1.13 ワイルドカード
    1.14 ツリー構造のファイルシステム
    1.15 ホームディレクトリ
    1.16 パス名の構成
    1.17 ファイルのアクセス権限(パーミッション)
    1.18 スーパーユーザ(root)
    1.19 ファイルがファイルではないとき
    1.20 スクリプト
    1.21 Unixにおけるネットワークと通信
    1.22 X Window System

2 章 ヘルプの活用
    2.1 manコマンド
    2.2 whatisによるコマンドの一行解説の表示
    2.3 whereisによるコマンドの保存場所の検出
    2.4 オンラインマニュアルページの検索
    2.5 使用しているUnixシステムの名前
    2.6 使用しているコマンドのバージョン
    2.7 使用しているtty
    2.8 システムにログインしているユーザ
    2.9 infoコマンド

第・部 環境のカスタマイズ

3 章 Unixシェルの設定
    3.1 ログイン時のシステムの動作
    3.2 Mac OS Xのターミナルアプリケーション
    3.3 シェル設定ファイル
    3.4 ログインシェルと対話型シェル
    3.5 シェル設定ファイルの内容
    3.6 設定ファイルを変更するときのヒント
    3.7 シェル設定ファイルにおける絶対パス名の使用
    3.8 設定ファイルの読み込み動作の変更
    3.9 set promptのテストに関するヒント
    3.10 異なる端末の自動設定
    3.11 端末の設定:TERMのテスト
    3.12 端末の設定:リモートホスト名とXディスプレイのテスト
    3.13 端末の設定:ポートのテスト
    3.14 端末の設定:環境変数のテスト
    3.15 端末の設定:端末テーブルの検索
    3.16 端末の設定:ウィンドウサイズのテスト
    3.17 端末の設定:ウィンドウ名の設定とテスト
    3.18 ホストごとの設定用の.cshrc.$HOSTファイル
    3.19 「ログイン」シェルの作成
    3.20 RCファイル
    3.21 独自のマニュアルページの簡単な作成方法
    3.22 -manマクロを使用した単純なマニュアルページの作成

4 章 プロンプトのカスタマイズ
    4.1 プロンプトの設定の基礎
    4.2 静的プロンプト
    4.3 動的プロンプト
    4.4 動的プロンプトのシミュレーション
    4.5 vi、rshなどにおけるCシェルのプロンプトの問題
    4.6 組み込みコマンドによるプロンプトの設定の高速化
    4.7 マルチラインシェルプロンプト
    4.8 ウィンドウタイトルまたはステータスバーへの表示
    4.9 初心者向けメニュープロンプト
    4.10 シェルプロンプトの強調と色指定
    4.11 右側に表示されるプロンプト
    4.12 $SHLVLによるサブシェルレベルの表示
    4.13 空白のシェルプロンプトの効用
    4.14 プロンプトにおけるdirs:$cwdの改善策
    4.15 外部コマンドからのシグナルによる変数の設定
    4.16 プロンプト前、実行前、および反復コマンド
    4.17 ログアウト時のコマンドの実行
    4.18 Bourne/Kornシェルにおけるログアウト時のコマンドの実行
    4.19 Bourneシェルにおける意図しないログアウトの防止

5 章 端末、xterm、およびX Windowの有効活用
    5.1 端末について
    5.2 端末データベースの役割
    5.3 ログイン時の端末タイプの設定
    5.4 qtermによる端末タイプの問い合わせ
    5.5 resizeによるxtermのサイズの問い合わせ
    5.6 ログイン時に端末がハングする場合のチェック項目
    5.7 sttyによる端末の設定の確認
    5.8 制御文字の設定
    5.9 xtermおよびその類似プログラムの操作
    5.10 xtermとrxvtによるログインシェルの実行
    5.11 スクロールバーの操作
    5.12 保持される行数の設定
    5.13 xtermにおける単純なコピーと貼り付け
    5.14 選択の対象としての単語の定義
    5.15 タイトルバーおよびアイコンのテキストの設定
    5.16 フォントを変更する単純な方法
    5.17 xtermのメニュー
    5.18 フォントの動的な変更
    5.19 xclipboardの操作
    5.20 大きな選択部分の問題
    5.21 ウィンドウ間でのコピーと貼り付けのヒント
    5.22 xterm -eによる単一のコマンドの実行
    5.23 xterm -eの引数におけるシングルクォート

6 章 X環境のカスタマイズ
    6.1 xmodmapによるキーとボタンの定義
    6.2 xevによるkeysymマッピングの確認
    6.3 Xリソースの構文
    6.4 Xのイベントトランスレーション
    6.5 Xリソースの設定の概要
    6.6 -xrmオプションによるリソースの設定
    6.7 -nameオプションのリソースに対する効果
    6.8 xrdbによるリソースの設定
    6.9 appresによる現在のリソースの表示
    6.10 リモートXクライアントの実行

第・部 ファイルおよびディレクトリの操作

7 章 ディレクトリの仕組み
    7.1 ファイルの整理
    7.2 さまざまなホームディレクトリ
    7.3 ディレクトリへのアクセス権
    7.4 プログラムやスクリプト用のbinディレクトリ
    7.5 プライベートに使うディレクトリ
    7.6 ファイルの命名
    7.7 ディレクトリをたくさん作る
    7.8 手早くディレクトリを作成する

8 章 ディレクトリとファイル
    8.1 findコマンドは次章で
    8.2 Unixファイルの3つの日時
    8.3 ls -tとls -uで新しいファイル・古いファイルを見つける
    8.4 ls -Rですべてのサブディレクトリを一覧表示する
    8.5 ls -dでディレクトリ自体を表示する
    8.6 lsのカラー表示
    8.7 GNU版のlsの特徴
    8.8 最近変更されたファイルを一覧表示するcshのエイリアス
    8.9 隠しファイルをls -Aおよびls -aで表示する
    8.10 便利なエイリアス
    8.11 ファイルにアクセスできないときは、ファイル名にスペースが
入っていないか確かめる
    8.12 ファイル名の中の非表示文字を表示する
    8.13 種類ごとにファイルの数をカウントする
    8.14 ファイルの年齢ごとのサイズを一覧表示する
    8.15 newer:最新のファイルの名前を表示する
    8.16 oldlinks:途切れたシンボリックリンクを検出する
    8.17 一意のファイル名を自動的に取得する

9 章 findによるファイルの検索
    9.1 findの使い方
    9.2 ディレクトリツリーを深く探索する
    9.3 -printを忘れるな
    9.4 特定の名前のファイルを探す
    9.5 昔のファイルを探す
    9.6 findの検索演算子を究める
    9.7 findにおける時刻
    9.8 ファイル時刻の精密な比較の方法
    9.9 見つかったものに対してコマンドを実行する
    9.10 -execを使ってカスタムテストを作る
    9.11 -execによるカスタムテストの応用例
    9.12 ひとつのコマンドでさまざまなものを見つける
    9.13 タイプによるファイルの検索
    9.14 サイズによるファイルの検索
    9.15 アクセス権限によるファイルの検索
    9.16 所有者やグループによる検索
    9.17 ディレクトリツリーの複製を作る
    9.18 高速findデータベースを使う
    9.19 高速findデータベースにワイルドカードを使う
    9.20 findデータベースを使った高速な検索
    9.21 ディレクトリツリーをgrepする
    9.22 lookfor:特定の文字列を中に含むファイルを探す
    9.23 シェル配列を使ってディレクトリをブラウズする
    9.24 ファイルへのハードリンクを見つけだす
    9.25 -pruneによってサブディレクトリを除外する
    9.26 カレントディレクトリ内での高速find
    9.27 ツリーの一部をスキップする
    9.28 ネットワークファイルシステムの探索を回避する

10 章 ファイルのリンク、リネーム、コピー
    10.1 ファイルの移動やコピーで何が問題になるのか
    10.2 ディレクトリの中には本当は何があるのか
    10.3 複数の名前を持つファイル
    10.4 リンク詳説
    10.5 リンクの作成と削除
    10.6 無効なシンボリックリンク
    10.7 ディレクトリのリンク
    10.8 シンボリックリンクが指す本当のファイル名を表示する
    10.9 複数ファイルのリネーム、コピー、比較
    10.10 一連のファイルをインタラクティブにリネームする
    10.11 一連のファイルをインタラクティブにリネームする別の方法
    10.12 cp -rによるディレクトリツリーのコピー
    10.13 tarとパイプによるディレクトリツリーのコピー

11 章 ファイルの比較
    11.1 差分をdiffでチェックする
    11.2 3つのファイルをdiff3で比較する
    11.3 コンテキストdiff
    11.4 sdiff:横並びのdiff
    11.5 sdiffで一方を選択する
    11.6 diffにおけるタブストップの問題
    11.7 cmpとdiff
    11.8 commを使って2つのファイルを比較する
    11.9 commからの出力を読みやすくする
    11.10 makeはプログラマだけのものにあらず
    11.11 makeのその他の使い方

12 章 ファイルの内容を見る
    12.1 この章の概要
    12.2 catの用途と使い方
    12.3 moreよりもless
    12.4 cat -vやod -cを使って非表示文字を表示させる
    12.5 空白文字を調べる
    12.6 ファイルの種類を調べる
    12.7 余分の空行を圧縮する
    12.8 tail:ファイルの末尾部分を表示させる
    12.9 tailを細かく制御する
    12.10 成長しつつあるファイルの内容を見る
    12.11 GNUのtailによるファイルの追跡
    12.12 ファイルの先頭部分を表示させる
    12.13 行番号を付加する

13 章 ファイルの中を検索する
    13.1 grepのさまざまなバージョン
    13.2 grepによるテキスト検索
    13.3 マッチしないテキストを探す
    13.4 egrepによる拡張検索
    13.5 パターンのリストに対してgrepする
    13.6 agrep:近似grep
    13.7 rcsgrepでRCSファイルを検索する
    13.8 GNUのコンテキストgrep
    13.9 sedによる複数行コンテキストgrep
    13.10 複合的な検索
    13.11 検索範囲を限定する
    13.12 大文字小文字を区別しない検索
    13.13 カラム位置を指定して文字を検索する
    13.14 lookによる高速検索とスペルチェック
    13.15 バイナリファイル中の語を見つけだす
    13.16 強調表示のgrep

14 章 ファイルの削除
    14.1 生成と削除のサイクル
    14.2 iノード:Unixがファイルを管理する仕組み
    14.3 rmの危険性
    14.4 rmを安全にするためのテクニック
    14.5 yesコマンドを使って「Yes」か「No」を応答し続ける
    14.6 あるものは削除し、あるものは残す
    14.7 インタラクティブにファイルを削除する高速な方法
    14.8 ディレクトリ中のファイルを保護する
    14.9 安全な削除:賛否両論
    14.10 rm -f:偏りのある削除
    14.11 奇妙な名前のファイルを削除する
    14.12 ワイルドカードを使って奇妙な名前のファイルを削除する
    14.13 ハイフン(-)で始まるファイル名の扱い
    14.14 unlinkを使って奇妙な名前のファイルを削除する
    14.15 iノード番号を使って奇妙な名前のファイルを削除する
    14.16 ディレクトリの削除に伴う問題
    14.17 使われていないファイルを削除する
    14.18 1つを除くすべてのファイルを削除する
    14.19 findを使って不要なファイルを一掃する

15 章 ディスクスペースの最適化
    15.1 ディスクスペースは安い
    15.2 ファイルを削除する代わりにファイルを空にする
    15.3 ログファイルやメールボックス用のスペースを節約する
    15.4 リンクを使ってスペースを節約する
    15.5 ファイルサイズを制限する
    15.6 ファイルを圧縮してスペースを節約する
    15.7 スペースの節約:ディレクトリツリーをtarして圧縮する
    15.8 ディスクスペースはどれだけある?
    15.9 ディレクトリツリーの圧縮:細かな調整
    15.10 stripによって実行可能ファイル中のスペースを節約する
    15.11 ディスククォータ

第・部 テキスト編集の基礎

16 章 スペルチェック、ワードカウント、およびテキスト解析
    16.1 Unixのspellコマンド
    16.2 ispellによる対話式のスペルチェック
    16.3 スペルチェッカによるスペルの確認
    16.4 spellの内部
    16.5 ispell辞書への単語の追加
    16.6 wcコマンドによる行数、単語数、文字数の計算
    16.7 Find a a Double Word(重複した単語の検出)
    16.8 テキストの構文解析
    16.9 単語の抽出

17 章 viエディタの機能と活用法
    17.1 viエディタに重きを置く理由
    17.2 本章の学習内容
    17.3 viによる複数ファイルの編集
    17.4 ファイル間の編集作業
    17.5 viのローカル設定
    17.6 バッファを使ったテキストの移動とコピー
    17.7 番号付きバッファによる削除内容の復元
    17.8 検索パターンとグローバルコマンドの使用
    17.9 置換の確認
    17.10 バッファ内容のファイル化
    17.11 ファイルの部分的な保存
    17.12 既存ファイルへの追加
    17.13 パターンによるテキストブロックの移動
    17.14 パターンマッチとグローバルコマンド
    17.15 出現頻度の計算、循環検索の停止
    17.16 大文字と小文字の変換コマンド
    17.17 ファイルごとの設定ファイルの作成
    17.18 Unixコマンドを使ったテキスト処理
    17.19 viのファイル修復機能とネットワークファイルシステム
    17.20 vi -rによる復旧作業の注意点
    17.21 シェルエスケープ:外部のUnixコマンドの実行
    17.22 viの複合検索
    17.23 単語の省略形
    17.24 コマンドの省略形
    17.25 省略形による入力ミスの修正
    17.26 行コマンドと文字コマンド
    17.27 一時保存領域の確保
    17.28 行の整形
    17.29 位置のマークとアンドゥ機能
    17.30 .exrcファイルによるviの設定

18 章 viエディタのカスタムコマンドの作成
    18.1 入力作業の簡素化
    18.2 viのマップコマンドによる作業の効率化
    18.3 マッピングによる不都合
    18.4 viの@機能
    18.5 viを実行するウィンドウにペーストするキーマップ
    18.6 キーがexに解釈されないように保護する方法
    18.7 繰返しの多い編集用のマッピング
    18.8 キーマップを使ったその他の例
    18.9 キーマップを繰り返し実行する方法
    18.10 Caps Lockを使わずに大文字を入力する方法
    18.11 方向キーを使わずに、入力モードでカーソルを移動する
    18.12 noremapオプションによる機能の引き継ぎ
    18.13 長い行を分割するマクロ
    18.14 ファイルバックアップマクロ

19 章 GNU Emacs
    19.1 Emacs:もう1つのエディタ
    19.2 Emacsの機能:詳細リスト
    19.3 カスタマイズ方法およびカスタマイズを無効にする方法
    19.4 バックアップファイルと自動保存ファイル
    19.5 Emacsの挿入モードと上書きモード
    19.6 コマンドの補完機能
    19.7 著者が勧める時間節約法
    19.8 合理的な検索
    19.9 PWD環境変数の問題とその解決法
    19.10 バイナリ文字の挿入
    19.11 省略形モードの利用
    19.12 Emacsハックプログラム用ディレクトリ
    19.13 他愛もない気晴らし

20 章 バッチ編集
    20.1 ラインエディタが絶滅しない理由
    20.2 編集スクリプトの作成
    20.3 行アドレス指定
    20.4 有用なexコマンド
    20.5 viエディタでの編集スクリプトの実行
    20.6 大量ファイルの一括変更
    20.7 edとexでのバッチ編集の典型例
    20.8 バッチ編集の注意事項:エディタの処理能力
    20.9 patch:ファイルの一般的な更新手段
    20.10 クイックリファレンス:awk
    20.11 さまざまなバージョンのawk

21 章 さまざまな編集プログラム
    21.1 編集プログラムのまとめ
    21.2 fmtによるテキストの整形
    21.3 fmtの代用スクリプト
    21.4 プログラムのコメントブロックの整理
    21.5 beheadによるメール/ニュースヘッダの削除
    21.6 ddによるファイルの削除
    21.7 offset:テキストのインデント
    21.8 行の中央揃え
    21.9 固定位置でのファイルの分割:split
    21.10 文脈によるファイルの分割:csplit
    21.11 trによる文字の変換と削除
    21.12 バイナリファイルからASCIIファイルへのエンコーディング
    21.13 ddによるテキスト変換
    21.14 カラムまたはフィールドの切り出し
    21.15 prを使用してテキストをカラム形式にする
    21.16 columnによるカラムの自動形成
    21.17 不揃いのカラムの整形
    21.18 カラム形式によるデータの結合
    21.19 joinによる行の結合
    21.20 重複行の抽出と削除
    21.21 テキストの回転

22 章 ソート処理
    22.1 順序付け
    22.2 ソートフィールド:sortコマンドの機能
    22.3 フィールド区切り文字の変更
    22.4 空白文字を使ったフィールド区切り
    22.5 アルファベット順のソートと数値順のソート
    22.6 sortに関するさまざまなヒント
    22.7 lensort:長さによる行のソート
    22.8 姓による人名リストのソート

第・部 プロセスとカーネル

23 章 ジョブ制御
    23.1 ジョブ制御の概要
    23.2 ジョブ制御の基本原理
    23.3 ジョブの効率的な使用法
    23.4 ジョブ制御に関する注意事項
    23.5 予想と異なる「カレントジョブ」
    23.6 ジョブ制御とautowrite:時間を節約する有効な方法
    23.7 過負荷なシステムにおけるジョブの一時停止
    23.8 ジョブの状態変化の通知
    23.9 stty tostopによるバックグラウンド出力の停止
    23.10 nohup
    23.11 ジョブテーブルからプロセスを削除する
    23.12 Linuxの仮想コンソール
    23.13 リモートログインセッションの停止

24 章 プロセスの起動、一時停止、および強制終了
    24.1 本章の内容
    24.2 forkとexec
    24.3 プロセスの管理:全般的概念
    24.4 サブシェル
    24.5 psコマンド
    24.6 制御端末
    24.7 プロセスの追跡
    24.8 psがコマンドを丸かっこで囲んで出力する理由
    24.9 /procファイルシステム
    24.10 シグナルの概要
    24.11 フォアグラウンドジョブの強制終了
    24.12 killによるプロセスの破棄
    24.13 プリンタキューの監視:再起動可能なデーモンシェルスクリプト
    24.14 すべてのプロセスの強制終了
    24.15 プロセス名によるプロセスの強制終了
    24.16 対話によるプロセスの強制終了
    24.17 制御不能なプロセスの停止:STOPシグナルの使用
    24.18 強制終了されないプロセスの除去
    24.19 ゾンビプロセスを強制終了できない理由
    24.20 ウィンドウを生成するプロセスの連鎖
    24.21 シェルを持たない端末ウィンドウ
    24.22 プロセスの強制終了によるウィンドウの終了

25 章 遅延実行
    25.1 ソフトウェアロボットの構築
    25.2 プログラムの定期的実行:cron機能
    25.3 crontabエントリの追加
    25.4 cronエントリに標準入力を含める
    25.5 atコマンド
    25.6 atのメール送信を停止する
    25.7 ジョブの確認と削除
    25.8 atおよびcronジョブの同時実行の回避
    25.9 実行の中断と延期:sleep

26 章 システム性能とプロファイリング
    26.1 時間的調整の重要性
    26.2 プログラムの経過時間の表示
    26.3 実行中のコマンドとその実行時間の表示
    26.4 システム負荷の観察:uptime
    26.5 niceによる優先順位の変更
    26.6 注意事項
    26.7 実行中のジョブのnice値を変更する

第・部 スクリプト       653

27 章 シェルによるコマンドの解釈
    27.1 シェルの動作
    27.2 シェルによる外部コマンドの実行
    27.3 シェルとは何か
    27.4 コマンドの評価と誤操作によるファイルの上書き
    27.5 個々のコマンドライン引数の出力
    27.6 シェルによるコマンドの検索の制御
    27.7 エイリアスの中のワイルドカード
    27.8 evalによるコマンドの再評価
    27.9 bashによって使用されるコマンドの選択
    27.10 Cシェルによって使用されるコマンドの選択
    27.11 リダイレクトの処理順序
    27.12 Bourneシェルのクォート機能
    27.13 BourneシェルとCシェルのクォート機能の違い
    27.14 ファイル名に含まれる特殊文字のクォート
    27.15 verboseとechoの設定によるクォートの表示
    27.16 ヒアドキュメント
    27.17 「特殊」文字と演算子
    27.18 必要なバックスラッシュの数

28 章 コマンドライン作業の効率化
    28.1 Unixのコマンドラインの特徴
    28.2 CTRL-rによるコマンドラインの再表示
    28.3 ワイルドカードによるファイルの作成
    28.4 { }による文字列の構築
    28.5 文字列編集(コロン)演算子
    28.6 自動補完
    28.7 ファイル名の補完に不要なファイルとのマッチの防止
    28.8 コマンドの繰り返し
    28.9 コマンドのループと処理内容の変化
    28.10 コピーアンドペーストによるコマンドの繰り返し
    28.11 一定時間ごとのコマンドの繰り返し
    28.12 マルチラインコマンドとセカンダリプロンプト
    28.13 ヒアドキュメントの例その1:フォーマットされていない形式の手紙
    28.14 コマンド置換
    28.15 一時ファイルを利用した複数のファイルの処理
    28.16 コマンドの区切り文字としてのセミコロン
    28.17 引数が多すぎる場合の処理方法
    28.18 Expect

29 章 カスタムコマンド
    29.1 カスタムコマンドの作成
    29.2 シェルのエイリアスの紹介
    29.3 コマンドライン引数を受け取るCシェルのエイリアス
    29.4 Bourne系のエイリアスの設定と削除
    29.5 Kornシェルのエイリアス
    29.6 zshのエイリアス
    29.7 読み込んで実行できるスクリプト
    29.8 Cシェルにおけるエイリアスのループ防止
    29.9 Cシェルのエイリアスでのif-then-elseの使用方法
    29.10 makealiasとquoteによるcshのエイリアスへのクォートの挿入
    29.11 シェル関数の基本
    29.12 シェル関数の特性
    29.13 シェル関数の伝播
    29.14 Bourneシェルの関数とエイリアスのシミュレート

30 章 ヒストリの使用
    30.1 歴史(ヒストリ)の教訓
    30.2 ヒストリの概要
    30.3 私のお気に入りの!$
    30.4 私のお気に入りの!:n*
    30.5 私のお気に入りの^^
    30.6 ワイルドカードの代わりに!$を使用する安全性
    30.7 番号によるヒストリの操作
    30.8 ヒストリ置換
    30.9 連続したコマンドの反復
    30.10 同じファイルに対する複数のコマンドの実行
    30.11 :pによるヒストリの事前チェック
    30.12 ログアウト時のヒストリの保存
    30.13 シェルの間でのヒストリの受け渡し
    30.14 シェルのコマンドライン編集機能
    30.15 histcharsによるヒストリ文字列の変更
    30.16 ヒストリ文字列の変更に代わる方法

31 章 ディレクトリ間の移動をすばやく行う方法
    31.1 ファイルシステム内の移動
    31.2 相対パス名と絶対パス名の使用方法
    31.3 カレントディレクトリの利点
    31.4 Unixがカレントディレクトリを検出する方法
    31.5 cdpathによるディレクトリ変更の時間の節約
    31.6 breakとcontinueによるループの制御
    31.7 シェルのpushdおよびpopdコマンド
    31.8 pushdの便利なエイリアス
    31.9 エイリアスによるcdコマンドの簡略化
    31.10 ディレクトリの頭文字を使用するcd
    31.11 ホームディレクトリをすばやく検出する方法
    31.12 シェル変数によるカレントディレクトリの保存
    31.13 ディレクトリの出入りに伴う自動設定

32 章 正規表現(パターンマッチ)
    32.1 コンピュータの世界の表現
    32.2 正規表現とワイルドカードの違い
    32.3 さまざまな表現の理解
    32.4 正規表現におけるメタ文字の使用
    32.5 正規表現:アンカー文字の^および$
    32.6 正規表現:文字セットによる文字とのマッチ
    32.7 正規表現:.(ドット)による任意の文字とのマッチ
    32.8 正規表現:[...]による文字の範囲の指定
    32.9 正規表現:文字セットにおける例外
    32.10 正規表現:*による文字セットの繰り返し
    32.11 正規表現:?{および?}による特定の個数の文字セットとのマッチ
    32.12 正規表現:?<および?>による単語とのマッチ
    32.13 正規表現:?(、?)、および?1によるパターンの記憶
    32.14 正規表現:潜在的な問題
    32.15 拡張正規表現
    32.16 正しい正規表現の記述方法
    32.17 正規表現がマッチする範囲
    32.18 マッチする範囲の制限
    32.19 さまざまな正規表現の使用例
    32.20 プログラムごとに使用できるメタ文字
    32.21 パターンマッチのクイックリファレンスと例

33 章 ワイルドカード
    33.1 ファイル名のワイルドカード
    33.2 ファイル名に関するワイルドカードの概要
    33.3 誰がワイルドカードを処理するのか
    33.4 ワイルドカードがマッチしなかった場合
    33.5 ワイルドカードをパス名で使うべきでない場合
    33.6 マッチするファイルの一覧をgrep -lで取得する
    33.7 マッチしないファイルの一覧を取得する
    33.8 nom:ワイルドカードにマッチしないファイルを一覧表示する

34 章 ストリームエディタsed
    34.1 sedの退屈な^H^H^H話
    34.2 sedについて知っておくべき2つのこと
    34.3 sedの起動
    34.4 sedスクリプトのテストと行使:checksedとrunsed
    34.5 sedのアドレス
    34.6 スクリプト中でのコマンドの順序
    34.7 一度に1つずつ
    34.8 正規表現のデリミタ
    34.9 sedの置換における改行の扱い
    34.10 置換文字列から検索文字列を参照する
    34.11 検索文字列の部分部分を参照する
    34.12 検索置換:複数の中の1つにマッチさせる
    34.13 テキストの変換
    34.14 ホールドスペース:保管用バッファ
    34.15 行の一部を変換する
    34.16 行の境界を越えて編集を行う
    34.17 慎重な代書人
    34.18 行をまたがるパターンを検索する
    34.19 複数行対応の削除
    34.20 編集しない行を除外する
    34.21 sedのテストコマンド
    34.22 sed終了コマンドの利用
    34.23 sed終了コマンドの危険性
    34.24 シェルスクリプトでsedの改行、クォート、バックスラッシュを扱う

35 章 初心者のためのシェルプログラミング
    35.1 簡単なシェルプログラムを書く
    35.2 シェルプログラミングは必須科目
    35.3 環境変数
    35.4 親子関係
    35.5 定義済みの環境変数
    35.6 PATH環境変数
    35.7 PATHとpath
    35.8 DISPLAY環境変数
    35.9 シェル変数
    35.10 Bourneシェルのcaseによって文字列を照合する
    35.11 case文におけるパターンマッチ
    35.12 Unixプロセスの終了ステータス
    35.13 終了ステータスをif文でチェックする
    35.14 処理の成功をチェックする
    35.15 終了ステータスをチェックするループ
    35.16 シェル(スクリプト)の終了ステータスを設定する
    35.17 割り込みによる終了をトラップする
    35.18 read:キーボードからの入力を読み込む
    35.19 awkやsedなどのためのシェルスクリプトのラッパ
    35.20 シェルスクリプト中でコマンドライン引数を処理する
    35.21 コマンドライン引数をforループで処理する
    35.22 whileとshiftで引数を処理する
    35.23 ループの制御:breakとcontinue
    35.24 コマンドラインの標準的な解析
    35.25 Bourneシェルのsetコマンド
    35.26 test:ファイルや文字列のチェック
    35.27 新しいコマンドの名前を選ぶ
    35.28 プログラム名の検出と複数の名前
    35.29 sourceコマンドおよび.(ドット)を使ってファイルを読み込む
    35.30 シェル関数を使う

36 章 上級者のためのシェルプログラミング
    36.1 基本を超えて
    36.2 #と#!の物語
    36.3 スクリプトにシェルは本当に必要か
    36.4 #!にPATHを検索させる
    36.5 execコマンド
    36.6 Bourneシェルの:演算子
    36.7 パラメータ置換
    36.8 ディスクスペースと労力の節約:複数の名前を持つプログラム
    36.9 最後のコマンドライン引数を調べる
    36.10 コマンドラインパラメータの設定をすべて解除する
    36.11 forループへの標準入力
    36.12 複数の変数を使ったforループを作る
    36.13 basenameとdirnameを使う
    36.14 複数のループ制御コマンドを持つwhileループ
    36.15 オープンファイルとファイル記述子の概要
    36.16 n>&m:標準出力と標準エラー出力を入れ替える
    36.17 シェルは標準入力からスクリプトを読み込めるが
    36.18 標準入力から動的に生成されるシェルスクリプト
    36.19 ヒアドキュメントの終端文字列のクォート:sh vs. csh
    36.20 エコーを無効にする
    36.21 クイックリファレンス:expr
    36.22 文字列中の文字をexprでチェックする
    36.23 文字列の一部を取り出す
    36.24 ネストしたコマンド置換
    36.25 1つのcase文で2つの文字列をチェックする
    36.26 X Window Systemにテキストを出力する
    36.27 シェルのロックファイル

37 章 シェルスクリプトのデバッグ
    37.1 デバッグのためのヒント集
    37.2 シェル変数の値を表示するBourneシェル用のデバッグスクリプト
    37.3 数値テストにおける構文エラーを回避する
    37.4 文字列テストの構文エラーを回避する
    37.5 クォートとコマンドラインパラメータ
    37.6 Unixが時間を管理する仕組み
    37.7 操作をscriptで記録する
    37.8 scriptで生成されたファイルを掃除する
    37.9 テスト用に任意のサイズのファイルを作成する

第・部 システム環境の拡張と管理        1005

38 章 ファイルのバックアップ
    38.1 「バックアップ」とは?
    38.2 tarユーティリティの概要
    38.3 バックアップの作成
    38.4 各種のバックアップ方法
    38.5 ローカルデバイスへのバックアップ方法
    38.6 tarによる磁気テープからのファイルのリストア
    38.7 tarによるリモートテープドライブの利用
    38.8 GNU tarによるリモートテープドライブの利用
    38.9 プロジェクトのオンデマンド増分バックアップ
    38.10 tarでのワイルドカードの使用
    38.11 tarでは絶対パスは使用しない
    38.12 tarの引数の順序
    38.13 テープアーカイバcpio
    38.14 企業規模でのバックアップ

39 章 アーカイブの作成と展開
    39.1 ファイルをまとめて移動する
    39.2 tarによるアーカイブの作成と展開
    39.3 GNU tarの使用例
    39.4 RCSとCVSによるファイルの管理と共有
    39.5 RCSの基礎
    39.6 rcsrevsでRCSリビジョン番号をリストアップ
    39.7 CVSの基礎
    39.8 CVSの応用

40 章 ソフトウェアのインストール
    40.1 /usr/binとその他のソフトウェアディレクトリ
    40.2 Unixでのソフトウェアのインストール
    40.3 makeの互換性
    40.4 makeのプロセスを簡単にする
    40.5 Debian dselectでのインストール
    40.6 Debian Apt-Getでのインストール
    40.7 wgetによるファイルのダウンロード
    40.8 curlとOne-Step
    40.9 FreeBSD Portsによるインストール
    40.10 FreeBSDパッケージのインストール
    40.11 RPMパッケージのインストール

41 章 Perl
    41.1 Unix純正のスクリプト言語
    41.2 Perlがインストールされているか確認する
    41.3 Perlのインストール
    41.4 Perlの基礎−Part 1:一般的なスクリプトの構造
    41.5 Perlの基礎−Part 2:変数とデータ型
    41.6 Perlの基礎−Part 3:条件分岐とループ
    41.7 Perlの基礎−Part 4:パターンマッチング
    41.8 Perlの基礎−Part 5:Unixと同じ機能
    41.9 Perlの基礎−Part 6:モジュール
    41.10 Perlの基礎−Part 7:perldoc
    41.11 CPAN
    41.12 Perlによる文字列検索
    41.13 Perlとインターネット

42 章 Python
    42.1 Pythonとは?
    42.2 PythonのインストールとDistutilsパッケージのインストール
    42.3 Pythonの基礎
    42.4 PythonとWeb
    42.5 urllib
    42.6 urllib2
    42.7 htmllibとHTMLParser
    42.8 cgi
    42.9 mod_python
    42.10 Perlについて

第・部 通信と接続       1131

43 章 入出力のリダイレクト
    43.1 標準入出力の利用
    43.2 catコマンドの引数
    43.3 標準エラー出力をパイプに送る
    43.4 ページャにパイプ接続する際の問題点
    43.5 標準エラー出力をファイルにリダイレクトする(Cシェルの場合)
    43.6 noclobberによる安全な入出力リダイレクト
    43.7 サブシェル演算子( )
    43.8 出力を複数の対象に送る
    43.9 複数のコマンドの出力を集める
    43.10 出力を複数の対象にリダイレクトする
    43.11 名前付きパイプ:FIFO
    43.12 /dev/null

44 章 デバイス
    44.1 イントロダクション
    44.2 カーネルのブートメッセージ
    44.3 カーネルの設定
    44.4 ハードディスクのパーティション
    44.5 ファイルシステムタイプと/etc/fstab
    44.6 リムーバブルファイルシステムのマウントとアンマウント
    44.7 ループバックマウント
    44.8 ifconfigによるネットワークデバイスの設定
    44.9 ネットワークファイルシステム(NFS、SMBFS)のマウント
    44.10 Winmodem(ウィンモデム)
    44.11 PPPの設定
    44.12 USBの設定
    44.13 サウンドカードおよびその他のハードウェア
    44.14 シリアルコンソール

45 章 印刷
    45.1 イントロダクション
    45.2 Unixでの印刷
    45.3 lpcによるプリンタの制御
    45.4 プリンタの選択
    45.5 シンボリックリンクの利用
    45.6 prコマンドによるテキストの書式設定
    45.7 enscriptによるテキストの書式設定
    45.8 ネットワークプリンタ
    45.9 Sambaを利用したリモートプリント
    45.10 タイプセッティング
    45.11 Unixにおけるタイプセッティング(文書整形)の歴史
    45.12 manページの文書整形:nroff
    45.13 文書整形言語(マークアップ言語)−troff、LaTeX、HTMLなど
    45.14 ページ記述言語−PostScript、PCL、DVI、PDF
    45.15 テキストファイルをページ記述言語に変換する
    45.16 文書整形言語をページ記述言語に変換する
    45.17 ソースファイルをフィルタで自動的に変換
    45.18 CUPS(Common Unix Printing System)
    45.19 Portable Bitmap Package

46 章 ネットワーク
    46.1 TCP/IP-IPアドレスとポート
    46.2 /etc/servicesファイル
    46.3 ステータス確認とトラブルシューティング
    46.4 ネットワークの診断
    46.5 inetd
    46.6 セキュアシェル(SSH)
    46.7 匿名FTPサーバの設定
    46.8 電子メール:SMTP、POP、IMAP
    46.9 ドメインネームサービス(DNS)
    46.10 DHCP(ダイナミック・ホスト・コンフィギュレーション・プロトコル)         1216
    46.11 ゲートウェイとNAT
    46.12 ファイアウォール
    46.13 パーソナルLANからモデムを介してインターネットに接続

47 章 MS Windowsとの接続
    47.1 オペレーティングシステムの相互接続
    47.2 Sambaのインストールと設定
    47.3 Sambaのセキュリティ
    47.4 SWATとその他のGUI SMBブラウザ
    47.5 Sambaによるプリンタ共有
    47.6 SMB共有リソースへUnixから接続
    47.7 VNCによるデスクトップ共有
    47.8 エミュレータとAPI
    47.9 Citrix:Windowsをマルチユーザ環境に

第・部 セキュリティ

48 章 セキュリティの基礎
    48.1 ネットワーク攻撃
    48.2 CERTセキュリティチェックリスト
    48.3 セキュリティホールの情報ソース
    48.4 バッファオーバーフロー
    48.5 DoS(サービス拒否攻撃)
    48.6 パフォーマンスの低下
    48.7 侵入探知
    48.8 MOTDの重要性
    48.9 Linux procファイルシステム
    48.10 inetdを無効にする
    48.11 rlogin、rshを無効にする
    48.12 TCPラッパ

49 章 ルート、グループ、ユーザ管理
    49.1 Unixユーザ/Unixグループの基礎
    49.2 ユーザの作成
    49.3 rootのパスワードを忘れてしまった場合
    49.4 umaskの設定
    49.5 ディレクトリにsetgidビットを設定する
    49.6 グループ所有権
    49.7 特定のリソースを特定のユーザに使用させたくない場合
    49.8 SUIDスクリプトとSGIDスクリプト
    49.9 suコマンド
    49.10 外部からのrootログインは無効にする
    49.11 sudoコマンドの使用方法
    49.12 Darwinでrootを有効にする
    49.13 一時的にログインを無効にする

50 章 ファイルのセキュリティ、所有者、共有
    50.1 イントロダクション
    50.2 ファイルとディレクトリのパーミッション
    50.3 ファイルの所有者
    50.4 スティッキービットによるファイルの保護
    50.5 chmodコマンドを使ったパーミッションの変更
    50.6 chmod = の使用方法
    50.7 重要なファイルの保護(書き込み権を無効にする)
    50.8 cx、cw、c-wスクリプト
    50.9 セキュリティホール(書き込み権のないファイルを修正する方法)
    50.10 ファイルは読めるがファイル名は一覧表示できないディレクトリ
    50.11 パーミッションの操作
    50.12 md5sumによるファイルの検証
    50.13 シェルスクリプトファイルには読み込み権と実行権を設定する
    50.14 ファイルの所有者を変更できない場合
    50.15 chown以外でファイルの所有者を変更する方法

51 章 SSH
    51.1 Mac OS Xのリモートアクセス機能を有効にする
    51.2 SSHによる安全な通信
    51.3 OpenSSH
    51.4 SSHに関する質問とその回答
    51.5 一般的な質問、認証に関する質問
    51.6 鍵とエージェントに関する質問
    51.7 サーバおよびクライアントに関する質問と回答

用語解説

索引