zshの本

[表紙]zshの本

A5判/544ページ

定価(本体3,200円+税)

ISBN 978-4-7741-3864-0

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

zshはBourne Shellをベースにtcshやkshの拡張機能を取り込んだUNIX系シェルの1つですが,“z”という文字が表しているようにまさに最後のシェルと呼ばれるにふさわしい高機能なシェルです。しかし,bashやtcshに比べて,情報が少ないといった側面もありました。本書では,zshの基本的な使い方からカスタマイズまでを実例を交えながら網羅的に紹介しています。本書を片手に,これまでbashで十分だ感じていた人もzshの奥深い世界を体験してみてはいかがでしょうか。

こんな方におすすめ

  • UNIXシェルを使いこなしたい人

この書籍に関連する記事があります!

zshで究極のオペレーションを
技術評論社から6年越しの企画『zshの本』が6月17日に発売されました。この発売を記念し,zshをテーマにした短期連載をお送りします。

目次

第1章 zshにより広がる世界

  • 1.1 デモンストレーション
  • 1.2 なぜzshか

第2章 zshのインストールと起動

  • 2.1 zshのインストール
    • 2.1.1 ソースの入手とコンパイル
    • 2.1.2 ログインシェルの変更
  • 2.2 zshの起動
    • 2.2.1 zshの初期化ファイル
    • 2.2.2 起動と調整
  • 2.3 サンプル設定ファイル
  • 2.4 シェル変数とシェルオプション
  • 2.5 コマンドライン操作の基本
    • 2.5.1 コマンド起動の基本書式
    • 2.5.2 コマンド前置
    • 2.5.3 コマンドの検索位置
    • 2.5.4 コマンド検索の制御
    • 2.5.5 コマンドの終了値
  • 2.6 ディレクトリ操作
    • 2.6.1 cdコマンド
    • 2.6.2 ディレクトリとシンボリックリンク
    • 2.6.3 cdコマンドのオプション
    • 2.6.4 ディレクトリスタック
    • 2.6.5 ディレクトリ移動の挙動制御

第3章 ヒストリ

  • 3.1 ヒストリ利用のための変数
  • 3.2 ヒストリ展開制御
    • 3.2.1 基本的ヒストリ展開
    • 3.2.2 ヒストリ編集子
  • 3.3 fcコマンド
    • 3.3.1 ヒストリリストの参照
    • 3.3.2 ヒストリの編集と実行
    • 3.3.3 ヒストリファイルの入出力
    • 3.3.4 ヒストリリストのスタック待避
  • 3.4 zsh拡張ヒストリ制御オプション

第4章 コマンドライン編集

  • 4.1 編集インタフェースの選択
  • 4.2 標準キー割り当て
    • 4.2.1 数引数
    • 4.2.2 emacsキーマップの標準キー割り当て
    • 4.2.3 viキーマップの標準キー割り当て
  • 4.3 キーカスタマイズ
    • 4.3.1 bindkeyコマンド
    • 4.3.2 キーカスタマイズの例
  • 4.4 プロンプトの調整
    • 4.4.1 プロンプト変数で利用できる記号
    • 4.4.2 プロンプト置換を制御するオプション
    • 4.4.3 プロンプト設定例
    • 4.4.4 プロンプトテーマ
  • 4.5 その他のZLE関連コマンド
    • 4.5.1 varedコマンド
    • 4.5.2 zleコマンド

第5章 標準コマンドライン補完

  • 5.1 zshの補完機能
    • 5.1.1 2つの補完システム-compctlとcompsys
    • 5.1.2 補完システムの導入
  • 5.2 補完システムの利用
    • 5.2.1 コマンド名補完
    • 5.2.2 ファイル名補完
    • 5.2.3 変数補完
    • 5.2.4 ユーザ名・ホスト名補完
    • 5.2.5 プロセス・ジョブ補完
    • 5.2.6 その他文脈に応じた補完
    • 5.2.7 文脈から独立した補完
  • 5.3 補完に関するシェルオプション
  • 5.4 補完スタイル
    • 5.4.1 コンテクストとスタイル
    • 5.4.2 コンテクスト値のセットのされ方
  • 5.5 代表的なスタイル
    • 5.5.1 スタイルの設定と削除
    • 5.5.2 補完提示方式の変更
    • 5.5.3 一覧の表示属性設定
    • 5.5.4 補完のグループ化
    • 5.5.5 マッチ仕様の調整
    • 5.5.6 起動コマンドの変更
    • 5.5.7 候補の偽造
    • 5.5.8 コマンドごとのファイル検索パターンの調整
    • 5.5.9 その他の主な補完スタイル
  • 5.6 様々なコンプリータ
    • 5.6.1 コンプリータの指定
    • 5.6.2 近似補完(_approximate)
    • 5.6.3 綴り修正(_correct)
    • 5.6.4 単語途中の補完(_prefix)
    • 5.6.5 除外パターンの復活(_ignored)
    • 5.6.6 細かく制御可能な展開(_expand)
    • 5.6.7 パターンを含む補完候補の選別(_match)
    • 5.6.8 前回の補完の候補一覧をそのまま表示(_oldlist)
    • 5.6.9 マッチするものすべての挿入(_allmatches)
    • 5.6.10 エイリアスの展開(_expandalias)
    • 5.6.11 ヒストリ中の単語補完(_history)
  • 5.7 ラベルつきコンプリータによる多段階補完
  • 5.8 補完設定の追加と削除
    • 5.8.1 compdefと補完関数
    • 5.8.2 compctlとの共存
    • 5.8.3 基本タグ補完関数
  • 5.9 補完スタイルのまとめ

