本書は、1993年の初版発行以来、世界中のUnixユーザから高い評価を得てきた世界的ベストセラーの日本語版です。数百点ものティップスやスクリプト、ツール、設定のコツなど、いずれもUnixコミュニティを中心に長年に渡って培われてきた、ありとあらゆる情報を収録。LinuxやFreeBSD、Mac OS Xなどにも対応し、最新の情報も網羅しています。また、圧倒的なボリュームの一方で、実用的な「拾い読み」スタイルの構成も本書の大きな特徴です。すべての項目は読み切りサイズにまとめられ、必要に応じて手軽に参照できます。さらに、本文中の関連項目をたどれば、限りないUnixワールドへの読書散歩に出ることも可能です。まさにUnixユーザによるUnixユーザのための技と知識の集大成と呼ぶにふさわしい1冊です。
Unixパワーツール 第3版
Shelley Powers, Jerry Peek, Tim O'Reilly, Mike Loukides 著、株式会社ドキュメントシステム 訳
- TOPICS
- 発行年月日
- 2003年09月
- PRINT LENGTH
- 1400
- ISBN
- 4-87311-142-0
- 原書
- Unix Power Tools, 3rd Edition
- FORMAT
目次
本書の使い方 序文 第・部 基本的な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 サーバおよびクライアントに関する質問と回答 用語解説 索引