# Yet another shell (yash) マニュアル

渡邊裕貴
`<magicant@wonderwand.net>`
version 2.56.1, 2024-03-20

## 目次

1. はじめに

2. シェルの起動

   1. 起動時のコマンドライン引数

   2. シェルの初期化処理

3. コマンドの文法

   1. トークンの解析と予約語

   2. クォート

   3. エイリアス

   4. 単純コマンド

   5. パイプライン

   6. And/or リスト

   7. コマンドの区切りと非同期コマンド

   8. 複合コマンド

      1. グルーピング

      2. If 文

      3. While および until ループ

      4. For ループ

      5. Case 文

      6. 二重ブラケットコマンド

   9. 関数定義

4. パラメータと変数

   1. 位置パラメータ

   2. 特殊パラメータ

   3. 変数

      1. シェルが使用する変数

      2. 配列

5. 単語の展開

   1. チルダ展開

   2. パラメータ展開

      1. 前置詞

      2. パラメータ名

      3. インデックス

      4. 加工指定

   3. コマンド置換

   4. 数式展開

   5. ブレース展開

   6. 単語分割

   7. パス名展開

      1. パス名展開の拡張機能

6. パターンマッチング記法

   1. 通常の文字

   2. 一文字ワイルドカード

   3. 複数文字ワイルドカード

   4. ブラケット記法

   5. (ブラケット記法パターンにおける) 通常の文字

   6. 範囲指定

   7. 照合シンボル

   8. 等価クラス

   9. 文字クラス

7. リダイレクト

   1. ファイルへのリダイレクト

      1. ソケットリダイレクト

   2. ファイル記述子の複製

   3. ヒアドキュメントとヒアストリング

   4. パイプリダイレクト

   5. プロセスリダイレクト

8. コマンドの実行とその環境

   1. 単純コマンドの実行

      1. コマンドの検索

   2. シェルの終了

   3. 関数

      1. ローカル変数

   4. コマンドの実行環境

      1. サブシェル

9. 対話モード

   1. プロンプト

   2. コマンド履歴

   3. メールチェック

10. ジョブ制御

    1. ジョブ ID

11. 組込みコマンド

    1. 組込みコマンドの種類

    2. コマンドの引数の構文

12. 行編集

    1. 行編集のオプション

    2. 編集モード

    3. 行編集コマンド

       1. 基本的な編集コマンド

       2. 移動コマンド

       3. 編集コマンド

       4. 補完コマンド

       5. Vi 固有のコマンド

       6. Emacs 固有のコマンド

       7. コマンド履歴関連のコマンド

       8. コマンド履歴検索モードのコマンド

    4. エスケープシーケンス

    5. コマンドライン補完

       1. 補完動作の詳細

    6. コマンドライン推定

13. POSIX 準拠モード

14. よくある質問 / 困ったときは

    1. Unicode (非 ASCII) 文字を使うには?

    2. 行編集が動かない

15. 構文の形式的定義

    1. トークン分割

       1. トークン分類

       2. コメント

    2. 構文

       1. エイリアス置換

## 組込みコマンド

括弧書きの文字は​組込みコマンドの種類を表します。 (S) は特殊組込みコマンド、(M) は必須組込みコマンド、(L) は任意組込みコマンド、(X) は拡張組込みコマンド、無印は代替組込みコマンドです。

### 組込みコマンド一覧 (アルファベット順)

- `.` (ドット) (S)

- `:` (コロン) (S)

- `[` (括弧)

- `alias` (M)

- `array` (X)

- `bg` (M)

- `bindkey` (L)

- `break` (S)

- `cd` (M)

- `command` (M)

- `complete` (L)

- `continue` (S)

- `dirs` (L)

- `disown` (L)

- `echo`

- `eval` (S)

- `exec` (S)

- `exit` (S)

- `export` (S)

- `false` (M)

- `fc` (M)

- `fg` (M)

- `getopts` (M)

- `hash` (M)

- `help` (L)

- `history` (L)

- `jobs` (M)

- `kill` (M)

- `local` (L)

- `popd` (L)

- `printf`

- `pushd` (L)

- `pwd` (M)

- `read` (M)

- `readonly` (S)

- `return` (S)

- `set` (S)

- `shift` (S)

- `suspend` (L)

- `test`

- `times` (S)

- `trap` (S)

- `true` (M)

- `type` (M)

- `typeset` (L)

- `ulimit` (M)

- `umask` (M)

- `unalias` (M)

- `unset` (S)

- `wait` (M)

### 種類別組込みコマンド一覧

#### 実行制御

- `eval` (S)

- `.` (ドット) (S)

- `exec` (S)

- `command` (M)

- `hash` (M)

- `break` (S)

- `continue` (S)

- `return` (S)

- `suspend` (L)

- `exit` (S)

#### コマンド実行環境関連

- `set` (S)

- `ulimit` (M)

- `umask` (M)

- `trap` (S)

- `cd` (M)

- `pwd` (M)

- `times` (S)

#### ジョブ制御・シグナル関連

- `jobs` (M)

- `fg` (M)

- `bg` (M)

- `wait` (M)

- `disown` (L)

- `kill` (M)

- `trap` (S)

#### パラメータ・変数関連

- `typeset` (L)

- `export` (S)

- `local` (L)

- `readonly` (S)

- `array` (X)

- `set` (S)

- `shift` (S)

- `read` (M)

- `getopts` (M)

- `unset` (S)

#### 作業ディレクトリ関連

- `cd` (M)

- `pwd` (M)

- `pushd` (L)

- `popd` (L)

- `dirs` (L)

#### エイリアス関連

- `alias` (M)

- `unalias` (M)

#### コマンド履歴関連

- `fc` (M)

- `history` (L)

#### 文字列出力

- `echo`

- `printf`

#### 行編集関連

- `bindkey` (L)

- `complete` (L)

#### その他のコマンド

- `help` (L)

- `:` (コロン) (S)

- `true` (M)

- `false` (M)

- `[` (括弧), `test`

- `type` (M)