第6章 変数

  • 6.1 シェル変数と環境変数
  • 6.2 プロセスへの環境変数渡し
  • 6.3 クォート
  • 6.4 値の展開
  • 6.5 zshの変数の型
    • 6.5.1 typesetコマンド
    • 6.5.2 シェル変数と環境変数の連動
    • 6.5.3 変数の属性設定
    • 6.5.4 typesetコマンドのオプション
    • 6.5.5 setコマンド
  • 6.6 添字
  • 6.7 変数展開フラグ
  • 6.8 添字用変数展開フラグ
    • 6.8.1 添字用展開フラグの使用例
  • 6.9 変数展開制御編集子
  • 6.10 変数定義の抹消
  • 6.11 read
  • 6.12 特殊変数
    • 6.12.1 シェルが参照する変数
    • 6.12.2 内部変数

第7章 ファイル名生成

  • 7.1 強力なファイル名生成機能
  • 7.2 グロッビング記号
  • 7.3 優先順位
  • 7.4 ファイル修飾子
    • 7.4.1 ファイル修飾子一覧
    • 7.4.2 ファイル修飾子の組み合わせ
  • 7.5 展開編集子
  • 7.6 グロッビングフラグ
  • 7.7 近似マッチ

第8章 その他の展開

  • 8.1 パス名展開
    • 8.1.1 ~展開
    • 8.1.2 名前付きディレクトリ
    • 8.1.3 コマンドのフルパス展開
    • 8.1.4 変数への代入とファイル名展開
  • 8.2 プロセス置換
    • 8.2.1 プロセス置換の使用例
  • 8.3 コマンド置換
    • 8.3.1 バッククォート
    • 8.3.2 $(...)
    • 8.3.3 コマンド置換と単語分割
  • 8.4 ファイル入力置換
    • 8.4.1 全行からのパターン抽出
    • 8.4.2 特定のパターンを含む行からのパターン抽出
    • 8.4.3 特定のパターンを含まない行からのパターン抽出
  • 8.5 ブレース展開
    • 8.5.1 単語展開
    • 8.5.2 整数範囲展開
    • 8.5.3 文字範囲展開
    • 8.5.4 ブレース展開の注意点
  • 8.6 算術展開
    • 8.6.1 利用できる演算子
    • 8.6.2 基数指定
    • 8.6.3 数式評価
    • 8.6.4 数学関数

第9章 エイリアス

  • 9.1 エイリアスの定義と参照
  • 9.2 aliasコマンド
  • 9.3 接尾辞エイリアス
  • 9.4 グローバルエイリアス
  • 9.5 エイリアスの回避

第10章 構文

  • 10.1 コマンドが返す値
  • 10.2 選択実行(ANDとOR)
  • 10.3 連続実行
  • 10.4 バックグラウンド実行
  • 10.5 サブシェルとグループ化
    • 10.5.1 サブシェル
    • 10.5.2 グルーピング
  • 10.6 条件式
  • 10.7 制御構造
    • 10.7.1 if
    • 10.7.2 case
    • 10.7.3 select
    • 10.7.4 for
    • 10.7.5 while
    • 10.7.6 until
    • 10.7.7 repeat
    • 10.7.8 breakとcontinue

第11章 関数

  • 11.1 関数の定義と抹消
  • 11.2 関数からの復帰
  • 11.3 位置パラメータ
    • 11.3.1 位置パラメータ操作コマンド
    • 11.3.2 引数解析の例
  • 11.4 変数の束縛
  • 11.5 関数のオートロード
    • 11.5.1 autoload
    • 11.5.2 オートロード関数定義ファイル
    • 11.5.3 ksh風オートロード
    • 11.5.4 autoloadコマンド
    • 11.5.5 関数のコンパイル
  • 11.6 特殊関数

第12章 ファイル記述子の操作

  • 12.1 ファイル記述子
  • 12.2 dupシステムコール
  • 12.3 入出力のリダイレクト
  • 12.4 ヒアドキュメント
  • 12.5 ヒアストリング
  • 12.6 コマンドを伴わないリダイレクト
  • 12.7 パイプ
    • 12.7.1 パイプとサブシェル
  • 12.8 マルチIO
  • 12.9 ファイル記述子処理例
    • 12.9.1 入出力の切り替え
    • 12.9.2 標準出力と標準エラー出力
    • 12.9.3 エラー出力の加工(汎用版)
    • 12.9.4 エラー出力の加工(zsh版)
    • 12.9.5 ファイル記述子の動的割り当て
  • 12.10 コプロセスとの双方向パイプ

第13章 ジョブ制御とシグナル処理

  • 13.1 ジョブ操作
  • 13.2 ジョブ番号とジョブ指定
  • 13.3 シグナル送信
  • 13.4 シグナル捕捉
    • 13.4.1 trap
    • 13.4.2 TRAP関数
    • 13.4.3 特別なシグナル

第14章 その他のコマンド

  • 14.1 システムリソースへのアクセス
    • 14.1.1 リソースリミットの設定と解除
    • 14.1.2 リソースリミット設定例
  • 14.2 値の出力
    • 14.2.1 echo
    • 14.2.2 print
    • 14.2.3 printf
    • 14.2.4 printf使用例
  • 14.3 ハッシュ表の操作
  • 14.4 コマンド解釈の制御
  • 14.5 他のシェルのエミュレーション
    • 14.5.1 エミュレーション関連のオプション
  • 14.6 計時情報出力
  • 14.7 ファイル作成モードマスク
  • 14.8 拡張モジュールのロード
    • 14.8.1 zmodloadコマンド
    • 14.8.2 主なモジュール

第15章 補完のカスタマイズ

  • 15.1 compctlとcompsysの選択
  • 15.2 compctl
    • 15.2.1 補完対象の単純選択
    • 15.2.2 特別な位置の補完の設定
    • 15.2.3 補完定義の一覧出力
    • 15.2.4 段階的選択補完
    • 15.2.5 補完挙動の調整
    • 15.2.6 拡張補完(条件付き補完)
    • 15.2.7 候補一覧のグルーピング
    • 15.2.8 関数による補完単語生成
    • 15.2.9 compctlの設定例
  • 15.3 compsys
    • 15.3.1 補完カスタマイズのレベル
    • 15.3.2 compaddによる補完定義
    • 15.3.3 タグ・スタイルに対応した補完定義
    • 15.3.4 _argumentsによる補完定義
    • 15.3.5 _argumentsによる引数仕様記述
    • 15.3.6 補完定義読み込みの自動化
    • 15.3.7 状態を追跡した補完
    • 15.3.8 複数のタグの補完
    • 15.3.9 複数タグ補完の別法
    • 15.3.10 ユーザ定義スタイルの尊重
    • 15.3.11 補完コンテクストの意図的操作
    • 15.3.12 複合文字列の補完
    • 15.3.13 サブコマンドごとの候補セット切り替え
    • 15.3.14 _argumentsのその他のオプション
    • 15.3.15 様々な補完アクション
    • 15.3.16 怠惰補完
  • 15.4 compctlからcompsysへの移行
    • 15.4.1 単純選択オプションの置き換え
    • 15.4.2 拡張補完の置き換え

第16章 ウィジェット

  • 16.1 ウィジェット作成の指針
  • 16.2 ウィジェット内で有用な変数
  • 16.3 zleコマンド
  • 16.4 ウィジェット作成例
    • 16.4.1 zsh数字インベーダーゲーム
    • 16.4.2 ゲームに必要な要素
    • 16.4.3 関数の作成とウィジェット登録
  • 16.5 補完ウィジェット
    • 16.5.1 補完ウィジェット定義の流れ
    • 16.5.2 補完ウィジェット定義例
  • 16.6 主な寄贈ウィジェット
    • 16.6.1 単語移動のカスタマイズ select-word-style
    • 16.6.2 tcsh風のヒストリ検索 history-search-end
    • 16.6.3 複数行ヒストリ対応の検索 up-line-or-beginning-search
    • 16.6.4 予測入力 predict-on
    • 16.6.5 最後の単語を適切に選ぶ smart-insert-last-word
    • 16.6.6 有名なゲーム tetris

付録A ヒストリ展開記法一覧

  • A.1 イベントの選択
  • A.2 選択したイベントの引数選択
  • A.3 ヒストリ編集子
  • A.4 ヒストリに関連する変数
  • A.5 ヒストリに関連するオプション

付録B 変数展開記号一覧

  • B.1 値の展開
  • B.2 値の加工
  • B.3 変数展開フラグ
  • B.4 添字用展開フラグ
  • B.5 変数展開制御編集子
  • B.6 typesetのオプション
  • B.7 readのオプション
  • B.8 特殊変数

付録C ファイル名生成記法一覧

  • C.1 グロッビング記号
  • C.2 ファイル修飾子
  • C.3 ファイル展開編集子

付録D オプション一覧

  • D.1 1字オプション
    • D.1.1 zshモードの1字オプション一覧
    • D.1.2 sh/kshモードの1字オプション一覧

著者プロフィール

広瀬雄二(ひろせゆうじ)

1968年,山梨県塩山市(現甲州市)生まれ。慶應義塾大学理工学研究科(管理工学専攻)から慶應義塾大学インフォメーションテクノロジーセンターを経て,東北公益文科大学(山形県酒田市)へ。

必修科目として教えているRubyで,学生によるグループ作成プログラムの質が年々上がっていることにゆとり教育の恩恵を感じている。今年の学生も粒ぞろいで満足だが,この状態があと何年続くか気がかり。

URLhttp://www.gentei.org/~yuuji/