bash - リファレンスマニュアル、オプション、コマンド例


名前

bash - GNU Bourne-Again SHell

概要

bash [options] [command_string | file]

著作権

Bash は、Free Software Foundation, Inc. による著作権 (C) 1989-2020 です。

説明

Bash は、標準入力またはファイルから読み取られたコマンドを実行するsh 互換のコマンド言語インタープリターです。 Bash には、Korn シェルと C シェル (ksh と csh) の便利な機能も組み込まれています。 )。

Bash は、IEEE POSIX 仕様 (IEEE 標準 1003.1) のシェルとユーティリティの部分に準拠した実装であることを目的としています。 Bash は、デフォルトで POSIX 準拠にな読み取りがタイムアウトるように構成できます。

オプション

set 組み込みコマンドの説明に記載されているすべての 1 文字のシェル オプション (-o を含む) は、シェルの呼び出し時にオプションとして使用できます。さらに、bash は呼び出されるときに次のオプションを解釈します。

-c

-c オプションが存在する場合、コマンドは最初の非オプション引数 command_string から読み取られます。 command_string の後に引数がある場合、最初の引数は $0 に割り当てられ、残りの引数は位置パラメータに割り当てられます。 $0 への割り当てにより、警告メッセージとエラー メッセージで使用されるシェルの名前が設定されます。

-i

-i オプションが存在する場合、 シェルは対話型になります。

-l

bash をログイン シェルとして呼び出されたかのように動作させます (以下の 呼び出し を参照)。

-r

-r オプションが存在する場合、 シェルは制限付きになります (下記の制限付きシェルを参照)。

-s

-s オプションが存在する場合、またはオプション処理後に引数が残っていない場合、コマンドは標準入力から読み取られます。このオプションを使用すると、対話型シェルを呼び出すとき、またはパイプを介して入力を読み取るときに、位置パラメータを設定できます。

-D

$ で始まるすべての二重引用符で囲まれた文字列のリストが標準出力に出力されます。これらは、現在のロケールが C または POSIX ではない場合に言語翻訳の対象となる文字列です。これは、-n オプションを意味します。コマンドは実行されません。

[-+]O [shopt_option]

shopt_option は、shopt ビルトインで受け入れられるシェル オプションの 1 つです (以下のシェル ビルトイン コマンド を参照)。 shopt_option が存在する場合、-O はそのオプションの値を設定します。 +O で設定を解除します。 shopt_option が指定されていない場合、shopt によって受け入れられるシェル オプションの名前と値が標準出力に出力されます。呼び出しオプションが +O の場合、出力は入力として再利用できる形式で表示されます。

--

-- はオプションの終了を示し、それ以降のオプション処理を無効にします。 -- の後の引数は、ファイル名および引数として扱われます。引数 - は - と同等です。

Bash は、多数の複数文字オプションも解釈します。これらのオプションは、単一文字のオプションが認識される前にコマンド ラインに指定する必要があります。

--debugger

シェルが開始される前にデバッガ プロファイルが実行されるように手配します。拡張デバッグ モードをオンにします (以下の shopt ビルトインの extdebug オプションの説明を参照してください)。

--dump-po-strings

-D と同等ですが、出力は GNU gettext po (ポータブル オブジェクト) ファイル形式です。

--dump-strings

-D に相当します。

--help

標準出力に使用法メッセージを表示し、正常に終了します。

--init-file file
--rcfile file

シェルが対話型の場合は、標準の個人初期化ファイル ~/.bashrc ではなくファイルからコマンドを実行します (以下の呼び出しを参照)。

--login

-l と同等。

--noediting

シェルが対話型の場合は、GNU readline ライブラリを使用してコマンド ラインを読み取らないでください。

--noprofile

システム全体の起動ファイル /etc/profile や個人の初期化ファイル ~/.bash_profile、~/.bash_login のいずれも読み取らないでください。 >、または~/.profile。デフォルトでは、bash はログイン シェルとして呼び出されたときにこれらのファイルを読み取ります (以下の呼び出し を参照)。

--norc

シェルが対話型の場合は、個人初期化ファイル ~/.bashrc を読み取って実行しないでください。シェルがsh として呼び出される場合、このオプションはデフォルトでオンになります。

--posix

デフォルトの操作が POSIX 標準と異なる場合のbash の動作を、標準 (posix モード) に一致するように変更します。 posix モードが bash の動作にどのような影響を与えるかを詳しく説明したドキュメントへの参照については、以下の関連項目を参照してください。

--restricted

シェルは制限付きになります (以下の制限付きシェルを参照)。

--verbose

-v と同等です。

--version

このbash インスタンスのバージョン情報を標準出力に表示し、正常に終了します。

議論

オプション処理後に引数が残り、-c オプションも -s オプションも指定されていない場合、最初の引数はシェル コマンドを含むファイルの名前とみなされます。 。この方法で bash を呼び出すと、$0 がファイル名に設定され、位置パラメータが残りの引数に設定されます。 Bash はこのファイルからコマンドを読み取って実行し、終了します。 Bash の終了ステータスは、スクリプト内で実行された最後のコマンドの終了ステータスです。コマンドが実行されない場合、終了ステータスは 0 です。まず現在のディレクトリでファイルを開こうとします。ファイルが見つからない場合、シェルはパス内のディレクトリを検索して、スクリプト。

呼び出し

ログイン シェルは、引数 0 の最初の文字が - であるシェル、または --login オプションで始まるシェルです。

対話型 シェルは、オプション以外の引数 (-s が指定されていない限り) および -c オプションなしで開始されるシェルで、標準入力とエラーが発生します。両方とも端末 (isatty(3) によって決定される) に接続されているか、-i オプションで開始された端末に接続されています。

bash が対話型の場合、PS1 が設定され、$- に i が含まれ、シェル スクリプトまたは起動ファイルでこの状態をテストします。

次の段落ではbash が起動ファイルを実行する方法について説明します。ファイルが存在しても読み取れない場合、bash はエラーを報告します。チルダは、以下の「展開」セクションの「チルダ展開」で説明されているように、ファイル名で展開されます。

bash が対話型ログイン シェルとして、または --login オプションを使用した非対話型シェルとして呼び出される場合、最初にファイルからコマンドを読み取って実行します。 /etc/profile (そのファイルが存在する場合)。そのファイルを読み取った後、~/.bash_profile、~/.bash_login、~/.profile をこの順序で検索します。存在し、読み取り可能な最初のコマンドからコマンドを読み取り、実行します。シェルの起動時に --noprofile オプションを使用すると、この動作を抑制できます。

インタラクティブ ログイン シェルが終了するか、非インタラクティブ ログイン シェルが exit 組み込みコマンドを実行すると、bash はファイル ~/.bash_logout からコマンドを読み取り、実行します。 (存在する場合)。

ログイン シェルではない対話型シェルが開始されると、bash は ~/.bashrc のファイルが存在する場合、そこからコマンドを読み取り、実行します。これは、--norc オプションを使用することで禁止できます。 --rcfile file オプションは、bash に ~ ではなく file からコマンドを強制的に読み取って実行させます。 /.bashrc。

たとえばシェル スクリプトを実行するために bash が非対話的に起動されると、環境内で変数 BASH_ENV が検索され、そこに表示される場合はその値が展開されます。展開された値を、読み取りおよび実行するファイルの名前として使用します。 Bash は、次のコマンドが実行されたかのように動作します。

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

ただし、PATH 変数の値はファイル名の検索には使用されません。

bash が sh という名前で呼び出された場合、以下に準拠しながら、sh の過去のバージョンの起動動作をできるだけ忠実に模倣しようとします。 POSIX標準も同様です。対話型ログイン シェルとして呼び出すか、--login オプションを指定した非対話型シェルとして呼び出すと、最初に /etc/profile および < からコマンドを読み取って実行しようとします。~/.profile の順序で。 --noprofile オプションを使用すると、この動作を禁止できます。 sh という名前の対話型シェルとして呼び出される場合、bash は変数 ENV を探し、定義されている場合はその値を展開し、読み取って実行するファイルの名前として展開された値。 sh として呼び出されたシェルは他の起動ファイルからコマンドを読み取って実行しようとしないため、--rcfile オプションは効果がありません。 sh という名前で呼び出された非対話型シェルは、他の起動ファイルを読み取ろうとしません。 sh として呼び出された場合、bash は起動ファイルが読み取られた後にposix モードに入ります。

bash が posix モードで起動される場合、--posix コマンド ライン オプションの場合と同様に、起動ファイルの POSIX 標準に従います。このモードでは、対話型シェルはENV変数を展開し、展開された値を名前とするファイルからコマンドが読み取られて実行されます。他の起動ファイルは読み取られません。

Bash は、リモート シェル デーモン (通常は rshd またはセキュア シェル デーモンによって実行される場合と同様) がネットワーク接続に接続された標準入力で実行されているかどうかを判断しようとします。 sshd。 bash がこの方法で実行されていると判断した場合、~/.bashrc ファイルが存在し、読み取り可能であれば、そのファイルからコマンドを読み取り、実行します。 sh として呼び出された場合、これは行われません。 --norc オプションはこの動作を禁止するために使用できます。また、--rcfile オプションは別のファイルの読み取りを強制するために使用できますが、 どちらもrshd もsshd も通常、これらのオプションを使用してシェルを呼び出すか、それらの指定を許可します。

実際のユーザー (グループ) ID と等しくない実効ユーザー (グループ) ID でシェルが起動され、-p オプションが指定されていない場合、起動ファイルは読み取られず、シェル関数は実行されません。環境、SHELLOPTS、BASHOPTS、CDPATH、および GLOBIGNORE 変数 (環境内に存在する場合) から継承されます。 、は無視され、実効ユーザー ID が実際のユーザー ID に設定されます。呼び出し時に -p オプションが指定された場合、起動動作は同じですが、実効ユーザー ID はリセットされません。

定義

以下の定義は、このドキュメントの残りの部分全体で使用されます。

blank

スペースまたはタブ。

word

シェルによって単一の単位としてみなされる文字のシーケンス。 トークンとも呼ばれます。

name

英数字とアンダースコアのみで構成され、英字またはアンダースコアで始まる単語。 識別子とも呼ばれます。

metacharacter

引用符で囲まれていない場合に単語を区切る文字。次のいずれか:

| & ; ( ) < > space tab newline
control operator

制御機能を実行するトークン。これは、次のいずれかの記号です。

|| & && ; ;; ;& ;;& ( ) | |& <newline>

予約語

予約語は、シェルにとって特別な意味を持つ単語です。次の単語は、引用符で囲まれていない場合、コマンドの最初の単語 (下記のシェル文法を参照)、case または select< の 3 番目の単語のいずれかである場合、予約語として認識されます。 コマンド (in のみが有効)、または for コマンドの 3 番目の単語 (in と do のみ) は有効です):

! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]

シェル文法

簡単なコマンド

単純なコマンドは、 一連のオプションの変数割り当ての後に空白で区切られた単語とリダイレクトが続き、制御演算子で終了します。最初のワードは実行するコマンドを指定し、引数 0 として渡されます。残りの単語は、呼び出されたコマンドに引数として渡されます。

単純なコマンドの戻り値は終了ステータス、またはコマンドがシグナル n によって終了した場合は 128+n です。

パイプライン

パイプラインは、制御演算子 | または |& のいずれかで区切られた 1 つ以上のコマンドのシーケンスです。パイプラインの形式は次のとおりです。

[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]

command の標準出力は、パイプを介して command2 の標準入力に接続されます。この接続は、コマンドで指定されたリダイレクトの前に実行されます (以下のリダイレクトを参照)。 |& を使用すると、コマンド の標準出力に加えて、 コマンド 2 の標準エラーが、パイプ;これは 2>&1 | の短縮形です。この標準エラーの標準出力への暗黙的なリダイレクトは、コマンドで指定されたリダイレクトの後に実行されます。

pipefail オプションが有効になっていない限り、パイプラインの戻りステータスは最後のコマンドの終了ステータスになります。 pipefail が有効な場合、パイプラインの戻りステータスは、ゼロ以外のステータスで終了した最後の (右端) コマンドの値、またはすべてのコマンドが正常に終了した場合は 0 になります。予約語 ! がパイプラインの前にある場合、そのパイプラインの終了ステータスは、上記で説明した終了ステータスの論理否定になります。シェルは、値を返す前に、パイプライン内のすべてのコマンドが終了するのを待ちます。

時間予約語がパイプラインの前にある場合、パイプラインの終了時に、その実行に費やされた経過時間とユーザーおよびシステム時間が報告されます。 -p オプションは、出力形式を POSIX で指定された形式に変更します。シェルがposix モードの場合、次のトークンが「-」 で始まる場合は時間を予約語として認識しません。 TIMEFORMAT 変数は、タイミング情報の表示方法を指定するフォーマット文字列に設定できます。以下のシェル変数のTIMEFORMATの説明を参照してください。

シェルがposix モードの場合、時刻の後に改行が続く場合があります。この場合、シェルには、シェルとその子によって消費されたユーザー時間とシステム時間の合計が表示されます。 TIMEFORMAT 変数は、時間情報の形式を指定するために使用できます。

パイプライン内の各コマンドは、別個のプロセス (つまり、サブシェル内) として実行されます。サブシェル環境の説明については、「コマンド実行環境」を参照してください。 shopt ビルトインを使用して lastpipe オプションが有効になっている場合 (以下の shopt の説明を参照)、パイプラインの最後の要素は次の方法で実行できます。シェルプロセス。

リスト

リスト は、演算子 ;、&、&& のいずれかで区切られた 1 つ以上のパイプラインのシーケンスです。または || で、オプションで ;、&、または <newline> のいずれかで終了します。

これらのリスト演算子のうち、&& と || は同じ優先順位を持ち、次に ; と & が続きます。優先権。

コマンドを区切るために、セミコロンの代わりに 1 つ以上の一連の改行がリストに表示される場合があります。

コマンドが制御演算子 & によって終了された場合、シェルはサブシェルのバックグラウンドでコマンドを実行します。シェルはコマンドの終了を待機せず、戻りステータスは 0 です。 これらは非同期コマンドと呼ばれます。 ; で区切られたコマンドは順番に実行されます。シェルは各コマンドが順番に終了するのを待ちます。戻りステータスは、最後に実行されたコマンドの終了ステータスです。

AND リストと OR リストは、それぞれ && と || 制御演算子で区切られた 1 つ以上のパイプラインのシーケンスです。 AND リストと OR リストは左結合で実行されます。 AND リストの形式は次のとおりです。

command1 && command2

command2 は、command1 が終了ステータス 0 (成功) を返した場合にのみ実行されます。

OR リストの形式は次のとおりです。

command1 || command2

command2 は、command1 がゼロ以外の終了ステータスを返した場合にのみ実行されます。 AND リストと OR リストの戻りステータスは、リスト内で実行された最後のコマンドの終了ステータスです。

複合コマンド

複合コマンドは次のいずれかです。ほとんどの場合、 コマンドの説明内のリストは、コマンドの残りの部分から 1 つ以上の改行で区切られ、その後にセミコロンの代わりに改行が続く場合があります。

(list)

list はサブシェル環境で実行されます (下記のコマンド実行環境を参照)。シェルの環境に影響を与える変数の割り当てと組み込みコマンドは、コマンドの完了後は有効になりません。戻りステータスはリストの終了ステータスです。

{ list; }

list は現在のシェル環境で単純に実行されます。 リストは改行またはセミコロンで終了する必要があります。これはグループ コマンドと呼ばれます。戻りステータスはリストの終了ステータスです。メタ文字 ( および ) とは異なり、{ および } は予約語であることに注意してください。予約語の認識が許可されている場所に出現する必要があります。これらは単語の区切りを引き起こさないため、空白または別のシェル メタ文字でリストから区切る必要があります。

((expression))

式は、以下の算術評価で説明されているルールに従って評価されます。式の値がゼロ以外の場合、戻りステータスは 0 です。それ以外の場合、戻りステータスは 1 です。これはlet "expression" とまったく同じです。

[[ expression ]]

条件式式の評価に応じて、0 または 1 のステータスを返します。式は、以下の条件式で説明されているプライマリで構成されます。単語の分割とパス名の展開は、[[ と ]] の間の単語に対しては実行されません。チルダ展開、パラメータと変数の展開、算術展開、コマンド置換、プロセス置換、および引用符の削除が実行されます。 -f などの条件演算子は、プライマリとして認識されるように引用符で囲まれていない必要があります。

[[ とともに使用すると、< 演算子と > 演算子は現在のロケールを使用して辞書順に並べ替えます。

== 演算子と != 演算子が使用される場合、演算子の右側の文字列はパターンとみなされ、以下の「パターン」で説明されているルールに従って照合されます。照合。extglob シェル オプションが有効になっているかのように。 = 演算子は == と同等です。 nocasematch シェル オプションが有効になっている場合、アルファベットの大文字と小文字に関係なく照合が実行されます。戻り値は、文字列がパターンに一致する (==) か一致しない (!=) 場合は 0、それ以外の場合は 1 です。パターンの任意の部分を引用符で囲んで、引用符で囲まれた部分を文字列として強制的に一致させることができます。

追加の二項演算子 =~ を使用できます。優先順位は == および != と同じです。これが使用されると、演算子の右側の文字列は POSIX 拡張正規表現とみなされ、それに応じて照合されます (通常、 で説明されている POSIX regcomp および regexec インターフェイスを使用します)。 > 正規表現(3))。戻り値は、文字列がパターンに一致する場合は 0、それ以外の場合は 1 です。正規表現が構文的に正しくない場合、条件式の戻り値は 2 です。nocasematch シェル オプションが有効な場合、アルファベットの大文字と小文字に関係なく一致が実行されます。パターンの任意の部分を引用符で囲んで、引用符で囲まれた部分を文字列として強制的に一致させることができます。通常の引用文字は括弧の間で意味を失うため、正規表現内の括弧表現は慎重に扱う必要があります。パターンがシェル変数に格納されている場合、変数展開を引用符で囲むと、パターン全体が文字列として強制的に照合されます。

パターンは、文字列の一部と一致する場合に一致します。 ^ および $ 正規表現演算子を使用してパターンを固定し、文字列全体と強制的に一致させます。配列変数 BASH_REMATCH は、文字列のどの部分がパターンに一致したかを記録します。インデックス 0 の BASH_REMATCH の要素には、正規表現全体と一致する文字列の部分が含まれています。正規表現内の括弧で囲まれた部分表現と一致する部分文字列は、残りの BASH_REMATCH インデックスに保存されます。インデックス n の BASH_REMATCH の要素は、n 番目の括弧で囲まれた部分表現に一致する文字列の部分です。

式は、優先順位の高い順にリストされている次の演算子を使用して組み合わせることができます。

( expression )

式の値を返します。これは、演算子の通常の優先順位をオーバーライドするために使用できます。

! expression

式が false の場合は true。

expression1 && expression2

expression1 と expression2 の両方が true の場合は true。

expression1 || expression2

expression1 または expression2 のいずれかが true の場合は true。

&& 演算子と || 演算子は、expression1 の値が戻り値を決定するのに十分な場合、expression2 を評価しません。条件式全体の。

for name [ [ in [ word ... ] ] ; ] do list ; done

in に続く単語のリストが展開され、項目のリストが生成されます。変数 name がこのリストの各要素に順番に設定され、毎回 list が実行されます。 in の word が省略された場合、for コマンドは、設定されている位置パラメータごとに list を 1 回実行します (「以下のパラメータ)。戻りステータスは、最後に実行されたコマンドの終了ステータスです。 in に続く項目を展開した結果が空のリストになった場合、コマンドは実行されず、戻りステータスは 0 になります。

for (( expr1 ; expr2 ; expr3 )) ; do list ; done

まず、算術式 expr1 が、以下の「算術評価」で説明されているルールに従って評価されます。算術式 expr2 は、ゼロと評価されるまで繰り返し評価されます。 expr2 がゼロ以外の値に評価されるたびに、list が実行され、算術式 expr3 が評価されます。式が省略された場合、1 に評価されるかのように動作します。戻り値は、 実行されたリスト内の最後のコマンドの終了ステータス、または式のいずれかが無効な場合は false です。

select name [ in word ] ; do list ; done

in に続く単語のリストが展開され、項目のリストが生成されます。拡張された単語のセットは標準エラーに出力され、それぞれの前に数字が付けられます。 in word が省略された場合、位置パラメータが出力されます (下記のパラメータを参照)。次にPS3 プロンプトが表示され、標準入力から行が読み取られます。行が表示された単語の 1 つに対応する数字で構成されている場合、name の値はその単語に設定されます。行が空の場合は、単語とプロンプトが再度表示されます。 EOF が読み取られると、コマンドは完了します。他の値が読み取られると、name が null に設定されます。読み取られた行は変数REPLYに保存されます。 リストは、ブレークコマンドが実行されるまで、各選択後に実行されます。 select の終了ステータスは、list で実行された最後のコマンドの終了ステータス、またはコマンドが実行されなかった場合は 0 です。

case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac

case コマンドは、まず 単語 を展開し、「パターン マッチング」で説明されている一致ルールを使用して、それを各パターンと順番に照合しようとします。以下です。 単語は、チルダ展開、パラメータと変数の展開、算術展開、コマンド置換、プロセス置換、および引用符の削除を使用して展開されます。検査される各パターンは、チルダ展開、パラメータと変数の展開、算術展開、コマンド置換、およびプロセス置換を使用して展開されます。 nocasematch シェル オプションが有効になっている場合、アルファベットの大文字と小文字に関係なく照合が実行されます。一致するものが見つかると、 対応するリストが実行されます。 ;; 演算子が使用されている場合、最初のパターン一致の後、それ以降の一致は試行されません。 ;; の代わりに ;& を使用すると、次のパターン セットに関連付けられたリストで実行が続行されます。 ;; の代わりに ;;& を使用すると、シェルはステートメント内の次のパターン リスト (存在する場合) をテストし、関連するリストを実行します。 > 一致した場合は、パターン リストが一致しなかったかのように case ステートメントの実行を続行します。一致するパターンがない場合、終了ステータスは 0 になります。それ以外の場合は、リストで実行された最後のコマンドの終了ステータスです。

if list; then list; [ elif list; then list; ] ... [ else list; ] fi

if のリストが実行されます。終了ステータスが 0 の場合、thenリストが実行されます。それ以外の場合、各elifリストは順番に実行され、その終了ステータスがゼロの場合は、 対応するthenリストが実行されます。が実行され、コマンドが完了します。それ以外の場合、elseリストが存在する場合は実行されます。終了ステータスは、最後に実行されたコマンドの終了ステータス、または真と判定された条件がない場合は 0 です。

while list-1; do list-2; done
until list-1; do list-2; done

while コマンドは、リスト list-1 の最後のコマンドが終了ステータス 0 を返す限り、リスト list-2 を継続的に実行します。 until コマンドは、テストが否定されることを除いて、while コマンドと同じです。list-2 は、最後のコマンドが存在する限り実行されます。 list-1 はゼロ以外の終了ステータスを返します。 while および until コマンドの終了ステータスは、list-2 で実行された最後のコマンドの終了ステータス、または何も実行されなかった場合は 0 です。 。

コプロセス

coprocess は、coproc 予約語が前に付くシェル コマンドです。コプロセスは、実行シェルとコプロセスの間に双方向パイプが確立され、あたかもコマンドが& 制御演算子で終了したかのように、サブシェルで非同期に実行されます。

コプロセスの形式は次のとおりです。

coproc [NAME] command [redirections]

これにより、NAME という名前のコプロセスが作成されます。 NAME が指定されていない場合、デフォルトの名前は COPROC です。 コマンドが単純なコマンドである場合は、名前を指定しないでください(上記を参照)。それ以外の場合は、単純なコマンドの最初の単語として解釈されます。コプロセスが実行されると、シェルは実行中のシェルのコンテキストで NAME という名前の配列変数 (下記の配列 を参照) を作成します。 コマンドの標準出力はパイプを介して実行シェルのファイル記述子に接続され、そのファイル記述子はNAME[0]に割り当てられます。 コマンドの標準入力はパイプを介して実行シェルのファイル記述子に接続され、そのファイル記述子はNAME[1]に割り当てられます。このパイプは、コマンドで指定されたリダイレクトの前に確立されます (以下のリダイレクトを参照)。ファイル記述子は、標準の単語拡張を使用したシェル コマンドおよびリダイレクトへの引数として利用できます。コマンドを実行して置換を処理するために作成されたもの以外のファイル記述子は、サブシェルでは使用できません。コプロセスを実行するために生成されたシェルのプロセス ID は、変数 NAME_PID の値として利用できます。 wait 組み込みコマンドは、コプロセスが終了するのを待つために使用できます。

コプロセスは非同期コマンドとして作成されるため、coproc コマンドは常に成功を返します。コプロセスの戻りステータスはコマンドの終了ステータスです。

シェル関数の定義

シェル関数は、単純なコマンドのように呼び出され、新しい位置パラメータのセットを使用して複合コマンドを実行するオブジェクトです。シェル関数は次のように宣言されます。

fname () compound-command [redirection]
function fname [()] compound-command [redirection]

これにより、fname という名前の関数が定義されます。予約語である関数はオプションです。 関数予約語を指定する場合、括弧はオプションです。関数の本体は複合コマンドcompound-commandです(上記の複合コマンドを参照)。そのコマンドは通常、{ と } の間にあるコマンドのリストですが、上記の複合コマンドにリストされているコマンドであればどれでも構いません。ただし、1 つの例外があります: 関数 の場合 予約語が使用されていますが、括弧は指定されていません。中括弧が必要です。 compound-command は、fname が単純なコマンドの名前として指定されるたびに実行されます。 posix モードの場合、 fname は有効なシェル名である必要があり、POSIX の特別な組み込み の名前であってはなりません。デフォルト モードでは、関数名には、$ を含まない、引用符で囲まれていない任意のシェル単語を使用できます。関数の定義時に指定されたリダイレクト (下記のリダイレクトを参照) は、関数の実行時に実行されます。構文エラーが発生するか、同じ名前の読み取り専用関数がすでに存在しない限り、関数定義の終了ステータスは 0 です。実行時の関数の終了ステータスは、本体内で実行された最後のコマンドの終了ステータスになります。 (以下の機能を参照してください。)

コメント

非対話型シェル、または shopt 組み込みの interactive_comments オプションが有効になっている対話型シェル (下記のシェル組み込みコマンドを参照)の場合、# で始まる単語を指定すると、その単語とその行の残りの文字がすべて無視されます。 interactive_comments オプションが有効になっていない対話型シェルではコメントが許可されません。インタラクティブ シェルでは、interactive_comments オプションがデフォルトでオンになっています。

引用

引用符は、特定の文字または単語の特別な意味をシェルから削除するために使用されます。引用符を使用すると、特殊文字の特別な処理を無効にしたり、予約語がそのように認識されないようにしたり、パラメータの拡張を防ぐことができます。

上記の定義にリストされている各メタ文字はシェルにとって特別な意味を持ち、それ自体を表す場合は引用符で囲む必要があります。

コマンド履歴拡張機能が使用されている場合 (下記の履歴拡張を参照)、履歴拡張文字 (通常は !) を引用符で囲む必要があります。歴史の展開。

引用符のメカニズムには、エスケープ文字、一重引用符、および二重引用符の 3 つがあります。

引用符で囲まれていないバックスラッシュ (\) はエスケープ文字です。 <newline> を除き、その後に続く次の文字のリテラル値が保持されます。 \<newline> ペアが表示され、バックスラッシュ自体が引用符で囲まれていない場合、\<newline> は継続行として扱われます (つまり、行から削除されます)。入力ストリームは無視されます)。

文字を一重引用符で囲むと、引用符内の各文字のリテラル値が保持されます。バックスラッシュが前にある場合でも、一重引用符の間に一重引用符を入れることはできません。

文字を二重引用符で囲むと、$、`、\ を除き、引用符内のすべての文字のリテラル値が保持されます。履歴の展開が有効になっています、!。シェルがposix モードの場合、履歴展開が有効になっている場合でも、二重引用符内の ! は特別な意味を持ちません。文字 $ と ` は二重引用符内で特別な意味を保持します。バックスラッシュは、$、`、 " 、\のいずれかの文字が後に続く場合にのみ特別な意味を保持します。 >、または <newline>。二重引用符は、前にバックスラッシュを付けることで二重引用符内で囲むことができます。有効にすると、! が出現しない限り、履歴展開が実行されます。二重引用符はバックスラッシュを使用してエスケープされます。! の前のバックスラッシュは削除されません。

特殊パラメータ * と @ は、二重引用符で囲んだ場合に特別な意味を持ちます (下記のパラメータ を参照)。

$'string' 形式の単語は特別に扱われます。単語は文字列に展開され、ANSI C 標準の指定に従ってバックスラッシュでエスケープされた文字が置き換えられます。バックスラッシュ エスケープ シーケンスが存在する場合、次のようにデコードされます。

\a

警報(ベル)

\b

バックスペース

\e
\E

エスケープ文字

\f

フォームフィード

\n

改行

\r

キャリッジリターン

\t

水平タブ

\v

垂直タブ

\\

バックスラッシュ

\'

一重引用符

\"

二重引用符

\?

疑問符

\nnn

値が 8 進数値 nnn (1 ~ 3 桁の 8 進数) である 8 ビット文字

\xHH

値が 16 進数値 HH (1 桁または 2 桁の 16 進数) である 8 ビット文字

\uHHHH

値が 16 進値 HHHH (1 ~ 4 桁の 16 進数) である Unicode (ISO/IEC 10646) 文字

\UHHHHHHHH

値が 16 進値 HHHHHHHH (1 ~ 8 の 16 進数) である Unicode (ISO/IEC 10646) 文字

\cx

Control-x 文字

展開された結果は、ドル記号が存在しないかのように単一引用符で囲まれます。

二重引用符で囲まれ、その前にドル記号が付いている文字列 ($"string") を指定すると、現在のロケールに従って文字列が翻訳されます。 gettext インフラストラクチャは、LC_MESSAGES および TEXTDOMAIN シェル変数を使用して、メッセージ カタログの検索と変換を実行します。現在のロケールが C または POSIX の場合、または利用可能な翻訳がない場合、ドル記号は無視されます。文字列が翻訳されて置換される場合、置換文字列は二重引用符で囲まれます。

パラメーター

パラメータは、値を保存するエンティティです。これは名前、数値、または以下の特殊パラメータにリストされている特殊文字のいずれかです。 変数は名前で示されるパラメータです。変数には値と 0 個以上の属性があります。属性は、declare 組み込みコマンドを使用して割り当てられます (以下のシェル組み込みコマンドのdeclare を参照)。

パラメータは、値が割り当てられている場合に設定されます。 NULL 文字列は有効な値です。変数が設定されると、unset 組み込みコマンドを使用することによってのみ設定を解除できます (下記のシェル組み込みコマンドを参照)。

変数は、次の形式のステートメントによって代入できます。

name=[value]

値が指定されていない場合、変数には null 文字列が割り当てられます。すべての値は、チルダ展開、パラメータと変数の展開、コマンド置換、算術展開、および引用符の削除を受けます (下記の展開を参照)。変数に整数属性が設定されている場合、$ ((...)) 拡張が使用されていなくても、値は算術式として評価されます(「以下の算術拡張)。以下の「特殊パラメータ」で説明するように、"$@" を除き、単語の分割は実行されません。パス名の展開は行われません。代入ステートメントは、エイリアス、宣言、タイプセット、エクスポート、読み取り専用< への引数としても使用できます。 およびローカル組み込みコマンド (宣言 コマンド)。 posix モードの場合、これらの組み込みはコマンド組み込みの 1 つ以上のインスタンスの後にコマンド内に表示され、これらの代入ステートメントのプロパティを保持します。

代入ステートメントがシェル変数または配列インデックスに値を代入しているコンテキストでは、+= 演算子を使用して変数の前の値に追加または追加できます。これには、 代入ステートメントを受け入れる declare などの組み込みコマンド (宣言 コマンド) への引数が含まれます。 += が integer 属性が設定されている変数に適用されると、value が算術式として評価され、変数の現在の値に追加され、これも評価されます。 。 += が複合代入を使用して配列変数に適用される場合 (以下の配列 を参照)、変数の値は (= を使用する場合と同様) 設定解除されず、新しい値が配列の先頭に追加されます。配列の最大インデックスより 1 大きい値 (インデックス付き配列の場合)、または連想配列内の追加のキーと値のペアとして追加されます。文字列値の変数に適用すると、値が展開され、変数の値に追加されます。

declare または local 組み込みコマンドの -n オプションを使用して、変数に nameref 属性を割り当てることができます(「以下の宣言 とローカル の説明) を参照して、nameref または別の変数への参照を作成します。これにより、変数を間接的に操作できるようになります。 nameref 変数が参照、割り当て、設定解除、またはその属性の変更が行われるとき (nameref 属性自体の使用または変更を除く)、操作は実際には nameref 変数の値で指定された変数に対して実行されます。 。 nameref は通常、名前が引数として関数に渡される変数を参照するためにシェル関数内で使用されます。たとえば、変数名が最初の引数としてシェル関数に渡された場合、

declare -n ref=$1

関数内で、最初の引数として渡された変数名を値とする nameref 変数 ref が作成されます。 ref への参照と代入、およびその属性の変更は、名前が $1 として渡された変数への参照、代入、および属性の変更として扱われます。 for ループ内の制御変数に nameref 属性がある場合、単語のリストをシェル変数のリストにすることができ、リスト内の各単語に対して名前参照が確立されます。ループが実行されます。配列変数にnameref属性を与えることはできません。ただし、nameref 変数は配列変数および添字付き配列変数を参照できます。 Nameref は、unset 組み込みの -n オプションを使用して設定を解除できます。それ以外の場合、nameref 変数の名前を引数としてunsetを実行すると、nameref 変数によって参照される変数の設定が解除されます。

位置パラメータ

位置パラメータは、1 桁の 0 以外の 1 つ以上の数字で示されるパラメータです。位置パラメータは、シェルの呼び出し時にシェルの引数から割り当てられ、set を使用して再割り当てできます。 組み込みコマンド。位置パラメータは、代入ステートメントを使用して代入することはできません。位置パラメータは、シェル関数の実行時に一時的に置き換えられます (以下の関数を参照)。

複数の数字で構成される位置パラメータを展開する場合は、中かっこで囲む必要があります (下記の展開を参照)。

特別なパラメータ

シェルはいくつかのパラメータを特別に扱います。これらのパラメータは参照のみ可能です。それらへの割り当ては許可されません。

*

1 から始まる位置パラメータに展開します。展開が二重引用符で囲まれていない場合、各位置パラメータは個別の単語に展開されます。これが実行されるコンテキストでは、これらの単語はさらに単語の分割とパス名拡張の対象になります。二重引用符内で展開が行われる場合、IFS 特殊変数の最初の文字で区切られた各パラメータの値を持つ単一の単語に展開されます。つまり、「$*」は「$1c$2c」と同等です。 ..."。c は IFS 変数の値の最初の文字です。 IFS が設定されていない場合、パラメータはスペースで区切られます。 IFS が null の場合、パラメータは区切り文字を介さずに結合されます。

@

1 から始まる位置パラメータに展開します。単語の分割が実行されるコンテキストでは、これにより各位置パラメーターが個別の単語に展開されます。二重引用符で囲まれていない場合、これらの単語は単語分割の対象になります。単語分割が実行されないコンテキストでは、各位置パラメータがスペースで区切られた単一の単語に展開されます。二重引用符内で展開が行われる場合、各パラメータは個別の単語に展開されます。つまり、「$@」は「$1」「$2」と同等です...単語内で二重引用符で囲まれた展開が発生する場合、最初のパラメータの展開は元の単語の先頭部分と結合され、最後のパラメータの展開は元の単語の最後の部分と結合されます。位置パラメータがない場合、「$@」と $@ は何も展開されません (つまり、削除されます)。

#

10 進数の位置パラメータの数に展開されます。

?

最後に実行されたフォアグラウンド パイプラインの終了ステータスに展開されます。

-

呼び出し時に set 組み込みコマンドによって指定された現在のオプション フラグ、またはシェル自体によって設定されたフラグ (-i オプションなど) に展開されます。

$

シェルのプロセス ID に展開されます。() サブシェルでは、サブシェルではなく、現在のシェルのプロセス ID に展開されます。

!

非同期コマンドとして実行されたか、bg ビルトインを使用して実行されたかにかかわらず、最後にバックグラウンドに配置されたジョブのプロセス ID に展開されます (下記のジョブ コントロールを参照)。

0

シェルまたはシェル スクリプトの名前に展開されます。これはシェルの初期化時に設定されます。コマンドのファイルを使用して bash が呼び出された場合、$0 がそのファイルの名前に設定されます。 bash が -c オプションで起動された場合、実行される文字列の後の最初の引数に $0 が設定されます (存在する場合)。 。それ以外の場合は、引数 0 で指定されたbash の呼び出しに使用されるファイル名に設定されます。

シェル変数

次の変数がシェルによって設定されます。

_

シェルの起動時に、環境または引数リストで渡されたシェルまたは実行中のシェル スクリプトの呼び出しに使用されるパス名に設定します。続いて、展開後、フォアグラウンドで実行された前の単純なコマンドの最後の引数に展開されます。また、実行され、そのコマンドにエクスポートされた環境に配置された各コマンドを呼び出すために使用される完全パス名にも設定されます。メールをチェックする場合、このパラメータには現在チェックされているメール ファイルの名前が保持されます。

BASH

このbashインスタンスを呼び出すために使用される完全なファイル名に展開されます。

BASHOPTS

有効なシェル オプションのコロンで区切られたリスト。リスト内の各単語は、shopt 組み込みコマンドの -s オプションの有効な引数です (下記のシェル組み込みコマンドを参照)。 BASHOPTS に表示されるオプションは、shopt によってオンとして報告されたオプションです。 bash の起動時にこの変数が環境内にある場合、起動ファイルを読み取る前にリスト内の各シェル オプションが有効になります。この変数は読み取り専用です。

BASHPID

現在のbashプロセスのプロセスIDに展開されます。これは、bash を再初期化する必要のないサブシェルなど、特定の状況における $$ とは異なります。 BASPID への割り当ては効果がありません。 BASPID が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

BASH_ALIASES

メンバーがエイリアスビルトインによって維持されるエイリアスの内部リストに対応する連想配列変数。この配列に追加された要素は、エイリアス リストに表示されます。ただし、現時点では、配列要素の設定を解除しても、エイリアスがエイリアス リストから削除されることはありません。 BASH_ALIASES が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

BASH_ARGC

現在のbash実行コールスタックの各フレーム内のパラメータの数を値とする配列変数。現在のサブルーチン (. または source で実行されるシェル関数またはスクリプト) へのパラメーターの数がスタックの一番上にあります。サブルーチンが実行されると、渡されたパラメータの数がBASH_ARGC にプッシュされます。シェルは、拡張デバッグ モードの場合にのみ BASH_ARGC を設定します (以下の shopt ビルトインの extdebug オプションの説明を参照してください)。シェルがスクリプトの実行を開始した後に extdebug を設定したり、extdebug が設定されていないときにこの変数を参照したりすると、値が矛盾する可能性があります。

BASH_ARGV

現在のbash実行コールスタック内のすべてのパラメータを含む配列変数。最後のサブルーチン呼び出しの最後のパラメータはスタックの一番上にあります。最初の呼び出しの最初のパラメータは一番下にあります。サブルーチンが実行されると、指定されたパラメータがBASH_ARGV にプッシュされます。シェルは、拡張デバッグ モードの場合にのみ BASH_ARGV を設定します (以下の shopt ビルトインの extdebug オプションの説明を参照してください)。シェルがスクリプトの実行を開始した後に extdebug を設定したり、extdebug が設定されていないときにこの変数を参照したりすると、値が矛盾する可能性があります。

BASH_ARGV0

この変数は、参照されると、シェルまたはシェル スクリプトの名前に展開されます ($0 と同じです。上記の特殊パラメータ 0 の説明を参照してください)。 BASH_ARGV0 に代入すると、割り当てられた値が $0 にも割り当てられます。 BASH_ARGV0 が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

BASH_CMDS

メンバーがハッシュ ビルトインによって維持されるコマンドの内部ハッシュ テーブルに対応する連想配列変数。この配列に追加された要素はハッシュ テーブルに表示されます。ただし、現時点では、配列要素の設定を解除してもコマンド名がハッシュ テーブルから削除されることはありません。 BASH_CMDS が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

BASH_COMMAND

現在実行中または実行されようとしているコマンド。ただし、シェルがトラップの結果としてコマンドを実行している場合は除きます。トラップの結果としてコマンドが実行されている場合は、トラップ時に実行中のコマンドです。 BASH_COMMAND が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

BASH_EXECUTION_STRING

-c 呼び出しオプションのコマンド引数。

BASH_LINENO

FUNCNAME の対応する各メンバーが呼び出されたソース ファイル内の行番号をメンバーとする配列変数。 $ {BASH_LINENO[$i]} はソース ファイルの行番号です ($ {BASH_SOURCE[<$i+1]}) ここで $ {FUNCNAME[$i ]} が呼び出されました (または、別のシェル関数内で参照されている場合は $ {BASH_LINENO[$i-1]}) 。現在の行番号を取得するには、LINENO を使用します。

BASH_LOADABLES_PATH

シェルがenable コマンドで指定された動的にロード可能なビルトインを検索するディレクトリのコロンで区切られたリスト。

BASH_REMATCH

=~ 二項演算子によってメンバーが [[ 条件付きコマンドに割り当てられる配列変数。インデックス 0 の要素は、正規表現全体と一致する文字列の部分です。インデックス n の要素は、n 番目の括弧で囲まれた部分式に一致する文字列の部分です。

BASH_SOURCE

FUNCNAME 配列変数内の対応するシェル関数名が定義されているソース ファイル名をメンバーとする配列変数。シェル関数 $ {FUNCNAME[$i]} はファイル $ {BASH_SOURCE[$i]} と $ {BASH_SOURCE[$i+1] から呼び出しました。 ]}。

BASH_SUBSHELL

シェルがその環境で実行を開始すると、各サブシェルまたはサブシェル環境内で 1 ずつ増加します。初期値は 0 です。BASH_SUBSHELL が設定されていない場合、その後リセットされても、その特別なプロパティは失われます。

BASH_VERSINFO

メンバーがbash のこのインスタンスのバージョン情報を保持する読み取り専用の配列変数。配列メンバーに割り当てられる値は次のとおりです。

BASH_VERSINFO[0]

メジャー バージョン番号 (リリース)。

BASH_VERSINFO[1]

マイナー バージョン番号 (バージョン)。

BASH_VERSINFO[2]

パッチレベル。

BASH_VERSINFO[3]

ビルドバージョン。

BASH_VERSINFO[4]

リリース ステータス (ベータ 1 など)。

BASH_VERSINFO[5]

MACHTYPE の値。

BASH_VERSION

bash のこのインスタンスのバージョンを説明する文字列に展開されます。

COMP_CWORD

現在のカーソル位置を含む単語の $ {COMP_WORDS} へのインデックス。この変数は、プログラマブル補完機能によって呼び出されるシェル関数でのみ使用できます (下記のプログラマブル補完を参照)。

COMP_KEY

現在の完了関数を呼び出すために使用されるキー (またはキー シーケンスの最後のキー)。

COMP_LINE

現在のコマンドライン。この変数は、プログラマブル補完機能によって呼び出されるシェル関数および外部コマンドでのみ使用できます (下記のプログラマブル補完を参照)。

COMP_POINT

現在のコマンドの先頭を基準とした現在のカーソル位置のインデックス。現在のカーソル位置が現在のコマンドの最後にある場合、この変数の値は $ {#COMP_LINE} と等しくなります。この変数は、プログラマブル補完機能によって呼び出されるシェル関数および外部コマンドでのみ使用できます (下記のプログラマブル補完を参照)。

COMP_TYPE

補完関数の呼び出しの原因となった試行された補完のタイプに対応する整数値に設定します: TAB (通常の補完の場合)、 ? (連続するタブの後の補完のリストの場合) ! は単語の部分補完の代替をリストする場合、@ は単語が変更されていない場合に補完をリストする場合、または % はメニュー補完の場合です。この変数は、プログラマブル補完機能によって呼び出されるシェル関数および外部コマンドでのみ使用できます (下記のプログラマブル補完を参照)。

COMP_WORDBREAKS

readline ライブラリが単語補完を実行するときに単語の区切り文字として扱う文字のセット。 COMP_WORDBREAKS が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

COMP_WORDS

現在のコマンド ラインの個々の単語で構成される配列変数 (下記の配列を参照)。行は、readline が上記で説明したように COMP_WORDBREAKS を使用して分割するのと同じように、単語に分割されます。この変数は、プログラマブル補完機能によって呼び出されるシェル関数でのみ使用できます (下記のプログラマブル補完を参照)。

COPROC

名前のないコプロセス (上記のコプロセスを参照) との間の出力および入力用のファイル記述子を保持するために作成された配列変数 (以下の配列を参照)。

DIRSTACK

ディレクトリ スタックの現在の内容を含む配列変数 (下記の配列を参照)。ディレクトリは、dirs ビルトインによって表示される順序でスタックに表示されます。この配列変数のメンバーへの代入は、スタック内にすでに存在するディレクトリを変更するために使用できますが、 ディレクトリの追加と削除にはpushd および popd ビルトインを使用する必要があります。この変数に代入しても、現在のディレクトリは変更されません。 DIRSTACK が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

EPOCHREALTIME

このパラメータが参照されるたびに、Unix エポック (時間(3) を参照) からの秒数がマイクロ秒単位の浮動小数点値として拡張されます。 EPOCHREALTIME への割り当ては無視されます。 EPOCHREALTIME が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

EPOCHSECONDS

このパラメータが参照されるたびに、Unix エポックからの秒数に拡張されます (時間(3) を参照)。 EPOCHSECONDS への割り当ては無視されます。 EPOCHSECONDS が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

EUID

現在のユーザーの実効ユーザー ID に展開され、シェルの起動時に初期化されます。この変数は読み取り専用です。

FUNCNAME

現在実行呼び出しスタック内にあるすべてのシェル関数の名前を含む配列変数。インデックス 0 の要素は、現在実行中のシェル関数の名前です。最下位の要素 (インデックスが最も高い要素) は「main」です。この変数は、シェル関数が実行されている場合にのみ存在します。 FUNCNAME への割り当ては効果がありません。 FUNCNAME が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

この変数はBASH_LINENO および BASH_SOURCE とともに使用できます。 FUNCNAME の各要素には、コール スタックを記述するための対応する要素が BASH_LINENO と BASH_SOURCE にあります。たとえば、$ {FUNCNAME[$i]} はファイル $ {BASH_SOURCE[$i+1]} 行番号 $ {BASH_LINENO[$i] ]}。 呼び出し元 ビルトインは、この情報を使用して現在の呼び出しスタックを表示します。

GROUPS

現在のユーザーがメンバーであるグループのリストを含む配列変数。 グループへの割り当ては効果がありません。 グループが設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

HISTCMD

現在のコマンドの履歴番号、または履歴リスト内のインデックス。 HISTCMD への割り当ては無視されます。 HISTCMD が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

HOSTNAME

現在のホストの名前に自動的に設定されます。

HOSTTYPE

bash が実行されているマシンのタイプを一意に記述する文字列に自動的に設定されます。デフォルトはシステムに依存します。

LINENO

このパラメータが参照されるたびに、シェルはスクリプトまたは関数内の現在の連続行番号 (1 から始まる) を表す 10 進数に置き換えます。スクリプトまたは関数内にない場合、置換される値が意味を持つかどうかは保証されません。 LINENO が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

MACHTYPE

標準の GNUcpu-company-system 形式で、bash が実行されているシステム タイプを完全に説明する文字列に自動的に設定されます。デフォルトはシステムに依存します。

MAPFILE

変数名が指定されていない場合に、マップファイル組み込みによって読み取られたテキストを保持するために作成される配列変数 (下記の配列を参照)。

OLDPWD

cd コマンドで設定された以前の作業ディレクトリ。

OPTARG

getopts 組み込みコマンドによって処理される最後のオプション引数の値 (下記のシェル組み込みコマンドを参照)。

OPTIND

getopts 組み込みコマンドによって処理される次の引数のインデックス (下記のシェル組み込みコマンドを参照)。

OSTYPE

bash が実行されているオペレーティング システムを説明する文字列に自動的に設定されます。デフォルトはシステムに依存します。

PIPESTATUS

最近実行されたフォアグラウンド パイプライン (単一のコマンドのみを含む場合がある) 内のプロセスからの終了ステータス値のリストを含む配列変数 (下記の配列 を参照)。

PPID

シェルの親のプロセス ID。この変数は読み取り専用です。

PWD

cd コマンドで設定された現在の作業ディレクトリ。

RANDOM

このパラメータが参照されるたびに、0 ~ 32767 のランダムな整数に拡張されます。ランダムに値を割り当てると、乱数のシーケンスが初期化 (シード) されます。 RANDOM が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

READLINE_LINE

「bind -x」 で使用するreadline 行バッファの内容 (下記のシェル組み込みコマンドを参照)。

READLINE_MARK

readline 行バッファ内のマーク (保存された挿入ポイント) の位置。「bind -x」で使用します (下記のシェル組み込みコマンドを参照)。挿入ポイントとマークの間の文字は、 多くの場合領域と呼ばれます。

READLINE_POINT

「bind -x」 で使用するreadline 行バッファ内の挿入ポイントの位置 ( 以下のシェル組み込みコマンドを参照)。

REPLY

引数が指定されていない場合に、read 組み込みコマンドによって読み取られた入力行に設定されます。

SECONDS

このパラメータが参照されるたびに、シェルの呼び出しからの秒数が返されます。値が SECONDS に割り当てられている場合、後続の参照時に返される値は、割り当て後の秒数に割り当てられた値を加えたものになります。シェル呼び出し時の秒数と現在時刻は、常にシステム クロックを照会することによって決定されます。 SECONDS が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

SHELLOPTS

有効なシェル オプションのコロンで区切られたリスト。リスト内の各単語は、set 組み込みコマンドの -o オプションの有効な引数です (下記のシェル組み込みコマンドを参照)。 SHELLOPTS に表示されるオプションは、set -o によってオンとして報告されるオプションです。 bash の起動時にこの変数が環境内にある場合、起動ファイルを読み取る前にリスト内の各シェル オプションが有効になります。この変数は読み取り専用です。

SHLVL

bash のインスタンスが開始されるたびに 1 ずつ増加します。

SRANDOM

この変数は参照されるたびに 32 ビットの擬似乱数に拡張されます。乱数ジェネレーターは、/dev/urandom または arc4random をサポートするシステムでは線形ではないため、返される各数値は、その前の数値と関係がありません。乱数ジェネレーターにはシードを設定できないため、この変数への代入は効果がありません。 SRANDOM が設定されていない場合、後でリセットしたとしても、その特別なプロパティは失われます。

UID

シェルの起動時に初期化される、現在のユーザーのユーザー ID に展開されます。この変数は読み取り専用です。

次の変数はシェルによって使用されます。場合によっては、bash が変数にデフォルト値を割り当てます。これらのケースについては以下で説明します。

BASH_COMPAT

この値は、シェルの互換性レベルを設定するために使用されます。さまざまな互換性レベルとその影響については、以下のシェル互換モードを参照してください。値は、必要な互換性レベルに対応する 10 進数 (例: 4.2) または整数 (例: 42) です。 BASH_COMPAT が設定されていない場合、または空の文字列に設定されている場合、互換性レベルは現在のバージョンのデフォルトに設定されます。 BASH_COMPAT が有効な互換性レベルのいずれでもない値に設定されている場合、シェルはエラー メッセージを出力し、互換性レベルを現在のバージョンのデフォルトに設定します。有効な値は、以下で説明する互換性レベルに対応します。

BSHELL互換性モード。たとえば、4.2 と 42 は、compat42 shopt オプションに対応し、互換性レベルを 42 に設定する有効な値です。現在のバージョンも有効な値です。

BASH_ENV

bash がシェル スクリプトを実行しているときにこのパラメータが設定されている場合、その値は、~/.bashrc のように、シェルを初期化するコマンドを含むファイル名として解釈されます。 BASH_ENV の値は、ファイル名として解釈される前に、パラメータ展開、コマンド置換、および算術展開が行われます。

PATH は、結果のファイル名の検索には使用されません。

BASH_XTRACEFD

有効なファイル記述子に対応する整数に設定すると、bash はset -x が有効になったときに生成されたトレース出力をそのファイル記述子に書き込みます。 BASH_XTRACEFD が設定解除されるか、新しい値が割り当てられると、ファイル記述子は閉じられます。 BASH_XTRACEFD を設定解除するか、空の文字列を割り当てると、トレース出力が標準エラーに送信されます。 BASH_XTRACEFD を 2 (標準エラー ファイル記述子) に設定してから設定を解除すると、標準エラーが閉じられることに注意してください。

CDPATH

cd コマンドの検索パス。これは、シェルが cd コマンドで指定された宛先ディレクトリを検索するディレクトリのコロンで区切られたリストです。サンプル値は「.:~:/usr」です。

CHILD_MAX

シェルが記憶する、終了した子ステータス値の数を設定します。 Bash では、この値を POSIX で規定された最小値よりも小さくすることはできません。また、これを超えてはいけない最大値 (現在 8192) が存在します。最小値はシステムに依存します。

COLUMNS

選択リストを印刷するときに端子の幅を決定するためにselect 複合コマンドによって使用されます。 checkwinsize オプションが有効になっている場合、または対話型シェルで SIGWINCH を受信したときに自動的に設定されます。

COMPREPLY

プログラム可能な補完機能によって呼び出されるシェル関数によって生成される可能な補完をbashが読み取る配列変数です (下記のプログラム可能な補完を参照)。各配列要素には、可能な補完が 1 つ含まれます。

EMACS

シェルが値 "t" で開始したときにbash が環境内でこの変数を見つけると、シェルが Emacs シェルバッファ内で実行されていると想定され、行編集が無効になります。

ENV

対話型シェルがposix モードで呼び出されたときに、BASH_ENV (上記のINVOCATIONを参照) と同様に展開されて実行されます。

EXECIGNORE

PATH を使用したコマンド検索で無視されるファイル名のリストを定義するシェル パターンのコロンで区切られたリスト (パターン マッチングを参照)。完全パス名がこれらのパターンのいずれかに一致するファイルは、PATH ルックアップによる補完やコマンドの実行の目的では実行可能ファイルとみなされません。これは、[、test、および [[ コマンドの動作には影響しません。コマンド ハッシュ テーブル内のフル パス名はEXECIGNOREの対象になりません。この変数を使用して、実行可能ビットが設定されているが実行可能ファイルではない共有ライブラリ ファイルを無視します。パターン マッチングでは、extglob シェル オプションの設定が尊重されます。

FCEDIT

fc 組み込みコマンドのデフォルトのエディター。

FIGNORE

ファイル名補完を実行するときに無視するサフィックスのコロンで区切られたリスト (以下の読み取りラインを参照)。接尾辞が FIGNORE のエントリのいずれかと一致するファイル名は、一致したファイル名のリストから除外されます。サンプル値は「.o:~」です。

FUNCNEST

0 より大きい数値に設定すると、関数の最大ネスト レベルが定義されます。このネスト レベルを超える関数呼び出しを行うと、現在のコマンドが中止されます。

GLOBIGNORE

パス名展開で無視されるファイル名のセットを定義するパターンのコロンで区切られたリスト。パス名展開パターンと一致するファイル名がGLOBIGNOREのパターンのいずれかにも一致する場合、そのファイルは一致リストから削除されます。

HISTCONTROL

コマンドを履歴リストに保存する方法を制御する値のコロンで区切られたリスト。値のリストにignorespaceが含まれている場合、スペース文字で始まる行は履歴リストに保存されません。 ignoredups の値を指定すると、前の履歴エントリに一致する行は保存されません。 ignoreboth の値は、ignorespace と ignoredups の省略形です。 erasedups の値を指定すると、現在の行に一致する以前のすべての行が、その行が保存される前に履歴リストから削除されます。上記のリストにない値は無視されます。 HISTCONTROL が設定されていない場合、または有効な値が含まれていない場合、HISTIGNORE の値に従って、シェル パーサーによって読み取られたすべての行が履歴リストに保存されます。複数行の複合コマンドの 2 行目以降はテストされず、HISTCONTROL の値に関係なく履歴に追加されます。

HISTFILE

コマンド履歴が保存されるファイルの名前 (下記の履歴を参照)。デフォルト値は~/.bash_history です。設定しない場合、シェルの終了時にコマンド履歴は保存されません。

HISTFILESIZE

履歴ファイルに含まれる最大行数。この変数に値が割り当てられると、必要に応じて、履歴ファイルは最も古いエントリを削除して、その行数を超えないように切り詰められます。履歴ファイルも、シェルの終了時に書き込まれた後、このサイズに切り詰められます。値が 0 の場合、履歴ファイルはゼロ サイズに切り詰められます。数値以外の値およびゼロ未満の数値は切り捨てを禁止します。シェルは、起動ファイルを読み取った後、デフォルト値をHISTSIZEの値に設定します。

HISTIGNORE

どのコマンド ラインを履歴リストに保存するかを決定するために使用されるパターンのコロンで区切られたリスト。各パターンは行の先頭に固定されており、完全な行と一致する必要があります (暗黙の `* は追加されません)。各パターンは、HISTCONTROL で指定されたチェックが適用された後、行に対してテストされます。通常のシェル パターン マッチング文字に加えて、`&' は前の履歴行とマッチングします。 `& はバックスラッシュを使用してエスケープできます。バックスラッシュは一致を試みる前に削除されます。複数行の複合コマンドの 2 行目以降はテストされず、HISTIGNORE の値に関係なく履歴に追加されます。パターン マッチングでは、extglob シェル オプションの設定が尊重されます。

HISTSIZE

コマンド履歴に記憶するコマンドの数 (下記の履歴を参照)。値が 0 の場合、コマンドは履歴リストに保存されません。ゼロ未満の数値を指定すると、すべてのコマンドが履歴リストに保存されます (制限はありません)。シェルは、起動ファイルを読み取った後、デフォルト値を 500 に設定します。

HISTTIMEFORMAT

この変数が設定されており、null ではない場合、その値は strftime(3) のフォーマット文字列として使用され、履歴によって表示される各履歴エントリに関連付けられたタイムスタンプを出力します。内蔵。この変数が設定されている場合、タイムスタンプは履歴ファイルに書き込まれ、シェルセッション間でタイムスタンプが保持されるようになります。これは、履歴コメント文字を使用して、タイムスタンプを他の履歴行と区別します。

HOME

現在のユーザーのホーム ディレクトリ。 cd 組み込みコマンドのデフォルトの引数。この変数の値は、チルダ展開を実行するときにも使用されます。

HOSTFILE

/etc/hosts と同じ形式のファイル名が含まれており、シェルがホスト名を完成させる必要があるときに読み取られる必要があります。可能なホスト名補完のリストは、シェルの実行中に変更される可能性があります。値の変更後に次回ホスト名補完が試行されると、bash によって新しいファイルの内容が既存のリストに追加されます。 HOSTFILE が設定されていても、値がないか、読み取り可能なファイルの名前が指定されていない場合、bash は /etc/hosts を読み取って、可能なホスト名補完のリスト。 HOSTFILE が設定されていない場合、ホスト名リストはクリアされます。

IFS

展開後の単語分割と読み取り組み込みコマンドで行を単語に分割するために使用される内部フィールド区切り文字。デフォルト値は「<スペース><タブ><改行>」です。

IGNOREEOF

唯一の入力としてEOF 文字を受信したときの対話型シェルのアクションを制御します。設定されている場合、値は、bash が終了する前に入力行の最初の文字として入力する必要がある連続する EOF 文字の数です。変数が存在しても数値がない場合、または値がない場合、デフォルト値は 10 です。変数が存在しない場合、EOF はシェルへの入力の終了を示します。

INPUTRC

readline スタートアップ ファイルのファイル名。デフォルトの ~/.inputrc をオーバーライドします (下記の READLINE を参照)。

INSIDE_EMACS

シェルの起動時にこの変数が環境に表示される場合、bash は Emacs シェル バッファ内で実行されていると想定し、TERM の値に応じて行編集を無効にすることがあります。

LANG

LC_ で始まる変数で特に選択されていないカテゴリのロケール カテゴリを決定するために使用されます。

LC_ALL

この変数は、ロケール カテゴリを指定する LANG 変数およびその他の LC_ 変数の値をオーバーライドします。

LC_COLLATE

この変数は、パス名展開の結果をソートするときに使用される照合順序を決定し、パス名展開およびパターン マッチング内の範囲式、等価クラス、および照合シーケンスの動作を決定します。

LC_CTYPE

この変数は、パス名展開およびパターン マッチングにおける文字の解釈と文字クラスの動作を決定します。

LC_MESSAGES

この変数は、$ が前に付く二重引用符で囲まれた文字列の翻訳に使用されるロケールを決定します。

LC_NUMERIC

この変数は、数値の書式設定に使用されるロケール カテゴリを決定します。

LC_TIME

この変数は、日付と時刻の書式設定に使用されるロケール カテゴリを決定します。

LINES

選択リストを印刷するための列の長さを決定するためにselect 複合コマンドによって使用されます。 checkwinsize オプションが有効になっている場合、または対話型シェルで SIGWINCH を受信したときに自動的に設定されます。

MAIL

このパラメータがファイル名またはディレクトリ名に設定され、MAILPATH 変数が設定されていない場合、bash は指定されたファイルまたは Maildir 形式でメールが到着したことをユーザーに通知します。ディレクトリ。

MAILCHECK

bash がメールをチェックする頻度 (秒単位) を指定します。デフォルトは 60 秒です。メールをチェックする時期になると、シェルはプライマリ プロンプトを表示する前にチェックを行います。この変数が設定されていない場合、またはゼロ以上の数値ではない値が設定されている場合、シェルはメール チェックを無効にします。

MAILPATH

メールをチェックするファイル名のコロンで区切られたリスト。メールが特定のファイルに到着したときに印刷されるメッセージは、ファイル名とメッセージを「?」で区切ることによって指定できます。 $_ をメッセージのテキストで使用すると、現在のメールファイルの名前に展開されます。例:

MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'

Bash は、この変数のデフォルト値を提供するように設定できます (デフォルト値はありません) が、使用するユーザーメールファイルの場所はシステムに依存します (例: )。

/var/mail/$USER
OPTERR

値 1 に設定すると、bash は getopts 組み込みコマンドによって生成されたエラー メッセージを表示します (下記のシェル組み込みコマンドを参照)。

OPTERR は、シェルが呼び出されるか、シェル スクリプトが実行されるたびに 1 に初期化されます。

PATH

コマンドの検索パス。これは、シェルがコマンドを検索するディレクトリのコロンで区切られたリストです (下記のコマンド実行を参照)。 PATH の値内の長さ 0 (null) のディレクトリ名は、現在のディレクトリを示します。 null ディレクトリ名は、2 つの隣接するコロンとして、または先頭または末尾のコロンとして表示される場合があります。デフォルトのパスはシステムに依存し、bash をインストールする管理者によって設定されます。共通の価値観は、

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
POSIXLY_CORRECT

bash の起動時にこの変数が環境内にある場合、 シェルは--posix 呼び出しのように、起動ファイルを読み取る前にposix モードに入ります。オプションが付けられていました。シェルの実行中に設定すると、bash はコマンドset -o posix が実行されたかのようにposix モードを有効にします。シェルがposix モードに入ると、この変数がまだ設定されていない場合は設定します。

PROMPT_COMMAND

この変数が設定されており、配列である場合、設定された各要素の値は、各プライマリ プロンプトを発行する前にコマンドとして実行されます。これが設定されているが配列変数ではない場合、代わりにその値が実行するコマンドとして使用されます。

PROMPT_DIRTRIM

0 より大きい数値に設定すると、その値は \w および \W プロンプト文字列エスケープを展開するときに保持する末尾のディレクトリ コンポーネントの数として使用されます (< を参照)以下のstrong>プロンプトを参照してください)。削除された文字は省略記号に置き換えられます。

PS0

このパラメータの値は展開され (下記のプロンプトを参照)、コマンドを読み取った後、コマンドが実行される前に対話型シェルによって表示されます。

PS1

このパラメータの値は展開され (以下のプロンプトを参照)、プライマリ プロンプト文字列として使用されます。デフォルト値は「\s-\v\$」です。

PS2

このパラメータの値は、PS1 と同様に展開され、2 番目のプロンプト文字列として使用されます。デフォルトは「> 」です。

PS3

このパラメータの値は、select コマンドのプロンプトとして使用されます (上記のシェル文法を参照)。

PS4

このパラメータの値はPS1 と同様に展開され、実行トレース中に各コマンドbash が表示される前に値が出力されます。 PS4 の展開された値の最初の文字は、複数レベルの間接化を示すために、必要に応じて複数回複製されます。デフォルトは「+ 」です。

SHELL

この変数はシェルへの完全パス名に展開されます。シェルの起動時に設定されていない場合、bash は現在のユーザーのログイン シェルの完全なパス名をシェルに割り当てます。

TIMEFORMAT

このパラメータの値は、time 予約語がプレフィックスとして付けられたパイプラインのタイミング情報を表示する方法を指定する形式文字列として使用されます。 % 文字は、時間値またはその他の情報に展開されるエスケープ シーケンスを導入します。エスケープ シーケンスとその意味は次のとおりです。中括弧はオプションの部分を示します。

%%

文字通りの %。

%[p][l]R

経過時間 (秒)。

%[p][l]U

ユーザーモードで費やしたCPUの秒数。

%[p][l]S

システム モードで費やした CPU 秒数。

%P

CPU の割合 (%U + %S)/%R として計算されます。

オプションの p は、精度、つまり小数点以下の小数部の桁数を指定する数字です。値が 0 の場合、小数点や小数点は出力されません。小数点以下最大 3 桁まで指定できます。 3 より大きい p の値は 3 に変更されます。p が指定されていない場合は、値 3 が使用されます。

オプションの l は、分を含む MMmSS.FFs 形式の長い形式を指定します。 p の値によって、分数が含まれるかどうかが決まります。

この変数が設定されていない場合、bash は値 $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' があるかのように動作します。 。値が null の場合、タイミング情報は表示されません。書式文字列が表示されると、末尾の改行が追加されます。

TMOUT

ゼロより大きい値に設定すると、TMOUT は読み取り組み込みのデフォルトのタイムアウトとして扱われます。 select コマンドは、入力が到着しない場合に終了します。

入力が端末から受信されるときの TMOUT 秒。対話型シェルでは、この値は、プライマリ プロンプトの発行後に 1 行の入力を待つ秒数として解釈されます。完全な入力行が到着しない場合、Bash は指定された秒数待機した後に終了します。

TMPDIR

設定されている場合、bash はその値をディレクトリ名として使用し、bash がシェルで使用する一時ファイルを作成します。

auto_resume

この変数は、シェルがユーザーおよびジョブ コントロールとどのように対話するかを制御します。この変数が設定されている場合、リダイレクトのない単一単語の単純なコマンドは、既存の停止されたジョブの再開の候補として扱われます。曖昧さは許されません。入力した文字列で始まるジョブが複数ある場合は、最後にアクセスしたジョブが選択されます。このコンテキストでは、 停止されたジョブの名前は、ジョブを開始するために使用されるコマンド ラインです。値を exact に設定した場合、指定された文字列は停止したジョブの名前と正確に一致する必要があります。 部分文字列に設定した場合、指定された文字列は停止したジョブの名前の部分文字列と一致する必要があります。 部分文字列値は、%? ジョブ識別子と同様の機能を提供します (下記のジョブ制御を参照)。他の値に設定した場合、指定された文字列は停止されたジョブ名のプレフィックスである必要があります。これにより、%文字列ジョブ識別子に似た機能が提供されます。

histchars

履歴の拡張とトークン化を制御する 2 つまたは 3 つの文字 (下記の履歴の拡張を参照)。最初の文字は履歴拡張文字で、履歴拡張の開始を知らせる文字で、通常は「!」です。 2 番目の文字はクイック置換文字で、以前に入力したコマンドを再実行するための短縮表現として使用され、コマンド内のある文字列を別の文字列に置き換えます。デフォルトは `^' です。オプションの 3 番目の文字は、単語の最初の文字として見つかった場合に、行の残りの部分がコメントであることを示す文字で、通常は `# です。履歴コメント文字により、その行の残りの単語に対する履歴置換がスキップされます。シェル パーサーが行の残りの部分をコメントとして扱うとは限りません。

配列

Bash は、1 次元のインデックス付きの連想配列変数を提供します。任意の変数をインデックス付き配列として使用できます。 declare 組み込み関数は配列を明示的に宣言します。配列のサイズに上限はなく、メンバーに連続してインデックスを付けたり割り当てたりする必要もありません。インデックス付き配列は、整数 (算術式を含む) を使用して参照され、ゼロベースです。連想配列は任意の文字列を使用して参照されます。特に明記されていない限り、インデックス付き配列のインデックスは負でない整数でなければなりません。

name[subscript]=value という構文を使用して変数が割り当てられている場合、インデックス付き配列が自動的に作成されます。 添字は、数値として評価される必要がある算術式として扱われます。インデックス付き配列を明示的に宣言するには、declare -a name を使用します (下記のシェル組み込みコマンドを参照)。 declare -a name[subscript] も受け入れられます。 添え字は無視されます。

連想配列は、declare -A name を使用して作成されます。

属性は、declare および readonly 組み込み関数を使用して配列変数に指定できます。各属性は配列のすべてのメンバーに適用されます。

配列は、 name=(value1 ... valuen という形式の複合割り当てを使用して割り当てられます。 >)。各値は [添え字]=文字列の形式になります。インデックス付き配列の割り当てには文字列以外は必要ありません。リスト内の各値は、以下の拡張で説明するすべてのシェル拡張を使用して拡張されます。インデックス付き配列に割り当てる場合、オプションの大括弧と添字が指定されている場合、そのインデックスは次のように割り当てられます。それ以外の場合、割り当てられる要素のインデックスは、ステートメントによって割り当てられた最後のインデックスに 1 を加えたものになります。インデックス作成はゼロから始まります。

連想配列に代入する場合、複合代入内の単語は、添字が必要な代入ステートメント、または交互のキーと値のシーケンスとして解釈される単語のリストのいずれかになります: name =( キー 1 値 1 キー 2 値 2 ...)。これらは name=( [key1]=value1 [key2] と同様に扱われます。 ]=値 2 ...)。リストの最初の単語によって、残りの単語がどのように解釈されるかが決まります。リスト内のすべての割り当ては同じタイプである必要があります。キーと値のペアを使用する場合、キーが欠落していたり空であったりすることはありません。最後の欠損値は空の文字列と同様に扱われます。

この構文は宣言ビルトインでも受け入れられます。個々の配列要素は、上記で紹介した名前[添え字]=値構文を使用して割り当てることができます。インデックス付き配列に代入する場合、name の添字に負の数値が付いている場合、その数値は name の最大インデックスより 1 大きい相対値として解釈されるため、負のインデックスはカウントされます。配列の最後から戻り、インデックス -1 は最後の要素を参照します。

配列の任意の要素は、$ {name[subscript]} を使用して参照できます。中括弧は、パス名の展開との競合を避けるために必要です。 添え字が @ または * の場合、単語は name のすべてのメンバーに展開されます。これらの下付き文字は、単語が二重引用符で囲まれている場合にのみ異なります。単語が二重引用符で囲まれている場合、$ {name[*]} は、IFS の最初の文字で区切られた各配列メンバーの値を持つ単一の単語に展開されます。 > 特殊変数、$ {name[@]} は、name の各要素を個別の単語に展開します。配列メンバーがない場合、$ {name[@]} は何も展開されません。二重引用符で囲まれた展開が単語内で行われる場合、最初のパラメータの展開は元の単語の先頭部分と結合され、最後のパラメータの展開は元の単語の最後の部分と結合されます。これは、特殊パラメータ * および @ の展開に似ています (上記の特殊パラメータ を参照)。 $ {#name[subscript]} は $ {name[subscript] の長さに展開されます。 ]}。 添字が * または @ の場合、展開は配列内の要素の数になります。インデックス付き配列の要素を参照するために使用される添字が 0 未満の数値に評価される場合、その数値は配列の最大インデックスより 1 大きいものと解釈されるため、負のインデックスはインデックスから逆算されます。配列の末尾であり、インデックス -1 は最後の要素を参照します。

添字なしで配列変数を参照することは、添字が 0 の配列を参照することと同じです。有効な添字を使用した変数への参照はすべて正当であり、 必要に応じてbash によって配列が作成されます。

添字に値が割り当てられている場合、配列変数は設定されているとみなされます。 NULL 文字列は有効な値です。

配列の値だけでなくキー(インデックス)も取得できます。 $ {!name[@]} および $ {!name[*]} は、配列変数 name に割り当てられたインデックスに展開されます。二重引用符で囲んだ場合の処理は、二重引用符内の特殊パラメータ @ および * の展開と同様です。

unset 組み込み関数は配列を破棄するために使用されます。 unset name[subscript] は、インデックス付き配列と連想配列の両方で、インデックス subscript の配列要素を破棄します。インデックス付き配列の負の添え字は、上記のように解釈されます。配列変数の最後の要素の設定を解除しても、変数の設定は解除されません。 名前を設定解除します。名前は配列、または名前を設定解除します[subscript]、subscript は * または @ で、配列全体が削除されます。

上記の単語展開構文を使用せずに、unset などで添字付きの変数名をコマンドの引数として使用する場合、引数はパス名展開の対象になります。パス名の展開が望ましくない場合は、引数を引用符で囲む必要があります。

declare、local、および readonly 組み込み関数はそれぞれ、インデックス付き配列と < を指定するための -a オプションを受け入れます。-A オプションで連想配列を指定します。両方のオプションが指定された場合は、-A が優先されます。 read 組み込み関数は、標準入力から読み取った単語のリストを配列に割り当てる -a オプションを受け入れます。 set および declare 組み込み関数は、割り当てとして再利用できる方法で配列値を表示します。

拡張

展開は単語に分割された後、コマンドラインで実行されます。実行される展開は 7 種類あります: 中括弧展開、チルダ展開、パラメータおよび変数展開、コマンド置換、 算術展開、単語分割、およびパス名展開。

展開の順序は次のとおりです。中括弧の展開。チルダ展開、パラメータと変数の展開、算術展開、コマンド置換 (左から右の形式で実行)。単語の分割。そしてパス名の展開。

これをサポートできるシステムでは、プロセス置換という追加の拡張機能を利用できます。これは、チルダ、パラメータ、変数、算術展開およびコマンド置換と同時に実行されます。

これらの展開が実行された後、元の単語に存在する引用符文字は、それ自体が引用符で囲まれていない限り削除されます (引用符削除)。

展開の単語数を増やすことができるのは、中括弧の展開、単語の分割、およびパス名の展開だけです。他の展開では、単一の単語が単一の単語に拡張されます。唯一の例外は、「$@」と「$ {name[@]} 」の展開です。 "、そしてほとんどの場合、$* と $ {name[*]}上で説明したとおりです (パラメータを参照)。

ブレースの拡張

中括弧展開は、任意の文字列を生成できるメカニズムです。このメカニズムはパス名展開に似ていますが、生成されるファイル名が存在する必要はありません。中括弧を展開するパターンは、オプションのプリアンブルの形式をとり、その後に一連のカンマ区切りの文字列または中括弧のペア間のシーケンス式が続き、その後にオプションのポストスクリプトが続きます。え>。プリアンブルは中括弧内に含まれる各文字列の先頭に付けられ、ポストスクリプトが結果の各文字列に追加され、左から右に展開されます。

中括弧展開は入れ子にすることができます。展開された各文字列の結果は並べ替えられません。左から右への順序は維持されます。たとえば、a{d,c,b}e は「ade ace abe」に展開されます。

シーケンス式は、{x..y[..< という形式になります。incr]}、x と y は整数または単一文字、incr > (オプションの増分) は整数です。整数が指定された場合、式は x から y までの各数値に展開されます。指定された整数の先頭に 0 を付けて、各項の幅を強制的に同じにすることができます。 x または y のいずれかがゼロで始まる場合、シェルは生成されたすべての用語に同じ桁数が含まれるように強制し、必要に応じてゼロを埋め込みます。文字が指定されると、式はデフォルトの C ロケールを使用して、辞書順に x と y の間の各文字に展開されます。 x と y は両方とも同じ型である必要があることに注意してください。増分が指定されると、それが各項間の差として使用されます。デフォルトの増分は、必要に応じて 1 または -1 です。

中括弧の展開は他の展開の前に実行され、他の展開に特有の文字は結果に保持されます。それは厳密にテキストです。 Bash は、展開のコンテキストや中かっこ間のテキストに構文解釈を適用しません。

正しく形成された中括弧展開には、引用符で囲まれていない左中括弧と右中括弧、および少なくとも 1 つの引用符で囲まれていないコンマまたは有効なシーケンス式が含まれている必要があります。間違って形成された中括弧展開は変更されずに残ります。 { または , は中括弧式の一部とみなされないようにバックスラッシュで囲むことができます。パラメータ展開との競合を避けるため、文字列 $ { は中括弧展開に適格とは見なされず、終了 } まで中括弧展開が禁止されます。

この構造は通常、生成される文字列の共通プレフィックスが上記の例より長い場合の短縮表現として使用されます。

mkdir /usr/local/src/bash/{old,new,dist,bugs}

また

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

中括弧の展開により、sh の歴史的なバージョンと若干の非互換性が生じます。 sh は、左中括弧または右中括弧が単語の一部として出現する場合に特別に処理せず、出力内で保持します。 Bash は、中括弧の展開の結果として単語から中括弧を削除します。たとえば、sh に file{1,2} として入力された単語は、出力に同じように表示されます。同じ単語がbashで展開するとfile1 file2として出力されます。 sh との厳密な互換性が必要な場合は、+B オプションを使用して bash を開始するか、+B オプションを使用して中括弧展開を無効にします。 > オプションを set コマンドに追加します (下記のシェル組み込みコマンドを参照)。

チルダ展開

単語が引用符で囲まれていないチルダ文字 (`~') で始まる場合、最初の引用符で囲まれていないスラッシュに先行するすべての文字 (または、引用符で囲まれていないスラッシュがない場合はすべての文字) がチルダとみなされます。 - プレフィックス。チルダ接頭辞内のどの文字も引用符で囲まれていない場合、チルダに続くチルダ接頭辞内の文字は、 可能なログイン名として扱われます。このログイン名が NULL 文字列の場合、チルダはシェル パラメータ HOME の値に置き換えられます。 HOME が設定されていない場合は、シェルを実行しているユーザーのホーム ディレクトリが代わりに使用されます。それ以外の場合、チルダ接頭辞は、指定されたログイン名に関連付けられたホーム ディレクトリに置き換えられます。

チルダ接頭辞が `~+' の場合、シェル変数 PWD の値がチルダ接頭辞を置き換えます。チルダ接頭辞が `~-' の場合、シェル変数 OLDPWD が設定されていれば、その値が置き換えられます。チルダ接頭辞のチルダに続く文字が数字 N で構成され、オプションで「+」または「-」が接頭辞として付けられる場合、チルダ接頭辞はディレクトリの対応する要素で置き換えられます。スタック。引数としてチルダ接頭辞を使用して呼び出される dirs 組み込み関数によって表示されます。チルダ接頭辞のチルダに続く文字が先頭に `+' または `-' を持たない数字で構成されている場合は、`+' とみなされます。

ログイン名が無効な場合、またはチルダ展開が失敗した場合、単語は変更されません。

各変数の割り当てでは、: または最初の = の直後にある引用符で囲まれていないチルダ接頭辞がチェックされます。このような場合、チルダ展開も実行されます。したがって、PATH、MAILPATH、および CDPATH への割り当てでチルダ付きのファイル名を使用することができ、シェルは展開された値を割り当てます。

また、Bash は、変数割り当ての条件 (上記のパラメータ で説明したとおり) を満たす単語が単純なコマンドの引数として出現する場合、その単語に対してチルダ展開を実行します。 Bash は、posix モードの場合、上記の宣言コマンドを除いてこれを行いません。

パラメータの拡張

$ 文字は、パラメータ展開、コマンド置換、または算術展開を導入します。展開されるパラメータ名またはシンボルは中括弧で囲むことができます。これはオプションですが、名前の一部として解釈される可能性のある直後の文字から展開される変数を保護するために役立ちます。

中括弧が使用される場合、一致する終了中括弧は、バックスラッシュでエスケープされていない、または引用符で囲まれた文字列内にない最初の `} です。また、埋め込まれた算術展開、コマンド置換、パラメータ展開内にもありません。

${parameter}

パラメータの値が代入されます。中括弧は、パラメータが複数の桁の位置パラメータである場合、またはパラメータの後に名前の一部として解釈されない文字が続く場合に必要です。 パラメータは、上記のシェルパラメータパラメータ)または配列参照(配列)です。

パラメータの最初の文字が感嘆符 (!) で、パラメータがnamerefではない場合、間接的なレベルが導入されます。 Bash は、残りのパラメータを拡張して形成された値を新しいパラメータとして使用します。これはその後展開され、元のパラメータの展開ではなく、展開の残りの部分でその値が使用されます。これは間接拡張として知られています。値は、チルダ拡張、パラメータ拡張、コマンド置換、および算術拡張の対象となります。 parameter が nameref の場合、完全な間接展開を実行するのではなく、parameter によって参照されるパラメータの名前に展開されます。この例外は、$ {!prefix*} と $ {! の展開です。 name[@]} については後述します。間接参照を導入するには、左中括弧の直後に感嘆符を続ける必要があります。

以下の各ケースで、単語はチルダ展開、パラメータ展開、コマンド置換、および算術展開の対象になります。

部分文字列展開を実行しない場合、以下に記載されている形式 (:- など) を使用して、bash はパラメータが設定されていない、または null であるかどうかをテストします。コロンを省略すると、設定されていないパラメータのみがテストされます。

${parameter:-word}

デフォルト値を使用します。 パラメータが未設定または null の場合、単語の展開が置き換えられます。それ以外の場合は、パラメータの値が置き換えられます。

${parameter:=word}

デフォルト値を割り当てます。 パラメータが未設定または null の場合、単語の展開がパラメータに割り当てられます。次にパラメータの値が置き換えられます。位置パラメータおよび特殊パラメータは、この方法で割り当てることはできません。

${parameter:?word}

Null または未設定の場合はエラーを表示します。 パラメータがnullまたは未設定の場合、単語の展開(または単語が存在しない場合はその旨のメッセージ)が標準に書き込まれます。エラーが発生し、シェルが対話型でない場合は終了します。それ以外の場合は、パラメータの値が置き換えられます。

${parameter:+word}

代替値を使用します。 パラメータが null または未設定の場合は何も置換されません。それ以外の場合は、単語の展開が置換されます。

${parameter:offset}
${parameter:offset:length}

部分文字列展開。 オフセットで指定された文字から始まるパラメータの値の最大長さの文字まで展開します。 パラメータが @、@ または * で添え字が付いたインデックス付き配列、または連想配列名の場合、結果は以下に説明するように異なります。 length が省略された場合は、offset で指定された文字から始まり値の末尾までの parameter の値の部分文字列に展開されます。 。 長さとオフセットは算術式です (下記の算術評価を参照)。

オフセットがゼロ未満の数値に評価された場合、その値はパラメータの値の終わりからの文字単位のオフセットとして使用されます。 length がゼロ未満の数値として評価された場合、それは文字数ではなく、パラメータ の値の終わりからの文字単位のオフセットとして解釈され、展開オフセットとその結果の間の文字です。 :- 展開との混同を避けるため、負のオフセットは少なくとも 1 つのスペースでコロンから区切る必要があることに注意してください。

パラメータが @ の場合、 結果はオフセットで始まる長さの位置パラメータになります。負のオフセットは、最大の位置パラメータより大きい値を基準として取得されるため、-1 のオフセットは最後の位置パラメータとして評価されます。 length がゼロ未満の数値に評価される場合、展開エラーになります。

パラメータが @ または * で添字が付いたインデックス付き配列名の場合、結果は $ {パラメータで始まる配列の長さメンバーになります。 [オフセット]}。負のオフセットは、指定された配列の最大インデックスより大きい値を基準にして取得されます。 length がゼロ未満の数値に評価される場合、展開エラーになります。

連想配列に部分文字列拡張を適用すると、未定義の結果が生成されます。

位置パラメータが使用されない限り、部分文字列のインデックス付けは 0 から始まります。位置パラメータが使用される場合、インデックス付けはデフォルトで 1 から始まります。 offset が 0 で、位置パラメータが使用される場合、リストの先頭に $0 が付加されます。

${!prefix*}
${!prefix@}

接頭辞が一致する名前。名前がプレフィックスで始まり、先頭の文字で区切られた変数の名前に展開されます。

IFS 特殊変数。 @ が使用され、展開が二重引用符で囲まれている場合、各変数名は別の単語に展開されます。

${!name[@]}
${!name[*]}

配列キーのリスト。 name が配列変数の場合、 name で割り当てられた配列インデックス (キー) のリストに展開されます。 name が配列でない場合、name が設定されている場合は 0 に展開され、それ以外の場合は null に展開されます。 @ が使用され、展開が二重引用符で囲まれている場合、各キーは別の単語に展開されます。

${#parameter}

パラメータの長さ。 パラメータの値の文字数が代入されます。 パラメータが * または @ の場合、置換される値は位置パラメータの数です。 パラメータが * または @ で添字が付いた配列名である場合、置換される値は配列内の要素の数です。 パラメータが負の数値で添え字が付いたインデックス付き配列名である場合、その数値はパラメータの最大インデックスよりも 1 大きい相対値として解釈されるため、負のインデックスは先頭から逆算されます。配列の末尾であり、インデックス -1 は最後の要素を参照します。

${parameter#word}
${parameter##word}

一致するプレフィックス パターンを削除します。 単語はパス名の展開と同様に展開されてパターンを生成し、パターン マッチングで説明されているルールを使用してパラメータの展開された値と照合されます。下。パターンがパラメータの値の先頭と一致する場合、展開の結果は、最も短い一致パターン (「 #」の場合)、または最長一致パターン(「##」の場合)が削除されました。 パラメータが @ または * の場合、パターン削除操作が各位置パラメータに順番に適用され、展開された結果がリストになります。 パラメータが @ または * で添字が付いた配列変数の場合、パターン削除操作は配列の各メンバーに順番に適用され、展開すると、結果のリストが得られます。

${parameter%word}
${parameter%%word}

一致するサフィックス パターンを削除します。 単語はパス名の展開と同様に展開されてパターンを生成し、パターン マッチングで説明されているルールを使用してパラメータの展開された値と照合されます。下。パターンがパラメータの展開された値の末尾部分と一致する場合、展開の結果は、最も短い一致パターン (「<」) を持つパラメータの展開された値になります。 「strong>%」の場合)または最長一致パターン(「%%」の場合)が削除されます。 パラメータが @ または * の場合、パターン削除操作が各位置パラメータに順番に適用され、展開された結果がリストになります。 パラメータが @ または * で添字が付いた配列変数の場合、パターン削除操作は配列の各メンバーに順番に適用され、展開すると、結果のリストが得られます。

${parameter/pattern/string}

パターンの置換です。パス名の展開と同様に、パターンが展開されてパターンが生成され、パラメータが展開され、 その値に対するパターンの最長一致が次のように置き換えられます。 文字列。照合は、以下のパターン マッチングで説明されているルールを使用して実行されます。 パターンが/で始まる場合、 一致するパターンはすべて文字列に置き換えられます。通常、最初の一致のみが置き換えられます。 パターンが#で始まる場合は、パラメータの展開された値の先頭と一致する必要があります。 パターンが%で始まる場合は、パラメータの展開された値の末尾と一致する必要があります。 文字列がnullの場合、 一致するパターンが削除され、 次のパターンに続く/が省略される場合があります。 nocasematch シェル オプションが有効になっている場合、アルファベットの大文字と小文字に関係なく照合が実行されます。 パラメータが @ または * の場合、置換操作が各位置パラメータに順番に適用され、展開された結果がリストになります。 パラメータが @ または * で添字付けされた配列変数の場合、置換演算は配列の各メンバーに順番に適用され、展開は結果のリストです。

${parameter^pattern}
${parameter^^pattern}
${parameter,pattern}
${parameter,,pattern}

ケースの変更。この拡張により、パラメータ内のアルファベットの大文字と小文字が変更されます。パス名の展開と同様に、パターンが展開されてパターンが生成されます。 パラメータの展開された値内の各文字はパターンに対してテストされ、パターンに一致する場合は大文字と小文字が変換されます。パターンは複数の文字との一致を試みてはなりません。 ^ 演算子は、パターンに一致する小文字を大文字に変換します。 , 演算子は、一致する大文字を小文字に変換します。 ^^ および ,, 展開は、展開された値内の一致した各文字を変換します。 ^ および , 展開は、展開された値の最初の文字のみと一致し、変換されます。 pattern が省略された場合、すべての文字に一致する ? のように扱われます。 パラメータが @ または * の場合、大文字と小文字の変更操作が各位置パラメータに順番に適用され、展開された結果がリストになります。 パラメータが @ または * で添字が付いた配列変数の場合、大文字小文字の変更操作が配列の各メンバーに順番に適用され、展開すると、結果のリストが得られます。

${parameter@operator}

パラメータ変換。展開は、演算子の値に応じて、パラメータの値の変換、またはパラメータ自体に関する情報のいずれかです。各演算子は単一の文字です。

U

展開は、パラメータの値を小文字のアルファベットから大文字に変換した文字列です。

u

展開は、パラメータの値をアルファベットの場合は最初の文字を大文字に変換した文字列です。

L

展開は、パラメータの値であるアルファベットの大文字を小文字に変換した文字列です。

Q

展開は、入力として再利用できる形式で引用されたパラメータの値である文字列です。

E

展開は、$'...' 引用符メカニズムと同様に、バックスラッシュ エスケープ シーケンスを展開したパラメータの値である文字列です。

P

展開は、パラメータの値をプロンプト文字列であるかのように展開した結果の文字列です (以下のプロンプトを参照)。

A

展開は代入ステートメントまたは宣言コマンドの形式の文字列で、評価されるとその属性と値を含むパラメータが再作成されます。

K

パラメータの値の引用符で囲まれたバージョンを生成します。ただし、インデックス付きの連想配列の値を引用符で囲まれたキーと値のペアのシーケンスとして出力します (上記の配列を参照) )。

a

展開はパラメータの属性を表すフラグ値で構成される文字列です。

パラメータが @ または * の場合、操作は各位置パラメータに順番に適用され、展開された結果のリストが得られます。 パラメータが @ または * で添字付けされた配列変数の場合、演算は配列の各メンバーに順番に適用され、展開は次のようになります。結果のリスト。

展開の結果は、以下で説明するように、単語の分割とパス名の展開の対象になります。

コマンド置換

コマンド置換を使用すると、コマンドの出力でコマンド名を置き換えることができます。次の 2 つの形式があります。

$(command )

また

`command`

Bash は、サブシェル環境でコマンドを実行し、コマンド置換を末尾の改行を削除したコマンドの標準出力に置き換えることによって展開を実行します。埋め込まれた改行は削除されませんが、単語の分割中に削除される可能性があります。コマンド置換 $ (cat file) は、同等で高速な $ (< ) に置き換えることができます。 >ファイル)。

古い形式のバッククォート形式の置換を使用する場合、バックスラッシュの後に $、`、または \ が続く場合を除き、バックスラッシュは文字通りの意味を保持します。バックスラッシュが前にない最初の逆引用符は、コマンド置換を終了します。 $ ( コマンド ) 形式を使用する場合、括弧内のすべての文字がコマンドを構成します。どれも特別扱いされません。

コマンド置換は入れ子にすることができます。逆引用符で囲まれた形式を使用するときにネストするには、内側の逆引用符をバックスラッシュでエスケープします。

置換が二重引用符で囲まれている場合、結果に対して単語の分割とパス名の展開は実行されません。

算術拡張

算術拡張により、算術式の評価と結果の置換が可能になります。算術展開の形式は次のとおりです。

$((expression))

式 は二重引用符内にあるものとして扱われますが、括弧内の二重引用符は特別に扱われません。式内のすべてのトークンは、パラメーターと変数の展開、コマンド置換、および引用符の削除を受けます。結果は評価対象の算術式として扱われます。算術展開は入れ子にすることができます。

評価は、以下の算術評価にリストされているルールに従って実行されます。 式が無効な場合、bash は失敗を示すメッセージを出力し、置換は行われません。

プロセスの代替

プロセス置換により、ファイル名を使用してプロセスの入力または出力を参照できるようになります。 <(list ) または >(list の形式になります。 >)です。プロセスリストは非同期で実行され、その入力または出力はファイル名として表示されます。このファイル名は、展開の結果として現在のコマンドに引数として渡されます。 (list ) フォームが使用されている場合、ファイルへの書き込みによりリストへの入力が提供されます。 <(list ) 形式を使用する場合、引数として渡されたファイルを読み取って list の出力を取得する必要があります。 。プロセス置換は、名前付きパイプ (FIFO) または開いているファイルに名前を付ける /dev/fd メソッドをサポートするシステムでサポートされます。

プロセス置換が可能な場合、パラメータと変数の展開、コマンド置換、算術展開と同時に実行されます。

単語の分割

シェルは、 二重引用符内で行われなかったパラメータ展開、コマンド置換、 算術展開の結果をスキャンして単語分割を行います。

シェルは、IFS の各文字を区切り文字として扱い、これらの文字をフィールド終了文字として使用して、他の展開の結果を単語に分割します。 IFS が設定されていない場合、またはその値がデフォルトの <space><tab><newline> である場合、<space> のシーケンスになります。 、<tab>、および前の展開結果の先頭と末尾の <newline> は無視され、IFS のシーケンスは無視されます。先頭または末尾にない文字は単語を区切る役割を果たします。 IFS にデフォルト以外の値が設定されている場合は、一連の空白文字 スペース、タブ、および改行が使用されます。 IFS の値 (IFS 空白文字) に空白文字が含まれている限り、単語の先頭と末尾の は無視されます。 IFS 内の IFS 空白文字以外の文字は、隣接する IFS 空白文字とともにフィールドを区切ります。一連の IFS 空白文字も区切り文字として扱われます。 IFS の値が null の場合、単語の分割は行われません。

明示的な null 引数 ( " " または ' ' ) は保持され、空の文字列としてコマンドに渡されます。値を持たないパラメータの展開によって生じる、引用符で囲まれていない暗黙的な null 引数は削除されます。値のないパラメータが二重引用符内で展開されると、結果として null 引数が保持され、空の文字列としてコマンドに渡されます。引用符で囲まれた null 引数が非 null 展開である単語の一部として出現すると、null 引数は削除されます。つまり、単語 -d' ' は、単語分割と null 引数の削除後に -d になります。

拡張が発生しない場合、分割は実行されないことに注意してください。

パス名の拡張

-f オプションが設定されていない限り、単語の分割後、bash は各単語をスキャンして文字 *、? を探します。 >、[。これらの文字のいずれかが表示され、引用符で囲まれていない場合、その単語はパターンとみなされ、パターンに一致するファイル名のアルファベット順に並べ替えられたリストに置き換えられます (パターン マッチングを参照) > 以下)。一致するファイル名が見つからず、シェル オプションnullglob が有効になっていない場合、単語は変更されません。 nullglob オプションが設定されており、一致するものが見つからない場合、単語は削除されます。 failglob シェル オプションが設定されていて、一致するものが見つからない場合、エラー メッセージが出力され、コマンドは実行されません。シェル オプション nocaseglob が有効になっている場合、アルファベットの大文字と小文字を区別せずに一致が実行されます。パス名の展開にパターンを使用する場合、シェル オプション dotglob を除いて、名前の先頭またはスラッシュの直後にある文字 ``.'' が明示的に一致する必要があります。 > が設定されています。ファイル名``.'' と ``..'' は、dotglob が設定されている場合でも、常に明示的に一致する必要があります。その他の場合、「.」 文字は特別に扱われません。パス名を一致させる場合、スラッシュ文字は常にパターン内のスラッシュによって明示的に一致する必要がありますが、他の一致コンテキストでは、以下のパターン マッチングで説明するように、特別なパターン文字によって一致させることができます。 nocaseglob、nullglob、の説明については、以下のシェル組み込みコマンドのshoptの説明を参照してください。フェイルグロブおよびドットグロブシェル オプション。

GLOBIGNORE シェル変数は、パターンに一致するファイル名のセットを制限するために使用できます。 GLOBIGNORE が設定されている場合、GLOBIGNORE のパターンのいずれかと一致する各ファイル名は、一致リストから削除されます。 nocaseglob オプションが設定されている場合、GLOBIGNORE のパターンとの照合は大文字と小文字を区別せずに実行されます。 GLOBIGNORE が設定されており、null ではない場合、ファイル名 . と .. は常に無視されます。ただし、GLOBIGNORE を null 以外の値に設定すると、dotglob シェル オプションが有効になるため、. で始まる他のファイル名はすべて無効になります。マッチ。 . で始まるファイル名を無視するという以前の動作を実現するには、GLOBIGNORE のパターンの 1 つとして .* を作成します。 ドットグロブオプションは次の場合に無効になります。

グロビニョールは設定されていません。パターン マッチングでは、extglob シェル オプションの設定が尊重されます。

パターン マッチング

以下で説明する特殊なパターン文字を除く、パターン内に出現する文字はすべて、それ自体と一致します。 NUL 文字はパターン内に出現しない場合があります。バックスラッシュは後続の文字をエスケープします。エスケープするバックスラッシュは照合時に破棄されます。特殊なパターン文字を文字通りに一致させるには、引用符で囲む必要があります。

特殊なパターン文字には次の意味があります。

*

NULL 文字列を含む任意の文字列と一致します。 globstar シェル オプションが有効で、パス名展開コンテキストで * が使用されている場合、単一のパターンとして使用される 2 つの隣接する * が一致します。すべてのファイルと、0 個以上のディレクトリおよびサブディレクトリ。 / が続く場合、隣接する 2 つの * はディレクトリとサブディレクトリのみに一致します。

?

任意の 1 文字と一致します。

[...]

囲まれた文字のいずれかと一致します。ハイフンで区切られた 2 つの文字は範囲式を表します。現在のロケールの照合順序と文字セットを使用して、これら 2 つの文字の間にある文字が一致します。 [ に続く最初の文字が ! または ^ の場合、囲まれていない文字はすべて一致します。範囲式内の文字の並べ替え順序は、現在のロケールと、LC_COLLATE または LC_ALL シェル変数 (設定されている場合) の値によって決まります。範囲式の従来の解釈 ([a-d] が [abcd] と同等) を取得するには、LC_ALL シェル変数の値を < に設定します。C を使用するか、globasciiranges シェル オプションを有効にします。 - は、セット内の最初または最後の文字として含めることによって照合できます。 ] は、セットの最初の文字として含めることによって照合できます。

[ および ] 内では、構文 [:class を使用して文字クラスを指定できます。 >:]、クラスは、POSIX 標準で定義されている次のクラスのいずれかです。

alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit

文字クラスは、そのクラスに属する任意の文字と一致します。 単語文字クラスは、文字、数字、および文字 _ に一致します。

[ および ] 内では、構文 [=c等価クラスを指定できます。=] は、文字 c と同じ照合重み (現在のロケールで定義されている) を持つすべての文字と一致します。

[ と ] 内では、構文 [.symbol.] は照合順序と一致します。シンボルシンボル。

shopt ビルトインを使用して extglob シェル オプションが有効になっている場合、いくつかの拡張パターン マッチング演算子が認識されます。以下の説明では、パターン リストは、| で区切られた 1 つ以上のパターンのリストです。複合パターンは、次のサブパターンの 1 つ以上を使用して形成できます。

?( pattern-list )

指定されたパターンの 0 回または 1 回の出現と一致します

*( pattern-list )

指定されたパターンの 0 個以上の出現と一致します。

+( pattern-list )

指定されたパターンの 1 つ以上の出現と一致します。

@( pattern-list )

指定されたパターンのいずれかに一致します

!( pattern-list )

指定されたパターンの 1 つを除くすべてに一致します

長い文字列に対する複雑な拡張パターン マッチングは、特にパターンに代替が含まれ、文字列に複数の一致が含まれる場合に遅くなります。短い文字列に対して個別の一致を使用するか、単一の長い文字列の代わりに文字列の配列を使用する方が高速になる場合があります。

引用の削除

前述の展開の後、上記の展開のいずれからも生じなかった、引用符で囲まれていない文字 \、'、および " がすべて削除されます。

リダイレクション

コマンドが実行される前に、シェルによって解釈される特別な表記法を使用して、 その入力と出力がリダイレクトされる場合があります。リダイレクトを使用すると、コマンドのファイル ハンドルを複製したり、開いたり閉じたり、別のファイルを参照したり、コマンドが読み書きするファイルを変更したりすることができます。リダイレクトは、現在のシェル実行環境でファイル ハンドルを変更するために使用することもできます。次のリダイレクト演算子は、単純なコマンドの前または任意の場所に表示されるか、コマンドの後に配置される場合があります。リダイレクトは、表示される順序で左から右に処理されます。

ファイル記述子番号が前に続く各リダイレクトの前には、代わりに {varname} 形式の単語が続く場合があります。この場合、>&- と <&- を除く各リダイレクト演算子に対して、シェルは 10 以上のファイル記述子を割り当て、 それをvarname に割り当てます。 >&- または <&- の前に {varname} が付いている場合、varname の値は閉じるファイル記述子を定義します。 {varname} が指定されている場合、リダイレクトはコマンドの範囲を超えて継続されるため、シェル プログラマが自分でファイル記述子を管理できるようになります。

以下の説明で、ファイル記述子番号が省略され、リダイレクト演算子の最初の文字が < の場合、リダイレクトは標準入力 (ファイル記述子 0) を指します。リダイレクト演算子の最初の文字が > の場合、リダイレクトは標準出力 (ファイル記述子 1) を参照します。

以下の説明のリダイレクト演算子に続く単語は、特に断りのない限り、中かっこ展開、チルダ展開、パラメータと変数の展開、コマンド置換、算術展開、引用符の削除、パス名展開、および単語の分割の対象となります。複数の単語に展開される場合、bash はエラーを報告します。

リダイレクトの順序は重要であることに注意してください。たとえば、次のコマンドは

ls > dirlist 2>&1

標準出力と標準エラーの両方をファイル dirlist に送信しますが、コマンド

ls 2>&1 > dirlist

標準出力が dirlist にリダイレクトされる前に、標準出力から標準エラーが複製されたため、標準出力のみをファイル dirlist に送信します。

次の表で説明するように、Bash は、リダイレクトで使用される場合にいくつかのファイル名を特別に処理します。 bash が実行されているオペレーティング システムがこれらの特殊ファイルを提供している場合、bash はそれらを使用します。それ以外の場合は、以下で説明する動作で内部的にエミュレートします。

/dev/fd/fd

fd が有効な整数の場合、ファイル記述子 fd は重複します。

/dev/stdin

ファイル記述子0が重複しています。

/dev/stdout

ファイル記述子 1 が重複しています。

/dev/stderr

ファイル記述子 2 が重複しています。

/dev/tcp/host/port

ホストが有効なホスト名またはインターネット アドレスで、ポートが整数のポート番号またはサービス名である場合、bashは対応する TCP ソケットを開こうとします。 。

/dev/udp/host/port

host が有効なホスト名またはインターネット アドレスで、port が整数のポート番号またはサービス名である場合、bash は対応する UDP ソケットを開こうとします。 。

ファイルを開いたり作成したりできないと、リダイレクトが失敗します。

9 より大きいファイル記述子を使用したリダイレクトは、シェルが内部で使用するファイル記述子と競合する可能性があるため、注意して使用する必要があります。

入力のリダイレクト

入力のリダイレクトにより、word の展開によって名前が付けられたファイルが、ファイル記述子 n での読み取り用に開かれます。 の場合は標準入力 (ファイル記述子 0) での読み取りが行われます。 >n が指定されていません。

入力をリダイレクトするための一般的な形式は次のとおりです。

[n]<word

出力のリダイレクト

出力のリダイレクトにより、word の展開によって名前が付けられたファイルが、ファイル記述子 n に書き込むために開かれます。 の場合は標準出力 (ファイル記述子 1) に書き込むことができます。 >n が指定されていません。ファイルが存在しない場合は作成されます。存在する場合、サイズはゼロに切り捨てられます。

出力をリダイレクトするための一般的な形式は次のとおりです。

[n]>word

リダイレクト演算子が で、set ビルトインの noclobber オプションが有効になっている場合、結果の名前のファイルが存在する場合、リダイレクトは失敗します。 word の展開からのファイルが存在し、通常のファイルです。リダイレクト演算子が | である場合、またはリダイレクト演算子が > で set 組み込み関数の noclobber オプションが指定されている場合コマンドが有効になっていない場合、単語で指定されたファイルが存在する場合でもリダイレクトが試行されます。

リダイレクトされた出力の追加

この方法で出力をリダイレクトすると、word を展開した結果として名前が付けられたファイルが、ファイル記述子 n または標準出力 (ファイル記述子 1) に追加するために開かれます。 n が指定されていない場合。ファイルが存在しない場合は作成されます。

出力を追加するための一般的な形式は次のとおりです。

[n]>>word

標準出力と標準エラーのリダイレクト

この構造により、標準出力 (ファイル記述子 1) と標準エラー出力 (ファイル記述子 2) の両方を、word を拡張した名前のファイルにリダイレクトできます。

標準出力と標準エラーをリダイレクトするには 2 つの形式があります。

&>word

と

>&word

2 つの形式のうち、最初の形式が優先されます。これは意味的には次と同等です

>word 2>&1

2 番目の形式を使用する場合、単語は数値または-に展開されないことがあります。その場合、互換性上の理由から、他のリダイレクト演算子が適用されます (下記のファイル記述子の複製を参照)。

標準出力と標準エラーの追加

この構造により、標準出力 (ファイル記述子 1) と標準エラー出力 (ファイル記述子 2) の両方を、word を拡張した名前のファイルに追加できます。

標準出力と標準エラーを追加する形式は次のとおりです。

&>>word

これは意味的には次と同等です

>>word 2>&1

(下記のファイル記述子の複製を参照してください)。

ここのドキュメント

このタイプのリダイレクトは、(末尾の空白がない)区切り文字のみを含む行が表示されるまで、現在のソースから入力を読み取るようにシェルに指示します。その時点までに読み取られたすべての行は、コマンドの標準入力 (n が指定されている場合はファイル記述子 n) として使用されます。

ヒアドキュメントの形式は次のとおりです。

[n]<<[-]word
        here-document
delimiter

単語では、パラメータと変数の展開、コマンド置換、算術展開、またはパス名展開は実行されません。 単語の一部が引用符で囲まれている場合、区切り文字は単語で引用符が削除された結果であり、ヒアドキュメント内の行は引用符ではありません。拡張されました。 word が引用符で囲まれていない場合、ヒアドキュメントのすべての行がパラメータ展開、コマンド置換、および算術展開の対象となり、文字シーケンス \<newline> は無視されます。文字 \、$、および ` を引用するには、\ を使用する必要があります。

リダイレクト演算子が <<- の場合、先頭のすべてのタブ文字が入力行と区切り文字を含む行から削除されます。これにより、シェル スクリプト内のヒアドキュメントを自然な方法でインデントできるようになります。

ここに文字列があります

ヒアドキュメントの一種で、形式は次のとおりです。

[n]<<<word

単語は、チルダ展開、パラメータと変数の展開、コマンド置換、算術展開、および引用符の削除を受けます。パス名の展開や単語の分割は行われません。結果は、改行が追加された単一の文字列としてコマンドの標準入力 (または、n が指定されている場合はファイル記述子 n) に提供されます。

ファイル記述子の複製

リダイレクト演算子

[n]<&word

入力ファイル記述子を複製するために使用されます。 word が 1 桁以上に展開される場合、n で示されるファイル記述子は、そのファイル記述子のコピーとして作成されます。 word 内の数字が入力用に開いているファイル記述子を指定していない場合、リダイレクト エラーが発生します。 word が - と評価された場合、ファイル記述子 n は閉じられます。 n が指定されていない場合は、標準入力 (ファイル記述子 0) が使用されます。

オペレーター

[n]>&word

は、出力ファイル記述子を複製するために同様に使用されます。 n が指定されていない場合は、標準出力 (ファイル記述子 1) が使用されます。 word 内の数字が出力用に開いているファイル記述子を指定していない場合、リダイレクト エラーが発生します。 word が - と評価された場合、ファイル記述子 n は閉じられます。特殊なケースとして、n が省略され、word が 1 つ以上の数字または - に展開されない場合、標準出力と標準エラー前述のようにリダイレクトされます。

ファイル記述子の移動

リダイレクト演算子

[n]<&digit-

ファイル記述子 digit をファイル記述子 n に移動するか、n が指定されていない場合は標準入力 (ファイル記述子 0) に移動します。 数字はnに複製された後に閉じられます。

同様に、リダイレクト演算子

[n]>&digit-

ファイル記述子 digit をファイル記述子 n に移動するか、n が指定されていない場合は標準出力 (ファイル記述子 1) に移動します。

ファイル記述子を読み書きのために開く

リダイレクト演算子

[n]<>word

word を拡張した名前のファイルが、ファイル記述子 n で、またはファイル記述子 0 の場合は読み取りと書き込みの両方のために開かれます。n > が指定されていません。ファイルが存在しない場合は作成されます。

エイリアス

エイリアスを使用すると、単純なコマンドの最初の単語として使用される場合に、その単語を文字列で置き換えることができます。シェルは、alias および unalias 組み込みコマンドを使用して設定または設定解除できるエイリアスのリストを保持します (下記のシェル組み込みコマンドを参照)。各単純なコマンドの最初の単語が引用符で囲まれていない場合、エイリアスがあるかどうかがチェックされます。そうである場合、その単語はエイリアスのテキストに置き換えられます。文字 /、$、`、および =、およびシェルのいずれかのメタ文字 または上記の引用符文字はエイリアス名に使用できない場合があります。置換テキストには、シェルのメタキャラクタを含む、任意の有効なシェル入力が含まれる場合があります。置換テキストの最初の単語はエイリアスかどうかテストされますが、展開されるエイリアスと同一の単語は再度展開されません。これは、たとえば ls を ls -F にエイリアスすることができ、 bash は置換テキストを再帰的に展開しようとしないことを意味します。エイリアス値の最後の文字が空白の場合、エイリアスに続く次のコマンド ワードもエイリアス展開についてチェックされます。

エイリアスは、alias コマンドで作成およびリストされ、unalias コマンドで削除されます。

置換テキストで引数を使用するメカニズムはありません。引数が必要な場合は、シェル関数を使用する必要があります (以下の関数を参照)。

shopt を使用して expand_aliases シェル オプションが設定されていない限り、シェルが対話型でない場合、エイリアスは展開されません (shopt の説明を参照してください) > シェル組み込みコマンドを以下に示します)。

エイリアスの定義と使用に関するルールはややわかりにくいです。 Bash は、その行のコマンドまたは複合コマンドを実行する前に、常に入力の少なくとも 1 行の完全な行と、複合コマンドを構成するすべての行を読み取ります。エイリアスは、コマンドの実行時ではなく、コマンドの読み取り時に展開されます。したがって、別のコマンドと同じ行にあるエイリアス定義は、次の入力行が読み取られるまで有効になりません。その行のエイリアス定義に続くコマンドは、新しいエイリアスの影響を受けません。この動作は、関数の実行時にも問題になります。関数定義自体がコマンドであるため、エイリアスは関数の実行時ではなく、関数定義が読み取られるときに展開されます。その結果、関数で定義されたエイリアスは、その関数が実行されるまで使用できなくなります。安全のため、エイリアスの定義は必ず別の行に記述し、 複合コマンドではエイリアスを使用しないでください。

ほぼすべての目的で、エイリアスはシェル関数に取って代わられます。

機能

上記のシェル文法で説明したように定義されたシェル関数は、後で実行するために一連のコマンドを保存します。シェル関数の名前を単純なコマンド名として使用すると、その関数名に関連付けられたコマンドのリストが実行されます。関数は現在のシェルのコンテキストで実行されます。それらを解釈するための新しいプロセスは作成されません (これをシェル スクリプトの実行と比較してください)。関数が実行されると、関数の引数は実行中の位置パラメータになります。特別なパラメータ # が更新され、変更が反映されます。特別パラメータ 0 は変更されません。 FUNCNAME 変数の最初の要素は、関数の実行中に関数の名前に設定されます。

シェル実行環境の他のすべての側面は、DEBUG トラップと RETURN トラップを除き、関数とその呼び出し元の間で同一です (trap< の説明を参照) 以下の SHELL BUILTIN COMMANDS の下のbuiltin) は、関数に trace 属性が与えられていない限り継承されません (declare の説明を参照してください)。以下の組み込み)、または -o functrace シェル オプションが set 組み込みで有効になっている場合(この場合、すべての関数は DEBUG と を継承します) >RETURN トラップ)、-o errtrace シェル オプションが有効になっていない限り、ERR トラップは継承されません。

関数に対してローカルな変数はローカル組み込みコマンドで宣言できます。通常、変数とその値は関数とその呼び出し元の間で共有されます。変数がローカルに宣言されている場合、変数の表示範囲はその関数とその子 (呼び出される関数を含む) に制限されます。ローカル変数は、前のスコープで宣言された同じ名前の変数を「シャドウ」します。たとえば、関数内で宣言されたローカル変数は、同じ名前のグローバル変数を隠します。参照と代入はローカル変数を参照し、グローバル変数は変更されないままになります。関数が戻ると、グローバル変数が再び表示されます。

シェルは動的スコープを使用して、関数内の変数の可視性を制御します。動的スコープでは、表示される変数とその値は、実行が現在の関数に到達する原因となった一連の関数呼び出しの結果です。関数が参照する変数の値は、呼び出し元が「グローバル」スコープであるか別のシェル関数であるかにかかわらず、呼び出し元 (存在する場合) 内の値によって異なります。これは、ローカル変数宣言が「シャドウ」する値でもあり、関数が返されたときに復元される値でもあります。

たとえば、変数 var が関数 func1 でローカルとして宣言され、 func1 が別の関数 func2 を呼び出す場合、 func2 内から行われた var への参照は、func1 からのローカル変数 var に解決され、名前付きのグローバル変数がシャドウされます。 変数。

unset 組み込み関数も、同じ動的スコープを使用して動作します。変数が現在のスコープに対してローカルである場合、unset はその変数の設定を解除します。それ以外の場合は、上で説明したように、unset は呼び出しスコープ内で見つかった変数を参照します。現在のローカル スコープの変数が設定解除されている場合、そのスコープでリセットされるか関数が返されるまで、変数は設定されたままになります。関数が戻ると、前のスコープにある変数のインスタンスが表示されるようになります。 unset が以前のスコープの変数に作用する場合、シャドウされていたその名前を持つ変数のインスタンスが表示されるようになります。

FUNCNEST 変数を 0 より大きい数値に設定すると、関数の最大ネスト レベルが定義されます。関数の呼び出しが制限を超えると、コマンド全体が中止されます。

関数内で組み込みコマンドreturn が実行されると、関数は完了し、関数呼び出し後の次のコマンドから実行が再開されます。 RETURN トラップに関連付けられたコマンドはすべて、実行が再開される前に実行されます。関数が完了すると、位置パラメータと特殊パラメータ# の値は、関数の実行前の値に復元されます。

関数名と定義は、declare または typeset 組み込みコマンドの -f オプションを使用してリストできます。 declare または typeset の -F オプションを使用すると、関数名のみがリストされます ( の場合は、オプションでソース ファイルと行番号もリストされます)。 extdebug シェル オプションが有効になっています)。関数をエクスポートすると、サブシェルで export ビルトインの -f オプションを使用して関数が自動的に定義されます。関数定義は、unset ビルトインの -f オプションを使用して削除できます。

関数は再帰的である場合があります。 FUNCNEST 変数は、関数呼び出しスタックの深さを制限し、関数呼び出しの数を制限するために使用できます。デフォルトでは、再帰呼び出しの数に制限はありません。

算術評価

シェルでは、特定の状況下で算術式を評価できます (let および declare 組み込みコマンド、(( 複合コマンド、および < を参照)算術拡張)。評価はオーバーフローのチェックなしで固定幅の整数で行われますが、0 による除算はトラップされ、エラーとしてフラグが立てられます。演算子とその優先順位、結合性、および値は次と同じです。 C 言語での演算子のリストは、同じ優先順位の演算子のレベルにグループ化されています。レベルは、優先順位の降順にリストされています。

id++ id--

変数のポストインクリメントとポストデクリメント

- +

単項マイナスとプラス

++id --id

変数の事前インクリメントと事前デクリメント

! ~

論理否定とビットごとの否定

**

べき乗

* / %

乗算、除算、剰余

+ -

足し算、引き算

<< >>

左右のビット単位のシフト

<= >= < >

比較

== !=

平等と不平等

&

ビットごとの AND

^

ビット単位の排他的論理和

|

ビット単位の OR

&&

論理積

||

論理和

expr?expr:expr

条件演算子

= *= /= %= += -= <<= >>= &= ^= |=

割り当て

expr1 , expr2

コンマ

シェル変数はオペランドとして使用できます。パラメータの展開は式が評価される前に実行されます。式内では、パラメータ展開構文を使用せずに、シェル変数を名前で参照することもできます。 NULL または未設定のシェル変数は、パラメーター拡張構文を使用せずに名前で参照されると 0 と評価されます。変数の値は、参照されるとき、またはdeclare -i を使用して整数属性が与えられた変数に値が割り当てられるときに、算術式として評価されます。 Null 値は 0 に評価されます。シェル変数を式で使用するためにその integer 属性をオンにする必要はありません。

整数定数は C 言語の定義に従い、接尾辞や文字定数はありません。先頭に 0 が付いている定数は 8 進数として解釈されます。先頭の 0x または 0X は 16 進数を示します。それ以外の場合、数値は [base#]n の形式をとり、オプションの base は算術基数を表す 2 ~ 64 の 10 進数、n はその基数の数値です。 base# が省略された場合は、基数 10 が使用されます。 n を指定する場合、数字以外の文字が必要な場合は、9 より大きい数字は、小文字、大文字、@、_ の順で表されます。 base が 36 以下の場合、10 ~ 35 の数値を表すために小文字と大文字を区別なく使用できます。

演算子は優先順位に従って評価されます。括弧内の部分式が最初に評価され、上記の優先規則をオーバーライドする可能性があります。

条件式

条件式は、[[ 複合コマンドと test および [ 組み込みコマンドでファイル属性をテストし、文字列と算術比較を実行するために使用されます。 test および [ コマンドは、引数の数に基づいて動作を決定します。その他のコマンド固有のアクションについては、それらのコマンドの説明を参照してください。

式は、次の単項またはバイナリの原始値から形成されます。 Bash は、式で使用されるいくつかのファイル名を特別に処理します。 bash が実行されているオペレーティング システムがこれらの特殊ファイルを提供している場合、bash はそれらを使用します。それ以外の場合は、次の動作で内部的にエミュレートします。 プライマリのいずれかの file 引数が /dev/fd/n 形式の場合、 ファイル記述子 n がチェックされます。いずれかのプライマリへの file 引数が /dev/stdin、/dev/stdout、または /dev/ のいずれかである場合stderr、ファイル記述子 0、1、または 2 がそれぞれチェックされます。

特に指定がない限り、ファイルを操作するプライマリはシンボリック リンクをたどり、リンク自体ではなくリンクのターゲットを操作します。

[[ とともに使用すると、< 演算子と > 演算子は現在のロケールを使用して辞書順に並べ替えます。 test コマンドは、ASCII 順序を使用して並べ替えます。

-a file

ファイルが存在する場合は True。

-b file

ファイルが存在し、それがブロック特殊ファイルである場合は True。

-c file

ファイルが存在し、それがキャラクタ スペシャル ファイルである場合は True。

-d file

ファイルが存在し、それがディレクトリである場合は True。

-e file

ファイルが存在する場合は True。

-f file

ファイルが存在し、通常のファイルである場合は True。

-g file

ファイルが存在し、set-group-id である場合は True。

-h file

ファイルが存在し、シンボリック リンクである場合は True。

-k file

ファイルが存在し、その「スティッキー」ビットが設定されている場合は True。

-p file

ファイルが存在し、名前付きパイプ (FIFO) である場合は True。

-r file

ファイルが存在し、読み取り可能な場合は True。

-s file

ファイルが存在し、サイズが 0 より大きい場合は True。

-t fd

ファイル記述子 fd が開いており、端末を参照している場合は True。

-u file

ファイルが存在し、その set-user-id ビットが設定されている場合は True。

-w file

ファイルが存在し、書き込み可能な場合は True。

-x file

ファイルが存在し、実行可能な場合は True。

-G file

ファイルが存在し、実効グループ ID によって所有されている場合は True。

-L file

ファイルが存在し、シンボリック リンクである場合は True。

-N file

ファイルが存在し、最後に読み取られてから変更されている場合は True。

-O file

ファイルが存在し、実効ユーザー ID が所有する場合は True。

-S file

ファイルが存在し、ソケットである場合は True。

file1 -ef file2

file1 と file2 が同じデバイス番号と i ノード番号を参照する場合は True。

file1 -nt file2

file1 が (変更日に従って) file2 より新しい場合、または file1 が存在し、file2 が存在しない場合は True 。

file1 -ot file2

file1 が file2 より古い場合、または file2 が存在するが file1 が存在しない場合は true。

-o optname

シェル オプション optname が有効な場合は True。以下のset ビルトインの -o オプションの説明にあるオプションのリストを参照してください。

-v varname

シェル変数 varname が設定されている (値が割り当てられている) 場合は True。

-R varname

シェル変数 varname が設定されており、名前参照である場合は True。

-z string

文字列の長さがゼロの場合は True。

string
-n string

文字列の長さがゼロ以外の場合は True。

string1 == string2
string1 = string2

文字列が等しい場合は True。 POSIX に準拠するには、= を test コマンドと一緒に使用する必要があります。 [[ コマンドと一緒に使用すると、上記で説明したようにパターン マッチングが実行されます (複合コマンド)。

string1 != string2

文字列が等しくない場合は True。

string1 < string2

辞書順に string1 が string2 より前に並べ替えられる場合は True。

string1 > string2

string1 が辞書順に string2 の後にソートされる場合は True。

arg1 OP arg2

OP は、-eq、-ne、-lt、-le のいずれかです。 、-gt、または-ge。これらの算術二項演算子は、arg1 が arg2 と等しい、等しくない、未満、以下、以上、または以上の場合に true を返します。それぞれ。 Arg1 と arg2 は正または負の整数です。 [[ コマンドと一緒に使用すると、Arg1 と Arg2 は算術式として評価されます (上記の算術評価を参照) 。

簡単なコマンド拡張

単純なコマンドが実行されると、シェルは次の展開、代入、およびリダイレクトを左から右に次の順序で実行します。

  1. パーサーが変数割り当て (コマンド名の前にあるもの) およびリダイレクトとしてマークした単語は、後の処理のために保存されます。

  2. 変数の代入やリダイレクトではない単語が展開されます。展開後に単語が残っている場合、最初の単語がコマンド名とみなされ、残りの単語が引数になります。

  3. リダイレクトは、上記の「リダイレクト」で説明したように実行されます。

  1. 各変数割り当ての = の後のテキストは、変数に割り当てられる前に、チルダ展開、パラメータ展開、コマンド置換、算術展開、引用符の削除が行われます。

コマンド名が見つからない場合、変数の割り当ては現在のシェル環境に影響を与えます。それ以外の場合、変数は実行されたコマンドの環境に追加され、現在のシェル環境には影響しません。いずれかの割り当てで読み取り専用変数に値を割り当てようとすると、エラーが発生し、コマンドはゼロ以外のステータスで終了します。

コマンド名が見つからない場合は、リダイレクトが実行されますが、現在のシェル環境には影響しません。リダイレクト エラーが発生すると、コマンドはゼロ以外のステータスで終了します。

展開後にコマンド名が残っている場合は、以下のように実行されます。それ以外の場合、コマンドは終了します。拡張の 1 つにコマンド置換が含まれている場合、コマンドの終了ステータスは、最後に実行されたコマンド置換の終了ステータスになります。コマンド置換がなかった場合、コマンドはステータス 0 で終了します。

コマンドの実行

コマンドが単語に分割された後、結果が単純なコマンドとオプションの引数リストになった場合は、次のアクションが実行されます。

コマンド名にスラッシュが含まれていない場合、シェルはコマンド名を見つけようとします。その名前のシェル関数が存在する場合、その関数は上記の関数で説明したように呼び出されます。名前が関数と一致しない場合、シェルはシェル組み込みのリストからその名前を検索します。一致するものが見つかった場合は、その組み込みが呼び出されます。

名前がシェル関数でも組み込みでもなく、スラッシュが含まれていない場合、bash はその名前の実行可能ファイルを含むディレクトリのパスの各要素を検索します。 Bash は、ハッシュ テーブルを使用して実行可能ファイルの完全なパス名を記憶します (以下のシェル組み込みコマンドのハッシュを参照)。 PATH 内のディレクトリの完全検索は、コマンドがハッシュ テーブルで見つからない場合にのみ実行されます。検索が失敗した場合、シェルはcommand_not_found_handleという名前の定義されたシェル関数を検索します。その関数が存在する場合、その関数は元のコマンドと元のコマンドの引数を引数として別の実行環境で呼び出され、関数の終了ステータスがそのサブシェルの終了ステータスになります。その関数が定義されていない場合、シェルはエラー メッセージを出力し、終了ステータス 127 を返します。

検索が成功した場合、またはコマンド名に 1 つ以上のスラッシュが含まれている場合、シェルは指定されたプログラムを別の実行環境で実行します。引数 0 は指定された名前に設定され、コマンドの残りの引数は指定された引数 (存在する場合) に設定されます。

ファイルが実行可能形式ではなく、ファイルがディレクトリではないためにこの実行が失敗した場合、 ファイルはシェル コマンドを含むファイルであるシェル スクリプトであるとみなされます。それを実行するためにサブシェルが生成されます。このサブシェルは自身を再初期化するため、スクリプトを処理するために新しいシェルが呼び出されたかのようになります。ただし、コマンドの場所は親によって記憶されます (以下の の ハッシュ を参照)シェル組み込みコマンド)は子によって保持されます。

プログラムが #! で始まるファイルの場合、最初の行の残りの部分はプログラムのインタープリタを指定します。シェルは、この実行可能形式自体を処理しないオペレーティング システム上で、指定されたインタープリタを実行します。インタプリタへの引数は、プログラムの最初の行のインタプリタ名に続く 1 つのオプションの引数、プログラム名、コマンド引数 (存在する場合) で構成されます。

コマンド実行環境

シェルには実行環境があり、次のもので構成されます。

  • exec ビルトインに提供されたリダイレクトによって変更された、呼び出し時にシェルによって継承されたファイルを開きます。

  • cd、pushd、または popd によって設定された現在の作業ディレクトリ、または呼び出し時にシェルによって継承された現在の作業ディレクトリ

  • umask によって設定されたファイル作成モード マスク、またはシェルの親から継承されたファイル作成モード マスク

  • トラップによって設定された現在のトラップ

  • 変数割り当てまたはセットによって設定されるか、環境内のシェルの親から継承されるシェルパラメータ

  • 実行中に定義された、または環境内のシェルの親から継承されたシェル関数

  • 呼び出し時 (デフォルトまたはコマンドライン引数による) または設定 によって有効になるオプション

  • shopt によって有効になるオプション

  • エイリアスで定義されたシェル エイリアス

  • バックグラウンド ジョブのプロセス ID、$$ の値、および PPID の値を含むさまざまなプロセス ID。組み込み関数やシェル関数以外の簡易コマンドを実行する場合は、以下のような別の実行環境で実行されます。特に明記されていない限り、値はシェルから継承されます。

  • シェルの開いているファイル、およびコマンドへのリダイレクトによって指定された変更と追加

  • 現在の作業ディレクトリ

  • ファイル作成モードマスク

  • エクスポート用にマークされたシェル変数と関数、およびコマンド用にエクスポートされ、環境に渡される変数

  • シェルによって捕捉されたトラップは、シェルの親から継承された値にリセットされ、シェルによって無視されたトラップは無視されます。

この別の環境で呼び出されたコマンドは、シェルの実行環境に影響を与えることはできません。

コマンド置換、括弧でグループ化されたコマンド、および非同期コマンドは、シェル環境の複製であるサブシェル環境で呼び出されます。ただし、シェルによって捕捉されたトラップは、呼び出し時にシェルが親から継承した値にリセットされます。パイプラインの一部として呼び出される組み込みコマンドは、サブシェル環境でも実行されます。サブシェル環境に加えられた変更は、シェルの実行環境に影響を与えることはできません。

コマンド置換を実行するために生成されたサブシェルは、親シェルから -e オプションの値を継承します。 posix モードでない場合、bash はそのようなサブシェルの -e オプションをクリアします。

コマンドの後に & があり、ジョブ コントロールがアクティブでない場合、コマンドのデフォルトの標準入力は空のファイル /dev/null です。それ以外の場合、呼び出されたコマンドは、リダイレクトによって変更された呼び出しシェルのファイル記述子を継承します。

環境

プログラムが呼び出されると、環境と呼ばれる文字列の配列が与えられます。これは、名前=値の形式の名前と値のペアのリストです。

シェルには、環境を操作するためのいくつかの方法が用意されています。呼び出し時に、シェルは独自の環境をスキャンし、見つかった名前ごとにパラメータを作成し、 子プロセスへのエクスポート用に自動的にマークします。実行されたコマンドは環境を継承します。 export および declare -x コマンドを使用すると、パラメータと関数を環境に追加したり、環境から削除したりできます。環境内のパラメータの値が変更されると、新しい値が環境の一部となり、古い値が置き換えられます。実行されたコマンドによって継承される環境は、シェルの初期環境で構成されます。その値はシェル内で変更できますが、unset コマンドによって削除されたペアと、エクスポートによって追加されたものを除きます。 および declare -x コマンド。

前述の「パラメータ」で説明したように、 任意の単純なコマンドまたは関数の環境は、パラメータ割り当てをプレフィックスとして付けることで一時的に拡張できます。これらの代入ステートメントは、そのコマンドによって表示される環境にのみ影響します。

-k オプションが設定されている場合 (以下のset 組み込みコマンドを参照)、すべてのパラメータ割り当てがコマンドの環境に配置されます。コマンド名の前にあるものだけではありません。

bash が外部コマンドを呼び出すと、変数 _ がコマンドの完全なファイル名に設定され、環境内のそのコマンドに渡されます。

終了ステータス

実行されたコマンドの終了ステータスは、waitpid システム コールまたは同等の関数によって返される値です。終了ステータスは 0 ~ 255 の範囲になりますが、以下で説明するように、シェルは特別に 125 を超える値を使用する場合があります。シェル組み込みコマンドおよび複合コマンドからの終了ステータスもこの範囲に制限されます。特定の状況下では、シェルは特別な値を使用して特定の障害モードを示します。

シェルの目的では、ゼロ終了ステータスで終了するコマンドは成功したことになります。終了ステータス 0 は成功を示します。ゼロ以外の終了ステータスは失敗を示します。コマンドが致命的なシグナルNで終了すると、bashは終了ステータスとして 128+N の値を使用します。

コマンドが見つからない場合、それを実行するために作成された子プロセスはステータス 127 を返します。コマンドが見つかっても実行できない場合、戻りステータスは 126 です。

展開またはリダイレクト中のエラーが原因でコマンドが失敗した場合、終了ステータスは 0 より大きくなります。

シェル組み込みコマンドは、成功した場合はステータス 0 (true) を返し、実行中にエラーが発生した場合は 0 以外 (false) を返します。すべての組み込みは終了ステータス 2 を返し、不正な使用法、一般に無効なオプションまたは引数の欠落を示します。

Bash 自体は、構文エラーが発生しない限り、最後に実行されたコマンドの終了ステータスを返します。構文エラーが発生した場合は、ゼロ以外の値で終了します。以下のexit組み込みコマンドも参照してください。

信号

bash が対話型である場合、トラップがない場合、SIGTERM は無視されます (そのため、kill 0 は対話型シェルを強制終了しません)。 SIGINT はキャッチされて処理されます (wait ビルトインは割り込み可能です)。すべての場合において、bash は SIGQUIT を無視します。ジョブ制御が有効な場合、bash は SIGTTIN、SIGTTOU、および SIGTSTP を無視します。

bash によって実行される非組み込みコマンドには、シェルによって親から継承された値が設定されたシグナル ハンドラーがあります。ジョブ制御が有効ではない場合、非同期コマンドはこれらの継承されたハンドラーに加えて SIGINT と SIGQUIT を無視します。コマンド置換の結果として実行されるコマンドは、キーボードで生成されたジョブ制御信号 SIGTTIN、SIGTTOU、および SIGTSTPを無視します。

デフォルトでは、SIGHUP を受信するとシェルが終了します。終了する前に、対話型シェルは実行中または停止しているすべてのジョブにSIGHUP を再送信します。停止したジョブはSIGHUPを確実に受信するためにSIGCONTが送信されます。シェルが特定のジョブにシグナルを送信しないようにするには、disown 組み込み (以下のシェル組み込みコマンド を参照) を使用してジョブ テーブルからそのジョブを削除するか、送信しないようにマークする必要があります。 disown -h を使用して SIGHUP を受信します。

huponexit シェル オプションが shopt で設定されている場合、bash は対話型ログイン時にすべてのジョブに SIGHUP を送信します。シェルが終了します。

コマンドの完了を待機しているbash がトラップが設定されたシグナルを受信した場合、コマンドが完了するまでトラップは実行されません。 bash がwait ビルトイン経由で非同期コマンドを待機している場合、トラップが設定されたシグナルを受信するとwait が発生します。組み込みは、終了ステータスが 128 を超えるとすぐに戻り、その直後にトラップが実行されます。

ジョブ制御

ジョブ制御とは、プロセスの実行を選択的に停止 (一時停止) し、後で実行を継続 (再開) できる機能を指します。ユーザーは通常、オペレーティング システム カーネルのターミナル ドライバーとbashが共同で提供する対話型インターフェイスを介してこの機能を使用します。

シェルはジョブを各パイプラインに関連付けます。現在実行中のジョブのテーブルが保持されており、jobs コマンドで一覧表示できます。 bash がジョブを非同期に (バックグラウンドで) 開始すると、次のような行が出力されます。

[1] 25647

これは、このジョブがジョブ番号 1 であり、このジョブに関連付けられたパイプライン内の最後のプロセスのプロセス ID が 25647 であることを示します。単一のパイプライン内のプロセスはすべて、同じジョブのメンバーです。 Bash はジョブ制御の基礎としてジョブ抽象化を使用します。

ジョブ制御へのユーザー インターフェイスの実装を容易にするために、オペレーティング システムは現在のターミナルプロセス グループ ID の概念を維持します。このプロセス グループのメンバー (プロセス グループ ID が現在のターミナル プロセス グループ ID と等しいプロセス) は、SIGINT などのキーボードで生成されたシグナルを受信します。これらのプロセスはフォアグラウンドにあると言われます。 バックグラウンドプロセスは、プロセス グループ ID が端末のものとは異なるプロセスです。このようなプロセスはキーボードで生成された信号の影響を受けません。フォアグラウンド プロセスのみが端末からの読み取り、またはユーザーが stty tostop で指定した場合に端末への書き込みを許可されます。端末からの読み取り (stty tostop が有効な場合の書き込み) を試みるバックグラウンド プロセスには、カーネルの端末ドライバーによってSIGTTIN (SIGTTOU) シグナルが送信されます。キャッチされた場合はプロセスを一時停止します。

bash が実行されているオペレーティング システムがジョブ制御をサポートしている場合、bash にはそれを使用するための機能が含まれています。プロセスの実行中にサスペンド文字(通常は^Z、Control-Z)を入力すると、そのプロセスが停止され、 制御がbashに戻ります。 。 遅延サスペンド文字 (通常は ^Y、Control-Y) を入力すると、端末から入力を読み取ろうとしたときにプロセスが停止され、制御が戻ります。をバッシングします。ユーザーは、bg コマンドを使用してバックグラウンドでジョブを継続したり、 fg コマンドを使用してフォアグラウンドで継続したり、 >killコマンドでそれを殺します。 ^Z はすぐに有効になり、保留中の出力と先行入力が破棄されるという追加の副作用があります。

シェルでジョブを参照するには、いくつかの方法があります。文字 % はジョブ仕様 (ジョブスペック) を示します。ジョブ番号 n は %n と呼ばれる場合があります。ジョブは、ジョブの開始に使用された名前のプレフィックスを使用して、またはコマンド ラインに表示される部分文字列を使用して参照することもできます。たとえば、%ce は、コマンド名が ce で始まる停止したジョブを指します。プレフィックスが複数のジョブに一致する場合、bash はエラーを報告します。一方、%?ce を使用すると、コマンド ラインに文字列 ce を含むジョブが参照されます。部分文字列が複数のジョブに一致する場合、bash はエラーを報告します。記号 %% と %+ は、シェルの現在のジョブの概念を指します。これは、フォアグラウンドにあったときに停止された最後のジョブです。またはバックグラウンドで開始されました。 前のジョブは、%- を使用して参照できます。ジョブが 1 つだけある場合は、%+ と %- の両方を使用してそのジョブを参照できます。ジョブに関連する出力 (jobs コマンドの出力など) では、現在のジョブには常に + のフラグが付けられ、前のジョブには - のフラグが付けられます。 です。単一の % (ジョブ指定を伴わない) も、現在のジョブを参照します。

ジョブに名前を付けるだけで、そのジョブをフォアグラウンドに移動できます。%1 は ``fg %1'' と同義で、ジョブ 1 をバックグラウンドからフォアグラウンドに移動します。前景。同様に、``%1 &'' はバックグラウンドでジョブ 1 を再開します。これは ``bg %1'' と同等です。

シェルは、ジョブの状態が変化するたびにすぐに学習します。通常、bash は、他の出力を中断しないように、ジョブのステータスの変更を報告する前に、プロンプトを出力する直前まで待機します。 set 組み込みコマンドの -b オプションが有効になっている場合、bash はそのような変更をすぐに報告します。 SIGCHLD のトラップは、終了する子ごとに実行されます。

ジョブの停止中に bash を終了しようとした場合 (または、shopt ビルトインを使用して checkjobs シェル オプションが有効になっている場合)、 )、シェルは警告メッセージを出力し、checkjobs オプションが有効になっている場合は、ジョブとそのステータスを一覧表示します。その後、ジョブ コマンドを使用してステータスを検査できます。コマンドを介さずに 2 回目の終了試行が行われた場合、シェルは別の警告を出力せず、停止したジョブは終了します。

シェルが wait 組み込み関数を使用してジョブまたはプロセスを待機しており、ジョブ制御が有効になっている場合、 ジョブの状態が変化すると wait が返されます。 -f オプションを指定すると、wait はジョブまたはプロセスが終了するまで待機してから戻ります。

促す

対話的に実行する場合、bash はコマンドを読み取る準備ができたときにプライマリ プロンプト PS1 を表示し、さらに入力が必要なときにセカンダリ プロンプト PS2 を表示します。コマンドを完了します。 Bash は、コマンドを読み取った後、実行する前に PS0 を表示します。 -x オプションが有効になっている場合、Bash は各コマンドをトレースする前に、上記のように PS4 を表示します。 Bash では、次のようにデコードされるバックスラッシュでエスケープされた特殊文字を多数挿入することで、これらのプロンプト文字列をカスタマイズできます。

\a

ASCII ベル文字 (07)

\d

「平日月日」形式の日付 (例: 「火曜日 5 月 26 日」)

\D{format}

形式はstrftime(3) に渡され、結果がプロンプト文字列に挿入されます。空の形式を指定すると、ロケール固有の時刻表現になります。中括弧は必須です

\e

ASCII エスケープ文字 (033)

\h

最初の「.」までのホスト名

\H

ホスト名

\j

シェルによって現在管理されているジョブの数

\l

シェルの端末デバイス名のベース名

\n

改行

\r

キャリッジリターン

\s

シェルの名前、$0 のベース名 (最後のスラッシュに続く部分)

\t

24 時間制の HH:MM:SS 形式の現在時刻

\T

12 時間制の HH:MM:SS 形式の現在時刻

\@

午前/午後 12 時間形式の現在時刻

\A

24 時間形式の HH:MM 形式の現在時刻

\u

現在のユーザーのユーザー名

\v

bash のバージョン (例: 2.00)

\V

bash のリリース、バージョン + パッチ レベル (例: 2.00.0)

\w

現在の作業ディレクトリ。$HOME はチルダで省略されます (PROMPT_DIRTRIM 変数の値を使用します)。

\W

現在の作業ディレクトリのベース名。$HOME はチルダで省略されます。

\!

このコマンドの履歴番号

\#

このコマンドのコマンド番号

\$

有効な UID が 0 の場合は #、それ以外の場合は $

\nnn

8 進数 nnn に対応する文字

\\

バックスラッシュ

\[

非印刷文字のシーケンスを開始します。これは、端末制御シーケンスをプロンプトに埋め込むために使用できます。

\]

一連の非印刷文字を終了する

コマンド番号と履歴番号は通常異なります。コマンドの履歴番号は履歴リスト内の位置であり、履歴ファイル (下記の履歴を参照) から復元されたコマンドが含まれる場合があります。 number は、現在のシェル セッション中に実行されるコマンド シーケンス内の位置です。文字列がデコードされた後、promptvars シェル オプションの値に従って、パラメータ展開、コマンド置換、算術展開、および引用符の削除によって展開されます (shopt< の説明を参照してください)。 コマンドは、以下のシェル組み込みコマンドにあります)。文字列のエスケープされた部分がコマンド置換内に表示されたり、単語展開に特殊な文字が含まれている場合、これにより望ましくない副作用が生じる可能性があります。

読み込まれた行

これは、 シェル呼び出し時に--noediting オプションが指定されていない限り、対話型シェルを使用するときに入力の読み取りを処理するライブラリです。行編集は、read ビルトインの -e オプションを使用するときにも使用されます。デフォルトでは、行編集コマンドは Emacs のコマンドと似ています。 vi スタイルの行編集インターフェイスも利用できます。行編集は、set ビルトインの -o emacs または -o vi オプションを使用していつでも有効にできます (SHELL BUILTIN を参照)コマンドについては後述します)。シェルの実行後に行編集をオフにするには、set 組み込みの +o emacs または +o vi オプションを使用します。

リードライン表記

このセクションでは、キーストロークを表すために Emacs スタイルの表記が使用されます。コントロール キーは C-キーで表されます。たとえば、C-n は Control-N を意味します。同様に、メタキーは M-キーで示されるため、M-x は Meta-X を意味します。 (メタキーのないキーボードでは、M-x は ESC x を意味します。つまり、Esc キーを押してから x キーを押します。 キー。これにより、ESC がメタ プレフィックスになります。M-C-x の組み合わせは、ESC-Control-x を意味するか、Esc キーを押してからControl キーを押しながら x キーを押します。)

Readline コマンドには数値の引数を指定できます。これらは通常、繰り返し回数として機能します。しかし、場合によっては、議論の兆候が重要であることもあります。順方向に動作するコマンド (kill-line など) に負の引数を渡すと、そのコマンドは逆方向に動作します。引数を指定した場合の動作がこれとは異なるコマンドを以下に示します。

コマンドが強制終了テキストとして記述されている場合、削除されたテキストは将来の取得 (ヤンク) に備えて保存されます。キルされたテキストはキルリングに保存されます。連続キルするとテキストが 1 つのユニットに蓄積され、一度にすべて取り出すことができます。テキストをキルしないコマンドは、キルリング上のテキストのチャンクを分離します。

リードラインの初期化

Readline は、初期化ファイル (inputrc ファイル) にコマンドを入れることによってカスタマイズされます。このファイルの名前は、INPUTRC 変数の値から取得されます。この変数が設定されていない場合、デフォルトは ~/.inputrc です。そのファイルが存在しないか、読み取ることができない場合、最終的なデフォルトは /etc/inputrc です。 readlineライブラリを使用するプログラムが起動すると、初期化ファイルが読み込まれ、キーバインドと変数が設定されます。 readline 初期化ファイルで許可される基本的な構成はわずか数個だけです。空白行は無視されます。 # で始まる行はコメントです。 $ で始まる行は、条件構成を示します。他の行はキー バインディングと変数設定を示します。

デフォルトのキーバインディングはinputrc ファイルで変更できます。このライブラリを使用する他のプログラムは、独自のコマンドとバインディングを追加する場合があります。

たとえば、

M-Control-u: universal-argument

また

C-Meta-u: universal-argument

inputrc に入力すると、M-C-u は readline コマンドuniversal-argument を実行します。

次の記号文字名が認識されます: RUBOUT、DEL、ESC、LFD、NEWLINE、RET、RETURN、SPC、スペース、タブ。

コマンド名に加えて、readline を使用すると、キーが押されたときに挿入される文字列にキーをバインドできます (マクロ)。

Readline キー バインド

inputrc ファイルでキー バインディングを制御するための構文は簡単です。必要なのは、コマンドの名前またはマクロのテキストと、それをバインドするキー シーケンスだけです。名前は 2 つの方法のいずれかで指定できます。メタ- または コントロール- プレフィックスを付けたシンボリック キー名として、またはキー シーケンスとして指定できます。

キー名: 関数名またはマクロの形式を使用する場合、キー名は次のように綴られたキーの名前です。英語。例えば:

Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"

上記の例では、C-u は関数 universal-argument にバインドされ、M-DEL は関数 backward-kill にバインドされています。 -word とC-o は、右側で表現されたマクロを実行するようにバインドされています (つまり、行にテキスト「> 出力」を挿入します)。

2 番目の形式、"keyseq": 関数名 または マクロでは、keyseq は keyname とは異なります。キー シーケンス全体を示す文字列は、シーケンスを二重引用符で囲むことで指定できるという点で上記と同様です。次の例のように、一部の GNU Emacs スタイルのキー エスケープは使用できますが、記号文字名は認識されません。

"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"

この例では、C-u が再び関数 universal-argument にバインドされています。 C-x C-r は関数 re-read-init-file にバインドされており、ESC [ 1 1 ~ はテキスト `` を挿入するためにバインドされています。ファンクションキー1''。

GNU Emacs スタイルのエスケープ シーケンスの完全なセットは次のとおりです。

\C-

制御プレフィックス

\M-

メタプレフィックス

\e

エスケープ文字

\\

バックスラッシュ

\"

文字通りの「

\'

リテラル '

GNU Emacs スタイルのエスケープ シーケンスに加えて、バックスラッシュ エスケープの 2 番目のセットが利用可能です。

\a

警報(ベル)

\b

バックスペース

\d

消去

\f

フォームフィード

\n

改行

\r

キャリッジリターン

\t

水平タブ

\v

垂直タブ

\nnn

値が 8 進数値 nnn (1 ~ 3 桁) である 8 ビット文字

\xHH

値が 16 進数値 HH (1 桁または 2 桁の 16 進数) である 8 ビット文字

マクロのテキストを入力するときは、マクロ定義を示すために一重引用符または二重引用符を使用する必要があります。引用符で囲まれていないテキストは関数名とみなされます。マクロ本体では、上記のバックスラッシュエスケープが展開されます。バックスラッシュは、マクロ テキスト内の他の文字 (" と ' を含む) を引用符で囲みます。

Bash では、bind 組み込みコマンドを使用して、現在の readline キー バインディングを表示または変更できます。対話型使用中に編集モードを切り替えるには、set 組み込みコマンドの -o オプションを使用します (下記のシェル組み込みコマンドを参照)。

Readline 変数

Readline には、その動作をさらにカスタマイズするために使用できる変数があります。変数は、次の形式のステートメントを使用して inputrc ファイルに設定できます。

set variable-name value

またはbind 組み込みコマンドを使用します (以下のシェル組み込みコマンドを参照)。

特に明記されていない限り、readline 変数は (大文字と小文字は関係なく) オン または オフ の値を取ることができます。認識できない変数名は無視されます。変数値が読み取られる場合、空または null 値、「on」(大文字と小文字は区別されません)、および「1」はオンと同等です。他のすべての値はオフと同等です。変数とそのデフォルト値は次のとおりです。

bell-style (audible)

readline が端末のベルを鳴らしたいときに何が起こるかを制御します。 なしに設定すると、readline はベルを鳴らしません。 visible に設定すると、readline は可視ベルが利用可能な場合はそれを使用します。 可聴に設定すると、readline は端末のベルを鳴らそうとします。

bind-tty-special-chars (On)

オンに設定すると、readline は、カーネルのターミナル ドライバーによって特別に処理される制御文字を、同等の readline にバインドしようとします。

blink-matching-paren (Off)

オンに設定すると、readline は閉じ括弧が挿入されたときにカーソルを開き括弧に短時間移動しようとします。

colored-completion-prefix (Off)

オンに設定すると、補完をリストするときに、readline は候補となる補完のセットの共通プレフィックスを別の色を使用して表示します。色の定義は、LS_COLORS 環境変数の値から取得されます。

colored-stats (Off)

オンに設定すると、readline は、ファイルの種類を示すために異なる色を使用して、候補となる補完を表示します。色の定義は、LS_COLORS 環境変数の値から取得されます。

comment-begin (``#'')

readline insert-comment コマンドの実行時に挿入される文字列。このコマンドは、emacs モードでは M-# にバインドされ、vi コマンド モードでは # にバインドされます。

completion-display-width (-1)

補完を実行するときに、一致する可能性のあるものを表示するために使用される画面の列の数。値が 0 未満または端末画面の幅より大きい場合、値は無視されます。値 0 を指定すると、一致するものが 1 行に 1 つ表示されます。デフォルト値は -1 です。

completion-ignore-case (Off)

オンに設定すると、readline は大文字と小文字を区別せずにファイル名の一致と補完を実行します。

completion-map-case (Off)

オンに設定され、completion-ignore-case が有効になっている場合、readline はハイフン (-) とアンダースコア (_ ) を処理します。 ) は、大文字と小文字を区別しないファイル名の一致と補完を実行する場合と同等です。

completion-prefix-display-length (0)

変更せずに表示される、候補となる補完のリストの共通プレフィックスの文字数。 0 より大きい値に設定すると、候補の補完を表示するときに、この値より長い一般的な接頭辞が省略記号に置き換えられます。

completion-query-items (100)

これにより、possible-completions コマンドによって生成される可能な補完の数の表示についてユーザーがいつ問い合わせられるかが決まります。ゼロ以上の任意の整数値に設定できます。可能な補完の数がこの変数の値以上の場合、readline はユーザーがそれらを表示するかどうかを尋ねます。それ以外の場合は、単にターミナルにリストされるだけです。

convert-meta (On)

オンに設定すると、readline は 8 番目のビットを削除し、エスケープ文字をプレフィックスとして付けることにより、8 番目のビットが設定された文字を ASCII キー シーケンスに変換します (実際には、 エスケープをメタ プレフィックス として使用します)。 )。デフォルトはオンですが、ロケールに 8 ビット文字が含まれている場合、readline はそれをオフに設定します。

disable-completion (Off)

オンに設定すると、readline は単語の補完を禁止します。補完文字は自己挿入にマッピングされているかのように行に挿入されます。

echo-control-characters (On)

オンに設定すると、readline がサポートされていることを示すオペレーティング システム上で、キーボードから生成された信号に対応する文字がエコーされます。

editing-mode (emacs)

readline が Emacs または vi に似た一連のキー バインディングで始まるかどうかを制御します。 editing-mode は emacs または vi に設定できます。

emacs-mode-string (@)

show-mode-in-prompt 変数が有効になっている場合、emacs 編集モードがアクティブなときに、この文字列はプライマリ プロンプトの最後の行の直前に表示されます。値はキー バインディングと同様に展開されるため、メタプレフィックスとコントロール プレフィックスおよびバックスラッシュ エスケープ シーケンスの標準セットが利用可能です。 \1 および \2 エスケープを使用して、非印刷文字のシーケンスを開始および終了します。これを使用して、端末制御シーケンスをモード文字列に埋め込むことができます。

enable-bracketed-paste (On)

オンに設定すると、readline は各文字を読み取られたかのように扱うのではなく、各貼り付けを単一の文字列として編集バッファに挿入できるようにターミナルを設定します。キーボードから。これにより、貼り付けた文字が編集コマンドとして解釈されるのを防ぐことができます。

enable-keypad (Off)

オンに設定すると、readline は呼び出されたときにアプリケーションのキーパッドを有効にしようとします。一部のシステムでは、矢印キーを有効にするためにこれが必要です。

enable-meta-key (On)

オンに設定すると、readline は呼び出されたときに端末がサポートしていると主張するメタ修飾キーを有効にしようとします。多くの端末では、8 ビット文字の送信にメタ キーが使用されます。

expand-tilde (Off)

オンに設定すると、readline が単語補完を試みるときにチルダ拡張が実行されます。

history-preserve-point (Off)

オンに設定すると、履歴コードは前の履歴または次の履歴で取得した各履歴行の同じ位置にポイントを配置しようとします。 。

history-size (unset)

履歴リストに保存される履歴エントリの最大数を設定します。ゼロに設定すると、既存の履歴エントリはすべて削除され、新しいエントリは保存されません。 0 より小さい値に設定すると、履歴エントリの数は制限されません。デフォルトでは、履歴エントリの数はHISTSIZE シェル変数の値に設定されます。 history-size を数値以外の値に設定しようとすると、履歴エントリの最大数は 500 に設定されます。

horizontal-scroll-mode (Off)

オンに設定すると、readline が表示に 1 行を使用し、入力が画面の幅よりも長くなった場合、新しい行に折り返すのではなく、画面の 1 行で水平にスクロールします。この設定は、高さ 1 の端末に対して自動的に有効になります。

input-meta (Off)

オンに設定すると、端末がサポートできると主張しているものに関係なく、readline は 8 ビット入力を有効にします (つまり、読み取った文字から 8 ビットを取り除きません)。 メタフラグという名前は、この変数の同義語です。デフォルトはオフですが、ロケールに 8 ビット文字が含まれている場合、readline はそれをオンに設定します。

isearch-terminators (``C-[C-J'')

その後その文字をコマンドとして実行せずに、インクリメンタル検索を終了する文字列。この変数に値が指定されていない場合、文字 ESC および C-J を使用すると、インクリメンタル検索が終了します。

keymap (emacs)

現在の readline キーマップを設定します。有効なキーマップ名のセットはemacs、emacs-standard、emacs-meta、emacs-ctlx、vi、vi-command、およびvi-insertです。 vi は vi-command と同等です。 emacs は emacs-standard と同等です。デフォルト値はemacsです。 editing-mode の値もデフォルトのキーマップに影響します。

keyseq-timeout (500)

あいまいなキー シーケンス (これまでに読み取った入力を使用して完全なキー シーケンスを形成できるもの、または追加の入力を取得してより長いキー シーケンスを完成できるもの) を読み取るときに、readline が文字を待機する時間を指定します。 。タイムアウト内に入力が受信されない場合、readline は短いですが完全なキー シーケンスを使用します。値はミリ秒単位で指定されるため、値 1000 はreadline が追加の入力を 1 秒待つことを意味します。この変数がゼロ以下の値、または数値以外の値に設定されている場合、readline は別のキーが押されるまで待機して、どのキー シーケンスを完了するかを決定します。

mark-directories (On)

オンに設定すると、完成したディレクトリ名にスラッシュが追加されます。

mark-modified-lines (Off)

オンに設定すると、変更された履歴行の前にアスタリスク (*) が付けられて表示されます。

mark-symlinked-directories (Off)

オンに設定すると、ディレクトリへのシンボリック リンクである完全な名前にスラッシュが追加されます (mark-directories の値に応じて)。

match-hidden-files (On)

この変数をオンに設定すると、readline は名前が「.」で始まるファイルと一致します。 (隠しファイル) ファイル名補完を実行するとき。 オフに設定すると、先頭の「.」が表示されなくなります。完了するには、ユーザーがファイル名に入力する必要があります。

menu-complete-display-prefix (Off)

オンに設定すると、メニュー補完では、リストを循環する前に、候補となる補完リストの共通のプレフィックス (空の場合もあります) が表示されます。

output-meta (Off)

オンに設定すると、readline はメタ プレフィックス付きのエスケープ シーケンスとしてではなく、直接設定された 8 番目のビットを持つ文字を表示します。デフォルトはオフですが、ロケールに 8 ビット文字が含まれている場合、readline はそれをオンに設定します。

page-completions (On)

オンに設定すると、readline は内部の詳細に似たページャーを使用して、入力候補を一度に 1 画面分表示します。

print-completions-horizontally (Off)

オンに設定すると、readline は、画面の下ではなく、アルファベット順に並べ替えられた一致を含む補完を表示します。

revert-all-at-newline (Off)

オンに設定すると、readline はaccept-line の実行時に戻る前に履歴行へのすべての変更を元に戻します。デフォルトでは、履歴行は変更でき、readline の呼び出し全体で個々の元に戻すリストを保持できます。

show-all-if-ambiguous (Off)

これにより、補完関数のデフォルトの動作が変更されます。 オンに設定すると、複数の補完候補がある単語がある場合、ベルを鳴らす代わりに、一致する単語がすぐにリストされます。

show-all-if-unmodified (Off)

これにより、曖昧な場合はすべて表示と同様の方法で補完関数のデフォルトの動作が変更されます。 オン に設定すると、部分的な補完の可能性がなく、複数の補完の可能性がある単語 (可能性のある補完が共通の接頭辞を共有しない) では、ベルを鳴らす代わりに、一致するものがすぐにリストされます。

show-mode-in-prompt (Off)

オンに設定した場合は、編集モード (emacs、vi コマンド、または vi 挿入) を示す文字列をプロンプトの先頭に追加します。モード文字列はユーザーが設定可能です (例: emacs-mode-string)。

skip-completed-text (Off)

オンに設定すると、行に単一の一致を挿入するときのデフォルトの補完動作が変更されます。単語の途中で補完を実行する場合にのみアクティブになります。有効にすると、readline は補完中の単語内のポイント以降の文字に一致する文字を補完から挿入しないため、カーソルに続く単語の部分は重複しません。

vi-cmd-mode-string ((cmd))

show-mode-in-prompt 変数が有効になっている場合、vi 編集モードがアクティブでコマンド モードの場合、この文字列はプライマリ プロンプトの最終行の直前に表示されます。値はキー バインディングと同様に展開されるため、メタプレフィックスとコントロール プレフィックスおよびバックスラッシュ エスケープ シーケンスの標準セットが利用可能です。 \1 および \2 エスケープを使用して、非印刷文字のシーケンスを開始および終了します。これを使用して、端末制御シーケンスをモード文字列に埋め込むことができます。

vi-ins-mode-string ((ins))

show-mode-in-prompt 変数が有効になっている場合、vi 編集モードがアクティブで挿入モードのときに、この文字列がプライマリ プロンプトの最終行の直前に表示されます。値はキー バインディングと同様に展開されるため、メタプレフィックスとコントロール プレフィックスおよびバックスラッシュ エスケープ シーケンスの標準セットが利用可能です。 \1 および \2 エスケープを使用して、非印刷文字のシーケンスを開始および終了します。これを使用して、端末制御シーケンスをモード文字列に埋め込むことができます。

visible-stats (Off)

オンに設定すると、stat(2) によって報告されるファイルのタイプを示す文字が、可能な補完をリストするときにファイル名に追加されます。

Readline 条件構造体

Readline は、C プリプロセッサの条件付きコンパイル機能と精神的に似た機能を実装しており、テストの結果としてキー バインドと変数設定を実行できます。 4 つのパーサー ディレクティブが使用されます。

$if

$if 構造を使用すると、編集モード、使用されている端末、または readline を使用するアプリケーションに基づいてバインドを作成できます。テストのテキストは、比較演算子の後には行末まで続きます。特に明記されていない限り、それを分離するために文字は必要ありません。

mode

$if ディレクティブの mode= 形式は、readline が emacs モードであるか vi モードであるかをテストするために使用されます。これは、set keymap コマンドと組み合わせて使用できます。たとえば、emacs-standard キーマップと emacs-ctlx キーマップのみにバインディングを設定します。 readline が emacs モードで開始している場合。

term

term= フォームは、端末固有のキー バインドを含めるために使用できます。おそらく、端末のファンクション キーによって出力されるキー シーケンスをバインドするために使用されます。 = の右側の単語は、端末の完全名と、最初の - より前の端末名の部分の両方に対してテストされます。これにより、たとえば、sun が sun と sun-cmd の両方に一致するようになります。

version

バージョンテストは、特定の readline バージョンとの比較を実行するために使用できます。 バージョンは、現在の readline バージョンに展開されます。比較演算子のセットには、=、(および ==)、!=、<=、が含まれます。 >>=、<、>。演算子の右側に指定されるバージョン番号は、メジャー バージョン番号、オプションの小数点、およびオプションのマイナー バージョン (7.1 など) で構成されます。マイナー バージョンを省略した場合は0 とみなされます。演算子は、文字列 version およびバージョン番号引数から空白で区切ることができます。

application

アプリケーション構造は、アプリケーション固有の設定を含めるために使用されます。 readline ライブラリを使用する各プログラムはアプリケーション名を設定し、初期化ファイルは特定の値をテストできます。これは、キー シーケンスを特定のプログラムに役立つ関数にバインドするために使用できます。たとえば、次のコマンドは、bash の現在または前の単語を引用符で囲むキー シーケンスを追加します。

$if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
variable

variable 構造は、readline 変数と値の単純な等価性テストを提供します。許可される比較演算子は、=、==、および != です。変数名と比較演算子は空白で区切る必要があります。演算子は、右側の値から空白で区切ることができます。文字列変数とブール変数の両方をテストできます。ブール変数は、オンとオフの値に対してテストする必要があります。

$endif

前の例で示したように、このコマンドは $if コマンドを終了します。

$else

$if ディレクティブのこのブランチのコマンドは、テストが失敗した場合に実行されます。

$include

このディレクティブは単一のファイル名を引数として受け取り、そのファイルからコマンドとバインディングを読み取ります。たとえば、次のディレクティブは /etc/inputrc となります。

$include   /etc/inputrc

検索中

Readline には、コマンド履歴 (下記の履歴 を参照) から指定された文字列を含む行を検索するためのコマンドが用意されています。検索モードには、増分と非増分の 2 つがあります。

インクリメンタル検索は、ユーザーが検索文字列の入力を完了する前に開始されます。検索文字列の各文字が入力されると、readline は、それまでに入力された文字列と一致する履歴からの次のエントリを表示します。インクリメンタル検索では、必要な履歴エントリを見つけるのに必要な文字数だけが必要です。 isearch-terminators 変数の値に含まれる文字は、インクリメンタル検索を終了するために使用されます。その変数に値が割り当てられていない場合、エスケープ文字と Control-J 文字を使用すると、インクリメンタル検索が終了します。 Ctrl+G を押すと、インクリメンタル検索が中止され、元の行が復元されます。検索が終了すると、検索文字列を含む履歴エントリが現在の行になります。

履歴リスト内の他の一致するエントリを検索するには、必要に応じて Control-S または Control-R を入力します。これにより、これまでに入力した検索文字列に一致する次のエントリを履歴内で後方または前方に検索します。 readline コマンドにバインドされている他のキー シーケンスは検索を終了し、そのコマンドを実行します。たとえば、改行は検索を終了してその行を受け入れ、それによって履歴リストからコマンドを実行します。

Readline は、最後の増分検索文字列を記憶します。新しい検索文字列を定義する文字を間に挟まずに 2 つの Control-R を入力すると、記憶されている検索文字列が使用されます。

非増分検索では、一致する履歴行の検索を開始する前に、検索文字列全体が読み取られます。検索文字列はユーザーが入力することも、現在の行の内容の一部とすることもできます。

Readline コマンド名

以下は、コマンドの名前と、それらがバインドされているデフォルトのキー シーケンスのリストです。キー シーケンスが伴わないコマンド名は、デフォルトではバインドされていません。以下の説明では、ポイントは現在のカーソル位置を指し、マークはset-markコマンドによって保存されたカーソル位置を指します。ポイントとマークの間のテキストは領域と呼ばれます。

移動コマンド

beginning-of-line (C-a)

現在の行の先頭に移動します。

end-of-line (C-e)

行の最後に移動します。

forward-char (C-f)

文字を 1 つ進めます。

backward-char (C-b)

文字を 1 文字戻します。

forward-word (M-f)

次の単語の終わりまで進みます。単語は英数字 (文字と数字) で構成されます。

backward-word (M-b)

現在または前の単語の先頭に戻ります。単語は英数字 (文字と数字) で構成されます。

shell-forward-word

次の単語の終わりまで進みます。単語は引用符で囲まれていないシェル メタ文字で区切られます。

shell-backward-word

現在または前の単語の先頭に戻ります。単語は引用符で囲まれていないシェル メタ文字で区切られます。

previous-screen-line

前の物理画面行にある同じ物理画面列にポイントを移動しようとします。現在の Readline 行が複数の物理行を占めていない場合、またはポイントがプロンプトの長さに画面の幅を加えたものより大きくない場合、これは望ましい効果をもたらしません。

next-screen-line

次の物理画面行の同じ物理画面列にポイントを移動しようとします。現在の Readline 行が複数の物理行を占めていない場合、または現在の Readline 行の長さがプロンプトの長さに画面の幅を加えたものより大きくない場合、これは望ましい効果をもたらしません。

clear-display (M-C-l)

画面をクリアし、可能であれば端末のスクロールバック バッファをクリアしてから、現在の行を画面の上部に残したまま再描画します。

clear-screen (C-l)

画面をクリアし、現在の行を画面の上部に残したまま再描画します。引数を指定すると、画面をクリアせずに現在の行を更新します。

redraw-current-line

現在の行を更新します。

履歴を操作するためのコマンド

accept-line (Newline, Return)

カーソルがどこにあるかに関係なく、その行を受け入れます。この行が空でない場合は、HISTCONTROL 変数の状態に従って履歴リストに追加します。行が変更された履歴行である場合は、履歴行を元の状態に復元します。

previous-history (C-p)

履歴リストから前のコマンドを取得し、リスト内を戻ります。

next-history (C-n)

履歴リストから次のコマンドを取得し、リスト内を前に進みます。

beginning-of-history (M-<)

履歴の最初の行に移動します。

end-of-history (M->)

入力履歴の最後、つまり現在入力中の行に移動します。

reverse-search-history (C-r)

現在の行から開始して、必要に応じて履歴を「上」に移動して逆方向に検索します。これはインクリメンタル検索です。

forward-search-history (C-s)

現在の行から開始して、必要に応じて履歴を「下」に移動して前方検索します。これはインクリメンタル検索です。

non-incremental-reverse-search-history (M-p)

ユーザーが指定した文字列の非増分検索を使用して、現在行から始まる履歴を逆方向に検索します。

non-incremental-forward-search-history (M-n)

ユーザーが指定した文字列の非増分検索を使用して、履歴を前方検索します。

history-search-forward

現在の行の先頭とその点の間の文字列を履歴内で前方に検索します。これは非増分検索です。

history-search-backward

現在の行の先頭とその点の間の文字列を履歴内で逆方向に検索します。これは非増分検索です。

history-substring-search-backward

現在の行の先頭と現在のカーソル位置 (ポイント) の間の文字列を履歴内で逆方向に検索します。検索文字列は履歴行のどこにでも一致する可能性があります。これは非増分検索です。

history-substring-search-forward

現在の行の先頭とその点の間の文字列を履歴内で前方に検索します。検索文字列は履歴行のどこにでも一致する可能性があります。これは非増分検索です。

yank-nth-arg (M-C-y)

前のコマンドの最初の引数 (通常は前の行の 2 番目の単語) をポイントに挿入します。引数 n を指定すると、前のコマンドの n 番目の単語が挿入されます (前のコマンドの単語は単語 0 で始まります)。負の引数を指定すると、前のコマンドの終わりからn番目の単語が挿入されます。引数 n が計算されると、「!n」履歴展開が指定されたかのように引数が抽出されます。

yank-last-arg (M-. , M-_ )

前のコマンドに最後の引数 (前の履歴エントリの最後の単語) を挿入します。数値引数の場合は、yank-nth-arg とまったく同じように動作します。 yank-last-arg を連続して呼び出すと、履歴リストが後方に移動し、各行の最後の単語 (または最初の呼び出しの引数で指定された単語) が順番に挿入されます。これらの連続した呼び出しに指定された数値引数によって、履歴を移動する方向が決まります。負の引数を指定すると、履歴の方向 (前または後) が切り替わります。履歴拡張機能は、「!$」履歴拡張が指定されているかのように、最後の単語を抽出するために使用されます。

shell-expand-line (M-C-e)

シェルと同じように行を展開します。これにより、エイリアスと履歴の展開に加え、すべてのシェル ワードの展開が実行されます。履歴の拡張の説明については、以下の履歴の拡張を参照してください。

history-expand-line (M-^)

現在の行で履歴の展開を実行します。履歴の拡張の説明については、以下の履歴の拡張を参照してください。

magic-space

現在の行で履歴展開を実行し、スペースを挿入します。履歴の拡張の説明については、以下の履歴の拡張を参照してください。

alias-expand-line

現在の行でエイリアス展開を実行します。エイリアス展開の説明については、上記のエイリアスを参照してください。

history-and-alias-expand-line

現在の行で履歴とエイリアスの展開を実行します。

insert-last-argument (M-. , M-_ )

yank-last-arg と同義です。

operate-and-get-next (C-o)

現在の行を実行のために受け入れ、編集のために履歴から現在の行に関連する次の行をフェッチします。数値引数を指定した場合、現在の行の代わりに使用する履歴エントリを指定します。

edit-and-execute-command (C-x C-e)

現在のコマンドラインでエディタを起動し、結果をシェルコマンドとして実行します。 Bash は、$VISUAL、$EDITOR、emacs をこの順序でエディタとして呼び出そうとします。

テキストを変更するためのコマンド

end-of-file (usually C-d)

たとえば「stty」によって設定される、ファイルの終わりを示す文字。行に文字がなく、ポイントが行の先頭にあるときにこの文字が読み取られた場合、Readline はそれを入力の終わりとして解釈し、EOF を返します。

delete-char (C-d)

ポイントの文字を削除します。一般的に C-d のように、この関数が tty EOF 文字と同じ文字にバインドされている場合、その効果については上記を参照してください。

backward-delete-char (Rubout)

カーソルの後ろにある文字を削除します。数値引数が与えられた場合、削除されたテキストをキルリングに保存します。

forward-backward-delete-char

カーソルの下の文字を削除します。ただし、カーソルが行末にある場合は、カーソルの後ろにある文字が削除されます。

quoted-insert (C-q, C-v)

次に入力した文字をそのまま行に追加します。たとえばC-qなどの文字を挿入する方法です。

tab-insert (C-v TAB)

タブ文字を挿入します。

self-insert (a, b, A, 1, !, ...)

入力した文字を挿入します。

transpose-chars (C-t)

ポイント前のキャラクターをポイント上のキャラクターの上に前方にドラッグし、ポイントも前方に移動します。ポイントが行末にある場合、ポイントの前の 2 文字が置き換えられます。負の引数は効果がありません。

transpose-words (M-t)

ポイントの前の単語をドラッグして、ポイントの後の単語を超えて、その単語の上にもポイントを移動します。ポイントが行末にある場合、行の最後の 2 つの単語が置き換えられます。

upcase-word (M-u)

現在の (または次の) 単語を大文字にします。負の引数を指定すると、前の単語が大文字になりますが、ポイントは移動しません。

downcase-word (M-l)

現在の (または次の) 単語を小文字にします。負の引数を指定すると、前の単語が小文字になりますが、ポイントは移動しません。

capitalize-word (M-c)

現在の (または次の) 単語を大文字にします。負の引数を指定する場合は、前の単語を大文字にしますが、ポイントは移動しません。

overwrite-mode

上書きモードを切り替えます。明示的な正の数値引数を指定すると、上書きモードに切り替わります。明示的な非正の数値引数を指定すると、挿入モードに切り替わります。このコマンドはemacs モードのみに影響します。 vi モードでは上書きの方法が異なります。 readline() への各呼び出しは挿入モードで開始されます。上書きモードでは、 テキストを右に押し出すのではなく、 テキストを自己挿入するようにバインドされた文字がその位置のテキストを置き換えます。 backward-delete-char にバインドされた文字は、ポイントの前の文字をスペースに置き換えます。デフォルトでは、このコマンドはバインドされていません。

殺害とヤンキング

kill-line (C-k)

ポイントから行末までのテキストを強制終了します。

backward-kill-line (C-x Rubout)

行の先頭まで後方にキルします。

unix-line-discard (C-u)

ポイントから行の先頭まで後方にキルします。キルされたテキストはキルリングに保存されます。

kill-whole-line

ポイントがどこにあるかに関係なく、現在の行上のすべての文字をキルします。

kill-word (M-d)

ポイントから現在の単語の終わりまで、または単語間の場合は次の単語の終わりまでを kill します。単語の境界は前方単語で使用されるものと同じです。

backward-kill-word (M-Rubout)

ポイントの後ろの単語を削除します。単語の境界は後方単語で使用されるものと同じです。

shell-kill-word

ポイントから現在の単語の終わりまで、または単語間の場合は次の単語の終わりまでを kill します。単語の境界はshell-forward-wordで使用されるものと同じです。

shell-backward-kill-word

ポイントの後ろの単語を削除します。単語の境界はshell-backward-wordで使用されるものと同じです。

unix-word-rubout (C-w)

空白を単語の境界として使用して、ポイントの後ろの単語を削除します。キルされたテキストはキルリングに保存されます。

unix-filename-rubout

空白とスラッシュ文字を単語の境界として使用して、ポイントの後ろの単語を削除します。キルされたテキストはキルリングに保存されます。

delete-horizontal-space (M-\)

ポイントの周囲のスペースとタブをすべて削除します。

kill-region

現在の領域のテキストを強制終了します。

copy-region-as-kill

領域内のテキストを Kill バッファにコピーします。

copy-backward-word

キルバッファへのポイントの前の単語をコピーします。単語の境界は後方単語と同じです。

copy-forward-word

ポイントに続く単語を Kill バッファにコピーします。単語の境界は前方単語と同じです。

yank (C-y)

キルリングの上部をバッファ内のポイントにヤンクします。

yank-pop (M-y)

キルリングを回転させ、新しいトップを引っ張ります。 yank または yank-pop の後にのみ機能します。

数値引数

digit-argument (M-0, M-1, ..., M--)

すでに蓄積されている引数にこの数字を追加するか、新しい引数を開始します。 M-- は否定的な議論を開始します。

universal-argument

これは引数を指定する別の方法です。このコマンドの後に 1 つ以上の数字が続く場合、オプションで先頭にマイナス記号を付けると、それらの数字が引数を定義します。コマンドの後に数字が続く場合、universal-argument を再度実行すると数値引数が終了しますが、それ以外の場合は無視されます。特殊なケースとして、このコマンドの直後に数字でもマイナス記号でもない文字が続く場合、次のコマンドの引数の数は 4 倍になります。引数の数は最初は 1 なので、この関数を最初に実行すると引数の数は 4 になり、2 回目では引数の数は 16 になります。

完了中

complete (TAB)

ポイントの前のテキストで補完を実行してみます。 Bash は、テキストを変数 (テキストが $ で始まる場合)、ユーザー名 (テキストが ~ で始まる場合)、ホスト名として処理して補完を試みます。 (テキストが @ で始まる場合)、またはコマンド (エイリアスと関数を含む) を順番に入力します。これらのどれにも一致しない場合は、ファイル名の補完が試行されます。

possible-completions (M-?)

ポイントの前にテキストの可能な補完をリストします。

insert-completions (M-*)

可能補完によって生成されるポイントの前に、テキストのすべての補完を挿入します。

menu-complete

complete と似ていますが、補完対象の単語を補完可能なリストの 1 つの一致に置き換えます。可能な補完のリストを通じてメニュー補完ステップを繰り返し実行し、各一致を順番に挿入します。完了リストの最後にベルが鳴らされ (ベルスタイルの設定に従って)、元のテキストが復元されます。引数 n は、一致リスト内で n 番目の位置を前に移動します。負の引数を使用すると、リストを後方に移動できます。このコマンドはタブにバインドされるように設計されていますが、デフォルトではバインドされていません。

menu-complete-backward

menu-complete と同じですが、menu-complete に否定的な引数が与えられたかのように、可能な補完のリストを後方に移動します。このコマンドはデフォルトではバインドされていません。

delete-char-or-list

行の先頭または末尾にない場合は、カーソル下の文字を削除します (delete-char など)。行末の場合は可能な補完と同じように動作します。このコマンドはデフォルトではバインドされていません。

complete-filename (M-/)

ポイントの前のテキストでファイル名の補完を試みます。

possible-filename-completions (C-x /)

ポイントの前のテキストの可能な補完をリストし、それをファイル名として扱います。

complete-username (M-~)

ポイントの前のテキストをユーザー名として扱い、補完を試みます。

possible-username-completions (C-x ~)

ユーザー名として扱い、ポイントの前のテキストの可能な補完をリストします。

complete-variable (M-$)

ポイントの前のテキストの補完を試み、それをシェル変数として扱います。

possible-variable-completions (C-x $)

ポイントの前のテキストの可能な補完をリストし、それをシェル変数として扱います。

complete-hostname (M-@)

ポイントの前のテキストをホスト名として扱い、補完を試みます。

possible-hostname-completions (C-x @)

ポイントの前のテキストの可能な補完をリストし、それをホスト名として扱います。

complete-command (M-!)

ポイントの前のテキストをコマンド名として扱い、補完を試みます。コマンド補完では、テキストとエイリアス、予約語、シェル関数、シェル組み込み関数、そして最後に実行可能ファイル名の順に照合が試みられます。

possible-command-completions (C-x !)

ポイントの前のテキストの可能な補完をリストし、それをコマンド名として扱います。

dynamic-complete-history (M-TAB)

ポイントの前のテキストの補完を試み、テキストを履歴リストの行と比較して、補完一致の可能性があるかどうかを確認します。

dabbrev-expand

ポイントの前のテキストでメニューの補完を試み、テキストと履歴リストの行を比較して、補完一致の可能性があるかどうかを確認します。

complete-into-braces (M-{)

ファイル名補完を実行し、中括弧で囲まれた候補のリストを挿入して、そのリストをシェルで使用できるようにします (上記の中括弧展開を参照)。

キーボードマクロ

start-kbd-macro (C-x ( )

現在のキーボード マクロに入力された文字の保存を開始します。

end-kbd-macro (C-x ) )

現在のキーボード マクロに入力された文字の保存を停止し、定義を保存します。

call-last-kbd-macro (C-x e)

マクロ内の文字がキーボードで入力されたかのように表示されるようにして、最後に定義したキーボード マクロを再実行します。

print-last-kbd-macro ()

inputrc ファイルに適した形式で定義された最後のキーボード マクロを出力します。

その他

re-read-init-file (C-x C-r)

inputrc ファイルの内容を読み取り、そこにあるバインディングまたは変数の割り当てを組み込みます。

abort (C-g)

現在の編集コマンドを中止し、端末のベルを鳴らします (ベル スタイルの設定に応じて)。

do-lowercase-version (M-A, M-B, M-x, ...)

メタファイド文字 x が大文字の場合は、対応するメタファイド小文字にバインドされたコマンドを実行します。 x がすでに小文字の場合、動作は未定義です。

prefix-meta (ESC)

次に入力された文字をメタファイします。

ESC f はメタ f と同等です。

undo (C-_, C-x C-u)

増分アンドゥ。行ごとに個別に記憶されます。

revert-line (M-r)

この行に加えられたすべての変更を元に戻します。これは、 ラインを初期状態に戻すのに十分な回数元に戻すコマンドを実行するのと似ています。

tilde-expand (M-&)

現在の単語に対してチルダ展開を実行します。

set-mark (C-@, M-<space>)

ポイントにマークを設定します。数値引数が指定された場合、マークはその位置に設定されます。

exchange-point-and-mark (C-x C-x)

ポイントとマークを入れ替えます。現在のカーソル位置が保存された位置に設定され、古いカーソル位置がマークとして保存されます。

character-search (C-])

文字が読み取られ、ポイントはその文字の次の出現箇所に移動されます。負の数を指定すると、以前の出現箇所が検索されます。

character-search-backward (M-C-])

文字が読み取られ、ポイントはその文字の前に出現した位置に移動されます。負の数を指定すると、後続の出現が検索されます。

skip-csi-sequence

Home や End などのキーに定義されているマルチキー シーケンスを使用するのに十分な文字を読み取ります。このようなシーケンスは、コントロール シーケンス インジケーター (CSI)、通常は ESC-[ で始まります。このシーケンスが "\[" にバインドされている場合、そのようなシーケンスを生成するキーは、編集バッファに浮遊文字を挿入するのではなく、readline コマンドに明示的にバインドされない限り、効果がありません。これはデフォルトではバインドされていませんが、通常は ESC-[ にバインドされています。

insert-comment (M-#)

数値引数を指定しないと、readline comment-begin 変数の値が現在の行の先頭に挿入されます。数値引数が指定された場合、このコマンドはトグルとして機能します。行の先頭の文字が comment-begin の値と一致しない場合は値が挿入され、それ以外の場合は < 内の文字が挿入されます。comment-begin は行頭から削除されます。どちらの場合も、その行は改行が入力されたかのように受け入れられます。デフォルト値の comment-begin により、このコマンドは現在の行をシェル コメントにします。数値引数によってコメント文字が削除される場合、その行はシェルによって実行されます。

glob-complete-word (M-g)

ポイントの前の単語はパス名展開のパターンとして扱われ、暗黙的にアスタリスクが追加されます。このパターンは、候補となる補完に一致するファイル名のリストを生成するために使用されます。

glob-expand-word (C-x *)

ポイントの前の単語はパス名展開のパターンとして扱われ、一致するファイル名のリストが挿入されて単語が置き換えられます。数値引数が指定された場合、パス名展開の前にアスタリスクが追加されます。

glob-list-expansions (C-x g)

glob-expand-word によって生成される展開のリストが表示され、行が再描画されます。数値引数が指定された場合、パス名展開の前にアスタリスクが追加されます。

dump-functions

すべての関数とそのキー バインディングを readline 出力ストリームに出力します。数値引数が指定された場合、出力はinputrc ファイルの一部にできるようにフォーマットされます。

dump-variables

設定可能なすべての readline 変数とその値を readline 出力ストリームに出力します。数値引数が指定された場合、出力はinputrc ファイルの一部にできるようにフォーマットされます。

dump-macros

マクロにバインドされたすべての readline キー シーケンスとマクロが出力する文字列を出力します。数値引数が指定された場合、出力はinputrc ファイルの一部にできるようにフォーマットされます。

display-shell-version (C-x C-v)

bash の現在のインスタンスに関するバージョン情報を表示します。

プログラム可能な完了

complete 組み込みを使用して補完仕様 (compspec) が定義されているコマンドの引数に対して単語補完が試行されるとき (SHELL BUILTIN COMMANDS< を参照) 以下)、プログラム可能な完了機能が呼び出されます。

まず、コマンド名を特定します。コマンド ワードが空の文字列 (空の行の先頭で補完が試行される) の場合は、-E オプションで補完するように定義された compspec が使用されます。そのコマンドに対して compspec が定義されている場合、その compspec を使用して単語の可能な補完のリストが生成されます。コマンドワードがフルパス名の場合、最初にフルパス名の compspec が検索されます。フルパス名の compspec が見つからない場合は、最後のスラッシュに続く部分の compspec の検索が試行されます。これらの検索で compspec が得られない場合は、-D オプションで完全に定義された compspec がデフォルトとして使用されます。デフォルトの compspec がない場合、bash は最後の手段としてコマンド ワードのエイリアス展開を試み、成功した展開からコマンド ワードの compspec を見つけようとします。

compspec が見つかると、それを使用して一致する単語のリストが生成されます。 compspec が見つからない場合は、上記の「完了」で説明したデフォルトのbash完了が実行されます。

まず、compspec で指定されたアクションが使用されます。完了中の単語が接頭辞として付いている一致のみが返されます。ファイル名またはディレクトリ名の補完に -f または -d オプションが使用される場合、一致をフィルタリングするためにシェル変数 FIGNORE が使用されます。

-G オプションのパス名展開パターンによって指定された補完は、次に生成されます。パターンによって生成された単語は、完成する単語と一致する必要はありません。 GLOBIGNORE シェル変数は一致のフィルタリングには使用されませんが、FIGNORE 変数は使用されます。

次に、-W オプションの引数として指定された文字列が考慮されます。文字列は、まず IFS 特殊変数内の文字を区切り文字として使用して分割されます。シェルの引用は尊重されます。次に、上記の展開で説明したように、中かっこ展開、チルダ展開、パラメータと変数の展開、コマンド置換、および算術展開を使用して各単語が展開されます。結果は、上記の単語分割で説明したルールを使用して分割されます。展開の結果は、補完対象の単語と前方一致し、一致する単語が候補の補完になります。

これらの一致が生成された後、-F および -C オプションで指定されたシェル関数またはコマンドが呼び出されます。コマンドまたは関数が呼び出されると、COMP_LINE、COMP_POINT、COMP_KEY、および COMP_TYPE 変数に次のように値が割り当てられます。上記のシェル変数で説明したとおりです。シェル関数が呼び出されている場合は、COMP_WORDS 変数と COMP_CWORD 変数も設定されます。関数またはコマンドが呼び出されるとき、最初の引数 ($1) は引数が完了するコマンドの名前、2 番目の引数 ($2) は実行される単語です。 3 番目の引数 ($3) は、現在のコマンド ラインで完了している単語の前の単語です。生成された補完の、補完中の単語に対するフィルタリングは実行されません。関数またはコマンドは、一致を生成する際に完全に自由です。

-F で指定された関数が最初に呼び出されます。この関数は、以下で説明するcompgen ビルトインを含む任意のシェル機能を使用して一致を生成できます。配列要素ごとに 1 つずつ、可能な補完を COMPREPLY 配列変数に入れる必要があります。

次に、-C オプションで指定されたコマンドは、コマンド置換と同等の環境で呼び出されます。補完のリストを 1 行に 1 つずつ標準出力に出力します。必要に応じて、バックスラッシュを使用して改行をエスケープすることができます。

考えられるすべての補完が生成された後、-X オプションで指定されたフィルタがリストに適用されます。フィルタは、パス名展開に使用されるパターンです。パターン内の & は、完成中の単語のテキストに置き換えられます。リテラルの & はバックスラッシュでエスケープできます。バックスラッシュは一致を試みる前に削除されます。パターンに一致する補完はリストから削除されます。先頭の ! はパターンを否定します。この場合、パターンに一致しない補完は削除されます。 nocasematch シェル オプションが有効になっている場合、アルファベットの大文字と小文字に関係なく照合が実行されます。

最後に、-P および -S オプションで指定されたプレフィックスとサフィックスが完了リストの各メンバーに追加され、結果が readline 完了コードに次のように返されます。可能な補完のリスト。

以前に適用されたアクションで一致が生成されず、compspec の定義時に完了するために-o dirnames オプションが指定されていた場合、ディレクトリ名の補完が試行されます。

compspec の定義時にcompleteするために-o plusdirs オプションが指定されていた場合、ディレクトリ名の補完が試行され、一致するものが他のアクションの結果に追加されます。

デフォルトでは、compspec が見つかった場合、生成されたものはすべて、可能な補完の完全なセットとして完了コードに返されます。デフォルトのbash補完は試行されず、readlineのデフォルトのファイル名補完は無効になります。 compspec の定義時にcompleteするために-o bashdefault オプションが指定されていた場合、compspec で一致が生成されなかった場合は、bash のデフォルトの補完が試行されます。 compspec が定義されたときに complete するために -odefault オプションが指定されていた場合、readline のデフォルトの補完は、compspec (および試行した場合はデフォルトの ) である場合に実行されます。 bash 補完) は一致を生成しません。

compspec がディレクトリ名の補完が必要であることを示している場合、プログラム可能な補完関数は、mark-directories readline 変数の値に従って、ディレクトリへのシンボリック リンクである補完された名前にスラッシュを強制的に追加します。 mark-symlinked-directories readline 変数の設定に関係なく。

補完を動的に変更するためのサポートがいくつかあります。これは、complete -D で指定されたデフォルトの補完と組み合わせて使用すると最も便利です。完了ハンドラーとして実行されるシェル関数は、終了ステータス 124 を返すことで完了を再試行する必要があることを示すことができます。シェル関数が 124 を返し、完了が試行されているコマンドに関連付けられた compspec を変更する場合 (最初のコマンドとして提供されます)。関数が実行されるときの引数)、プログラマブル補完は最初から再開され、そのコマンドの新しい compspec を見つけようとします。これにより、補完のセットを一度にすべてロードするのではなく、補完の試行時に動的に構築できるようになります。

たとえば、compspec のライブラリがあり、それぞれがコマンドの名前に対応するファイルに保存されていると仮定すると、次のデフォルトの補完関数は補完を動的にロードします。

_completion_loader()
{
。 "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
}
complete -D -F _completion_loader -o bashdefault -o デフォルト

歴史

set ビルトインの -o History オプションが有効になっている場合、シェルは以前に入力したコマンドのリストであるコマンド履歴にアクセスできるようになります。 HISTSIZE 変数の値は、履歴リストに保存するコマンドの数として使用されます。最後のHISTSIZE コマンドのテキスト (デフォルトは 500) が保存されます。

シェルは、パラメータと変数の展開 (上記の展開 を参照) の前に各コマンドを履歴リストに保存しますが、履歴展開の実行後は、シェル変数 HISTIGNORE の値に従います。そしてヒストコントロールです。

起動時に、履歴は変数 HISTFILE (デフォルトは ~/.bash_history) で指定されたファイルから初期化されます。 HISTFILE の値で指定されたファイルは、必要に応じて、HISTFILESIZE の値で指定された行数を超えないよう切り詰められます。 HISTFILESIZE が設定されていない場合、または null、数値以外の値、または 0 未満の数値に設定されている場合、履歴ファイルは切り捨てられません。

履歴ファイルが読み取られるとき、履歴コメント文字で始まり、すぐに数字が続く行は、次の履歴行のタイムスタンプとして解釈されます。これらのタイムスタンプは、HISTTIMEFORMAT 変数の値に応じてオプションで表示されます。履歴が有効になっているシェルが終了すると、最後の $HISTSIZE 行が履歴リストから $HISTFILE にコピーされます。

histappend シェル オプションが有効な場合 (以下のシェル組み込みコマンドのshopt の説明を参照)、行が履歴ファイルに追加されます。そうしないと、履歴ファイルが上書きされます。 HISTFILE が設定されていない場合、または履歴ファイルが書き込み不可である場合、履歴は保存されません。 HISTTIMEFORMAT 変数が設定されている場合、タイムスタンプは履歴ファイルに書き込まれ、履歴コメント文字でマークされるため、シェル セッション間でタイムスタンプを保持できます。これは、履歴コメント文字を使用して、タイムスタンプを他の履歴行と区別します。

履歴を保存すると、履歴ファイルは HISTFILESIZE 行以下になるように切り詰められます。 HISTFILESIZE が設定されていない場合、または null、数値以外の値、または 0 未満の数値に設定されている場合、履歴ファイルは切り捨てられません。

組み込みコマンド fc (下記のシェル組み込みコマンドを参照) を使用して、履歴リストの一部を一覧表示または編集し、再実行することができます。 履歴ビルトインは、履歴リストの表示または変更、および履歴ファイルの操作に使用できます。コマンドライン編集を使用する場合、各編集モードで履歴リストにアクセスできる検索コマンドを使用できます。

シェルを使用すると、どのコマンドを履歴リストに保存するかを制御できます。 HISTCONTROL 変数と HISTIGNORE 変数を設定すると、シェルが入力されたコマンドのサブセットのみを保存するようになります。 cmdhist シェル オプションを有効にすると、シェルは複数行のコマンドの各行を同じ履歴エントリに保存しようとし、構文の正確さを保つために必要な場合はセミコロンを追加します。 lithist シェル オプションを使用すると、シェルはセミコロンの代わりに埋め込み改行を使用してコマンドを保存します。シェル オプションの設定と設定解除については、以下の「シェル組み込みコマンド」のshopt組み込みの説明を参照してください。

歴史の拡大

シェルは、csh の履歴展開と同様の履歴展開機能をサポートしています。このセクションでは、使用できる構文機能について説明します。この機能は対話型シェルではデフォルトで有効になっており、set 組み込みコマンドの +H オプションを使用して無効にできます (シェル組み込みコマンドを参照)下)。非対話型シェルは、デフォルトでは履歴展開を実行しません。

履歴拡張により、履歴リストの単語が入力ストリームに導入され、コマンドを繰り返したり、前のコマンドの引数を現在の入力行に挿入したり、前のコマンドのエラーをすばやく修正したりすることが簡単になります。

履歴展開は、完全な行が読み取られた直後、シェルが行を単語に分割する前に実行され、前の行の引用を考慮せずに各行に対して個別に実行されます。 2部構成で開催されます。 1 つ目は、置換中に履歴リストからどの行を使用するかを決定することです。 2 つ目は、その行の一部を選択して現在の行に含めることです。履歴から選択された行がイベントであり、 その行の作用を受ける部分が単語です。選択した単語を操作するには、 さまざまな修飾子を使用できます。入力を読み取るときと同じ方法で行が単語に分割されるため、 引用符で囲まれた複数のメタキャラクターで区切られた単語が 1 つの単語とみなされます。履歴拡張は、履歴拡張文字 (デフォルトでは ! ) の出現によって導入されます。履歴拡張文字を引用できるのはバックスラッシュ ( \ ) と一重引用符のみですが、履歴拡張文字が二重引用符で囲まれた文字列の終了二重引用符の直前にある場合、履歴拡張文字も引用符として扱われます。

スペース、タブ、改行、キャリッジ リターン、= などのいくつかの文字は、履歴展開文字の直後にある場合、引用符で囲まれていない場合でも履歴展開を禁止します。 extglob シェル オプションが有効な場合、( も展開を禁止します。

shopt ビルトインで設定可能ないくつかのシェル オプションを使用して、履歴展開の動作を調整できます。 histverify シェル オプションが有効になっており (以下の shopt ビルトインの説明を参照)、readline が使用されている場合、履歴の置換はすぐには行われません。シェルパーサーに渡されます。代わりに、展開された行はさらに変更するために読み取りライン編集バッファに再ロードされます。 readline が使用されており、histreedit シェル オプションが有効になっている場合、失敗した履歴置換は修正のために readline 編集バッファに再ロードされます。 history 組み込みコマンドの -p オプションを使用すると、履歴拡張を使用する前にその動作を確認できます。 history ビルトインの -s オプションを使用すると、コマンドを実際に実行せずに履歴リストの末尾に追加し、後で呼び出すことができるようになります。

シェルを使用すると、履歴拡張メカニズムで使用されるさまざまな文字を制御できます (上記のシェル変数のヒストキャラの説明を参照してください)。シェルは、履歴ファイルを書き込むときに、履歴コメント文字を使用して履歴タイムスタンプをマークします。

イベント指定者

イベント指定子は、履歴リスト内のコマンド ライン エントリへの参照です。参照が絶対的でない限り、イベントは履歴リスト内の現在位置を基準とします。

!

履歴置換を開始します。ただし、空白、改行、復帰、= または ( (shoptextglob シェル オプションが有効になっている場合)が続く場合を除きます。強力>組み込み)。

!n

コマンドラインnを参照してください。

!-n

現在のコマンドから n を引いたものを参照してください。

!!

前のコマンドを参照してください。これは「!-1」と同義です。

!string

文字列で始まる履歴リストの現在位置より前の最新のコマンドを参照します。

!?string[?]

文字列を含む履歴リスト内の現在位置より前の最新のコマンドを参照します。 文字列の直後に改行が続く場合、末尾の?は省略できます。 文字列が欠落している場合は、最新の検索の文字列が使用されます。以前の検索文字列がない場合はエラーになります。

^string1^string2^

素早い交代。 string1 を string2 に置き換えて、前のコマンドを繰り返します。 「!!:s^string1^string2^」と同等です(下記の修飾子を参照)。

!#

これまでに入力したコマンドライン全体。

単語指定子

単語指定子は、イベントから目的の単語を選択するために使用されます。 : は、イベント仕様と単語指定子を区切ります。単語指定子が ^、$、*、-、または で始まる場合は省略できます。 >%です。単語には行の先頭から番号が付けられ、最初の単語は 0 (ゼロ) で示されます。単語は現在の行に単一のスペースで区切られて挿入されます。

0 (zero)

0番目の単語。シェルの場合、これはコマンドワードです。

n

n 番目の単語。

^

最初の引数。つまり単語1です。

$

最後の言葉。通常、これは最後の引数ですが、行内に単語が 1 つしかない場合は、0 番目の単語に展開されます。

%

最新の `?文字列?' と一致する最初の単語。検索文字列が単語の一部の文字で始まる場合。

x-y

さまざまな単語。 「-y」は「0-y」を省略します。

*

0 番目を除くすべての単語。これは「1-$」と同義です。イベントに単語が 1 つだけある場合は、* を使用してもエラーではありません。その場合は空の文字列が返されます。

x*

x-$ の略称。

x-

x-$ を x* のように省略しますが、最後の単語は省略します。 x が欠落している場合は、デフォルトの 0 になります。

イベント指定なしで単語指定子が指定された場合、前のコマンドがイベントとして使用されます。

修飾子

オプションの単語指定子の後に、次の修飾子の 1 つまたは複数のシーケンスが表示され、それぞれの前に「:」が付けられます。これらは、履歴イベントから選択された単語を変更または編集します。

h

末尾のファイル名のコンポーネントを削除し、先頭だけを残します。

t

ファイル名の先頭部分をすべて削除し、末尾を残します。

r

.xxx 形式の末尾のサフィックスを削除し、ベース名を残します。

e

末尾のサフィックスを除くすべてを削除します。

p

新しいコマンドを出力しますが、実行はしません。

q

置換された単語を引用符で囲み、それ以上の置換を回避します。

x

q と同様に置換された単語を引用しますが、空白と改行で単語を区切ります。 q 修飾子と x 修飾子は相互に排他的です。最後に提供されたものが使用されます。

s/old/new/

イベント行の最初に出現する old を new に置き換えます。/の代わりに任意の文字を区切り文字として使用できます。最後の区切り文字がイベント行の最後の文字である場合、最後の区切り文字はオプションです。区切り文字は、古い場合と新しい場合に単一のバックスラッシュで引用符で囲むことができます。 & が新しいに表示されている場合は、古いに置き換えられます。単一のバックスラッシュは & を引用します。 old が null の場合、最後に置換された old に設定されるか、以前の履歴置換が行われていない場合は、 の最後の文字列に設定されます。 !?文字列[?]検索。 new が null の場合、 一致する各old が削除されます。

&

前の置換を繰り返します。

g

イベント行全体に変更を適用します。これは `:s' と組み合わせて使用されます (例: `:gs/old/新しい/') または `:&'。 `:s' と一緒に使用する場合、/ の代わりに任意の区切り文字を使用できます。最後の区切り文字がイベント行の最後の文字である場合、最後の区切り文字はオプションです。 a は g の同義語として使用される場合があります。

G

次の `s' または `&' 修飾子をイベント行の各単語に 1 回適用します。

シェル組み込みコマンド

特に明記されていない限り、このセクションで説明されている各組み込みコマンドは、- で始まるオプションを受け入れるものとして、オプションの終了を示す -- を受け入れます。 :、true、false、および test/[ 組み込み関数は受け入れられません。オプションであり、-- を特別に扱わないでください。 終了、ログアウト、戻る、中断、続行、レット および shift 組み込み関数は、-- を必要とせずに、- で始まる引数を受け入れて処理します。引数を受け入れるがオプションを受け入れるように指定されていない他の組み込みは、- で始まる引数を無効なオプションとして解釈し、この解釈を防ぐために -- を必要とします。

: [arguments]

無効;このコマンドは引数を展開し、指定されたリダイレクトを実行すること以外は何も行いません。戻りステータスはゼロです。

.  filename [arguments]
source filename [arguments]

現在のシェル環境で filename からコマンドを読み取り、実行し、filename から実行された最後のコマンドの終了ステータスを返します。 ファイル名にスラッシュが含まれていない場合は、パス内のファイル名を使用してファイル名を含むディレクトリが検索されます。 PATH で検索されるファイルは実行可能である必要はありません。 bash がposix モードではない場合、PATH にファイルが見つからない場合は現在のディレクトリが検索されます。 shopt 組み込みコマンドの sourcepath オプションがオフになっている場合、PATH は検索されません。任意の引数が指定されている場合、それらはファイル名が実行されるときの位置パラメータになります。

それ以外の場合、位置パラメータは変更されません。 -T オプションが有効な場合、source は DEBUG のトラップを継承します。そうでない場合、DEBUG トラップ文字列はすべて保存され、source への呼び出しの周囲に復元され、source は DEBUG の設定を解除します。実行中にstrong>トラップを実行します。 -T が設定されておらず、ソース ファイルが DEBUG トラップを変更する場合、ソースが完了しても新しい値が保持されます。戻りステータスは、スクリプト内で終了した最後のコマンドのステータス (コマンドが実行されなかった場合は 0) で、ファイル名が見つからないか読み取れない場合は false になります。

alias [-p] [name[=value] ...]

引数なしの エイリアス、または -p オプションを指定すると、エイリアスのリストが エイリアス name=< の形式で出力されます。標準出力の値。引数を指定すると、 指定された値を持つ名前ごとにエイリアスが定義されます。 value の末尾にスペースがあると、エイリアスが展開されるときに次の単語のエイリアス置換がチェックされます。引数リスト内の値が指定されていない各名前について、エイリアスの名前と値が出力されます。エイリアスが定義されていない名前が指定されない限り、エイリアスは true を返します。

bg [jobspec ...]

& で開始されたかのように、一時停止された各ジョブ jobspec をバックグラウンドで再開します。 ジョブスペックが存在しない場合は、 シェルの現在のジョブの概念が使用されます。 bg jobspec は、ジョブ制御が無効な場合に実行されない限り、またはジョブ制御が有効な場合に実行された場合、指定された jobspec が見つからないか開始されない限り、0 を返します。ジョブコントロールなしで。

bind [-m keymap] [-lpsvPSVX]
bind [-m keymap] [-q function] [-u function] [-r keyseq]
bind [-m keymap] -f filename
bind [-m keymap] -x keyseq:shell-command
bind [-m keymap] keyseq:function-name
bind [-m keymap] keyseq:readline-command

現在の readline キーと関数バインディングを表示したり、キー シーケンスを readline 関数またはマクロにバインドしたり、 readline 変数を設定したりできます。オプション以外の各引数は、.inputrc に表示されるコマンドですが、各バインディングまたはコマンドは別の引数として渡す必要があります。例: '"\C-x\C-r": re-read-init-file'。オプションが指定されている場合、その意味は次のとおりです。

-m keymap

後続のバインディングの影響を受けるキーマップとしてキーマップを使用します。使用可能なキーマップ名はemacs、emacs-standard、emacs-meta、emacs-ctlx、vi、vi-move、vi-command、およびvi-insert です。 。 vi は vi-command と同等です (vi-move も同義語です)。 emacs は emacs-standard と同等です。

-l

すべてのreadline 関数の名前をリストします。

-p

readline 関数名とバインディングを再読み取りできるように表示します。

-P

現在のreadline関数名とバインディングをリストします。

-s

マクロにバインドされたreadline キー シーケンスとマクロが出力する文字列を再読み取りできる方法で表示します。

-S

マクロにバインドされたreadline キー シーケンスとマクロが出力する文字列を表示します。

-v

readline の変数名と値を再読み取りできるように表示します。

-V

現在のreadline変数名と値をリストします。

-f filename

ファイル名からキー バインディングを読み取ります。

-q function

どのキーが指定された関数を呼び出すかについてクエリします。

-u function

名前付きの関数にバインドされているすべてのキーのバインドを解除します。

-r keyseq

keyseq の現在のバインディングをすべて削除します。

-x keyseq:shell-command

keyseq が入力されるたびに shell-command が実行されるようにします。 shell-command が実行されると、シェルは READLINE_LINE 変数を readline ライン バッファの内容と READLINE_POINT 変数と READLINE_MARK 変数をそれぞれ、挿入ポイントの現在の位置と保存された挿入ポイント (マーク) に設定します。

実行されたコマンドによって READLINE_LINE、READLINE_POINT、または READLINE_MARK のいずれかの値が変更された場合、それらの新しい値が編集状態に反映されます。

-X

シェルコマンドにバインドされているすべてのキーシーケンスと、入力として再利用できる形式で関連するコマンドをリストします。

認識できないオプションが指定された場合、またはエラーが発生した場合を除き、戻り値は 0 です。

break [n]

for、while、until、または select ループ内から終了します。 n が指定されている場合は、n レベルを分割します。 n は 1 以上である必要があります。n が外側のループの数より大きい場合、すべての内側のループが終了します。 n が 1 以上でない場合、戻り値は 0 です。

builtin shell-builtin [arguments]

指定されたシェル組み込みを実行し、 それに引数を渡し、その終了ステータスを返します。これは、シェル組み込み関数と同じ名前の関数を定義し、関数内に組み込み関数の機能を保持する場合に便利です。 cd ビルトインは通常、この方法で再定義されます。 shell-builtin がシェル組み込みコマンドでない場合、戻りステータスは false です。

caller [expr]

アクティブなサブルーチン呼び出しのコンテキスト (. または source ビルトインで実行されるシェル関数またはスクリプト) を返します。 expr を指定しない場合、呼び出し元は現在のサブルーチン呼び出しの行番号とソース ファイル名を表示します。負でない整数が expr として指定された場合、呼び出し元は、現在の実行呼び出しスタック内のその位置に対応する行番号、サブルーチン名、およびソース ファイルを表示します。この追加情報は、たとえばスタック トレースを印刷するために使用される場合があります。現在のフレームはフレーム 0 です。シェルがサブルーチン呼び出しを実行していない場合、またはexpr が呼び出しスタック内の有効な位置に対応していない場合を除き、戻り値は 0 です。

cd [-L|[-P [-e]] [-@]] [dir]

現在のディレクトリをディレクトリに変更します。 dir が指定されていない場合、HOME シェル変数の値がデフォルトになります。 dir に続く追加の引数は無視されます。変数 CDPATH は、dir を含むディレクトリの検索パスを定義します。CDPATH 内の各ディレクトリ名は dir で検索されます。 。

CDPATH 内の代替ディレクトリ名はコロン (:) で区切られます。 CDPATH 内の null ディレクトリ名は、現在のディレクトリと同じです (つまり、「.」)。 dir がスラッシュ (/) で始まる場合、CDPATH は使用されません。 -P オプションを使用すると、cd は dir の走査中および のインスタンスを処理する前にシンボリック リンクを解決することで物理ディレクトリ構造を使用します。 dir 内 (set 組み込みコマンドの -P オプションも参照)。 -L オプションは、dir 内の .. のインスタンスを処理した後にリンクを解決することにより、シンボリック リンクを強制的にたどります。

.. が dir に表示される場合、直前のパス名コンポーネントを dir から削除し、スラッシュまたは < の先頭に戻すことで処理されます。ディレクトリ。 -e オプションが -P とともに指定されており、ディレクトリの変更が成功した後で現在の作業ディレクトリを正常に特定できない場合は、 cd が返されます。失敗したステータス。これをサポートするシステムでは、-@ オプションにより、ファイルに関連付けられた拡張属性がディレクトリとして表示されます。

引数 - は、ディレクトリの変更が試行される前に $OLDPWD に変換されます。 CDPATH の空でないディレクトリ名が使用されている場合、または - が最初の引数であり、ディレクトリの変更が成功した場合、新しい作業ディレクトリの絶対パス名は次のようになります。標準出力に書き込まれます。ディレクトリが正常に変更された場合、戻り値は true です。それ以外の場合は false。

command [-pVv] command [arg ...]

通常のシェル関数検索を抑制する引数を指定してコマンドを実行します。組み込みコマンドまたはパスで見つかったコマンドのみが実行されます。 -p オプションが指定されている場合、コマンド の検索は、標準のすべてのパスが確実に見つかるPATH のデフォルト値を使用して実行されます。ユーティリティ。 -V または -v オプションを指定すると、コマンドの説明が出力されます。

-v オプションを使用すると、コマンド の呼び出しに使用されるコマンドまたはファイル名を示す 1 つの単語が表示されます。 -V オプションを使用すると、より詳細な説明が生成されます。 -V または -v オプションが指定されている場合、コマンド が見つかった場合は終了ステータスは 0、見つからなかった場合は 1 になります。どちらのオプションも指定せずにエラーが発生した場合、またはコマンドが見つからない場合、終了ステータスは 127 になります。それ以外の場合、コマンドビルトインの終了ステータスは の終了ステータスになります。 コマンドです。

compgen [option] [word]

オプションに従って、単語の候補となる補完一致を生成します。オプションは、を除く完全組み込みで受け入れられる任意のオプションです。 -p と -r を使用し、一致したものを標準出力に書き込みます。 -F または -C オプションを使用する場合、プログラマブル補完機能によって設定されるさまざまなシェル変数は、使用可能であっても有用な値を持ちません。

一致は、プログラマブル完了コードが同じフラグを持つ完了仕様から直接生成した場合と同じ方法で生成されます。 word を指定した場合、word に一致する補完のみが表示されます。

無効なオプションが指定された場合、または一致が生成されなかった場合を除き、戻り値は true です。

complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat] [-W wordlist]
[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...]
complete -pr [-DEI] [name ...]

各名前の引数をどのように補完するかを指定します。 -p オプションが指定されている場合、またはオプションが指定されていない場合は、既存の補完仕様が入力として再利用できる方法で出力されます。 -r オプションは、各名前の補完仕様を削除します。名前が指定されていない場合は、すべての補完仕様を削除します。 -D オプションは、指定された他のオプションとアクションが「デフォルト」のコマンド補完に適用されることを示します。つまり、完了が事前に定義されていないコマンドに対して完了が試行されました。 -E オプションは、指定された他のオプションとアクションが「空の」コマンド補完に適用されることを示します。つまり、空白行で完了が試行されます。 -I オプションは、指定された他のオプションとアクションが、その行の最初の非代入語、または ; や などのコマンド区切り文字の後の補完に適用される必要があることを示します。 |、通常はコマンド名の補完です。複数のオプションを指定した場合、-D オプションは -E よりも優先され、両方とも -I よりも優先されます。 -D、-E、または -I のいずれかが指定された場合、他の name 引数は無視されます。これらの補完は、オプションで指定された場合にのみ適用されます。

単語補完が試行されるときにこれらの補完仕様を適用するプロセスは、上記のプログラム可能な補完で説明されています。

その他のオプションを指定した場合、次の意味を持ちます。 -G、-W、および -X オプションの引数 (必要に応じて -P > および -S オプション) は、完全ビルトインが呼び出される前に、展開から保護するために引用符で囲む必要があります。

-o comp-option

comp-option は、補完の単純な生成を超えて、compspec の動作のいくつかの側面を制御します。 comp-option は次のいずれかになります。

bashdefault

compspec で一致が生成されない場合は、デフォルトの残りのbash補完を実行します。

default

compspec で一致するものが生成されない場合は、readline のデフォルトのファイル名補完を使用します。

dirnames

compspec で一致するものが生成されない場合は、ディレクトリ名の補完を実行します。

filenames

compspec がファイル名を生成することを readline に伝え、ファイル名固有の処理 (ディレクトリ名にスラッシュを追加する、特殊文字を引用符で囲む、末尾のスペースを抑制するなど) を実行できるようにします。シェル関数で使用することを目的としています。

noquote

ファイル名である場合、完成した単語を引用しないように readline に指示します (ファイル名を引用するのがデフォルトです)。

nosort

候補となる補完のリストをアルファベット順にソートしないように readline に指示します。

nospace

行末で完成した単語にスペース (デフォルト) を追加しないように readline に指示します。

plusdirs

compspec によって定義された一致が生成された後、ディレクトリ名の補完が試行され、一致があれば他のアクションの結果に追加されます。

-A action

可能な補完のリストを生成するためのアクションは、次のいずれかです。

alias

別名。 -a と指定することもできます。

arrayvar

配列変数名。

binding

Readline キー バインド名。

builtin

シェル組み込みコマンドの名前。 -b として指定することもできます。

command

コマンド名。 -c として指定することもできます。

directory

ディレクトリ名。 -d として指定することもできます。

disabled

無効化されたシェル組み込みの名前。

enabled

有効なシェル組み込みの名前。

export

エクスポートされたシェル変数の名前。 -e として指定することもできます。

file

ファイル名。 -f として指定することもできます。

function

シェル関数の名前。

group

グループ名。 -g として指定することもできます。

helptopic

ヘルプ組み込みで受け入れられるヘルプ トピック。

hostname

HOSTFILE シェル変数で指定されたファイルから取得されたホスト名。

job

ジョブ制御がアクティブな場合のジョブ名。 -j として指定することもできます。

keyword

シェルの予約語。 -k として指定することもできます。

running

ジョブ制御がアクティブな場合、実行中のジョブの名前。

service

サービス名。 -s として指定することもできます。

setopt

set ビルトインの -o オプションの有効な引数。

shopt

shopt ビルトインで受け入れられるシェル オプション名。

signal

信号名。

stopped

ジョブ制御がアクティブな場合、停止したジョブの名前。

user

ユーザー名。 -u と指定することもできます。

variable

すべてのシェル変数の名前。 -v として指定することもできます。

-C command

コマンドはサブシェル環境で実行され、その出力は可能な補完として使用されます。

-F function

シェル関数関数は、現在のシェル環境で実行されます。関数が実行されるとき、最初の引数 ($1) は引数が補完されるコマンドの名前、2 番目の引数 ($2) は補完される単語です。 3 番目の引数 ($3) は、現在のコマンド ラインで完了している単語の前の単語です。終了すると、COMPREPLY 配列変数の値から可能な補完が取得されます。

-G globpat

パス名展開パターン globpat は、可能な補完を生成するために展開されます。

-P prefix

プレフィックスは、他のすべてのオプションが適用された後、可能な各補完の先頭に追加されます。

-S suffix

他のすべてのオプションが適用された後、 可能な各補完にサフィックスが追加されます。

-W wordlist

単語リストは、IFS特殊変数の文字を区切り文字として使用して分割され、結果の各単語が展開されます。シェルの引用は、IFS の値にシェルのメタ文字または文字を含む単語のメカニズムを提供するために、単語リスト内で受け入れられます。可能な補完は、補完される単語と一致する結果リストのメンバーです。

-X filterpat

filterpat は、パス名展開に使用されるパターンです。これは、前述のオプションと引数によって生成された可能な補完のリストに適用され、filterpat に一致する各補完がリストから削除されます。 filterpat の先頭の ! はパターンを無効にします。この場合、filterpat と一致しない補完は削除されます。

無効なオプションが指定された場合、-p または -r 以外のオプションが name 引数なしで指定された場合を除き、戻り値は true です。仕様が存在しない名前の補完仕様を削除しようとしたか、補完仕様の追加でエラーが発生しました。

compopt [-o option] [-DEI] [+o option] [name]

各名前の補完オプションをオプションに従って変更するか、名前が指定されていない場合は現在実行中の補完オプションを変更します。 オプションが指定されていない場合は、 各名前または現在の補完の補完オプションを表示します。 オプションの可能な値は、上記で説明した完全な組み込みに有効な値です。 -D オプションは、指定された他のオプションが「デフォルト」のコマンド補完に適用されることを示します。つまり、完了が事前に定義されていないコマンドに対して完了が試行されました。 -E オプションは、指定された他のオプションが「空の」コマンド補完に適用される必要があることを示します。つまり、空白行で完了が試行されます。 -I オプションは、指定された他のオプションが、その行の最初の非代入語、または ; や などのコマンド区切り文字の後の補完に適用される必要があることを示します。 |、通常はコマンド名の補完です。

無効なオプションが指定された場合、補完指定が存在しない名前のオプションを変更しようとした場合、または出力エラーが発生した場合を除き、戻り値は true です。

continue [n]

囲んでいるfor、while、until、またはselectループの次の反復を再開します。 n が指定されている場合は、n 番目の囲まれたループから再開します。 n は 1 以上である必要があります。n が外側のループの数より大きい場合、最後の外側のループ (「トップレベル」ループ) が再開されます。 n が 1 以上でない場合、戻り値は 0 です。

declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
typeset [-aAfFgiIlnrtux] [-p] [name[=value] ...]

変数を宣言したり、変数に属性を与えたりします。 名前が指定されていない場合は、変数の値を表示します。 -p オプションは、 各名前の属性と値を表示します。 -p が name 引数とともに使用される場合、-f と -F 以外の追加オプションは無視されます。 。 -p を name 引数なしで指定すると、追加のオプションで指定された属性を持つすべての変数の属性と値が表示されます。 -p で他のオプションが指定されていない場合、declare はすべてのシェル変数の属性と値を表示します。 -f オプションは、表示をシェル関数に制限します。 -F オプションは関数定義の表示を禁止します。関数名と属性のみが出力されます。 shopt を使用して extdebug シェル オプションが有効になっている場合、各名前が定義されているソース ファイル名と行番号も表示されます。 -F オプションは -f を意味します。 -g オプションは、declare がシェル関数で実行される場合でも、グローバル スコープで変数の作成または変更を強制します。それ以外の場合はすべて無視されます。 -I オプションを使用すると、ローカル変数は、同じ名前を持つ既存の変数の属性 (nameref 属性を除く) と値を継承します。周囲の範囲。既存の変数がない場合、ローカル変数は最初は設定されていません。次のオプションを使用すると、指定した属性を持つ変数への出力を制限したり、変数に属性を与えることができます。

-a

それぞれの名前はインデックス付きの配列変数です (上記の配列を参照)。

-A

それぞれの名前は連想配列変数です (上記の配列を参照)。

-f

関数名のみを使用してください。

-i

変数は整数として扱われます。算術評価 (上記の算術評価を参照) は、変数に値が割り当てられるときに実行されます。

-l

変数に値が割り当てられると、すべての大文字が小文字に変換されます。大文字属性は無効です。

-n

それぞれの名前にnameref属性を与え、別の変数への名前参照にします。他の変数は、name の値によって定義されます。 name へのすべての参照、割り当て、および属性の変更は、-n 属性自体の使用または変更を除き、name によって参照される変数に対して実行されます。 >の値です。 nameref 属性は配列変数には適用できません。

-r

名前を読み取り専用にします。これらの名前には、後続の代入ステートメントで値を割り当てたり、設定を解除したりすることはできません。

-t

それぞれの名前にトレース属性を付けます。トレースされる関数は、呼び出しシェルからDEBUG トラップとRETURN トラップを継承します。トレース属性は変数に対して特別な意味を持ちません。

-u

変数に値が割り当てられると、すべての小文字が大文字に変換されます。小文字属性は無効です。

-x

環境経由で後続のコマンドにエクスポートする名前をマークします。

「-」の代わりに「+」を使用すると、代わりに属性がオフになります。ただし、+a と +A は配列変数の破棄には使用できません。 +r では読み取り専用属性は削除されません。関数で使用する場合、宣言とタイプセットは、ローカルコマンドと同様に、それぞれの名前をローカルにします。 -g オプションが提供されます。変数名の後に =value が続く場合、変数の値は value に設定されます。 -a または -A と複合代入構文を使用して配列変数を作成する場合、追加の属性は後続の代入が行われるまで有効になりません。無効なオプションに遭遇した場合、「-f foo=bar」を使用して関数を定義しようとした場合、読み取り専用変数に値を割り当てようとした場合、代入を試みた場合を除き、戻り値は 0 です。複合代入構文 (上記の配列を参照) を使用せずに配列変数に値を渡す場合、名前の 1 つが有効なシェル変数名ではない場合、シェル変数名を変更しようとします。読み取り専用変数の読み取り専用ステータスをオフにしたり、配列変数の配列ステータスをオフにしようとしたり、-f を使用して存在しない関数を表示しようとしました。

dirs [-clpv] [+n] [-n]

オプションを指定しないと、現在記憶されているディレクトリのリストが表示されます。デフォルトの表示は、ディレクトリ名がスペースで区切られた 1 行に表示されます。ディレクトリはpushd コマンドを使用してリストに追加されます。 popd コマンドはリストからエントリを削除します。現在のディレクトリは常にスタック内の最初のディレクトリになります。

-c

すべてのエントリを削除して、ディレクトリ スタックをクリアします。

-l

完全なパス名を使用してリストを作成します。デフォルトのリスト形式では、チルダを使用してホーム ディレクトリを示します。

-p

ディレクトリ スタックを 1 行に 1 つのエントリで出力します。

-v

ディレクトリ スタックを 1 行に 1 つのエントリで出力し、各エントリの先頭にスタック内のインデックスを付けます。

+n

オプションなしで呼び出すと、dirs によって表示されるリストの左から数えて、0 から数えて n 番目のエントリを表示します。

-n

オプションなしで呼び出すと、dirs によって表示されるリストの右から数えて、0 から数えて n 番目のエントリを表示します。

無効なオプションが指定されているか、 ディレクトリ スタックの末尾を超えてn 個のインデックスが指定されている場合を除き、戻り値は 0 です。

disown [-ar] [-h] [jobspec ... | pid ... ]

オプションを指定しない場合は、アクティブなジョブのテーブルから各ジョブスペックを削除します。 ジョブスペックが存在せず、-a オプションも -r オプションも指定されていない場合、現在のジョブ使用されている。 -h オプションが指定されている場合、各ジョブスペックはテーブルから削除されませんが、SIGHUP がジョブに送信されないようにマークされます。シェルがSIGHUPを受信した場合。 jobspec が指定されていない場合、-a オプションはすべてのジョブを削除またはマークすることを意味します。 jobspec 引数を指定しない -r オプションは、実行中のジョブに操作を制限します。 ジョブスペックで有効なジョブが指定されていない限り、戻り値は 0 です。

echo [-neE] [arg ...]

arg をスペースで区切って出力し、その後に改行を続けます。書き込みエラーが発生しない限り、戻りステータスは 0 です。 -n を指定すると、末尾の改行が抑制されます。 -e オプションを指定すると、次のバックスラッシュでエスケープされた文字の解釈が有効になります。 -E オプションは、これらのエスケープ文字がデフォルトで解釈されるシステムであっても、これらのエスケープ文字の解釈を無効にします。 xpg_echo シェル オプションを使用すると、echo がデフォルトでこれらのエスケープ文字を展開するかどうかを動的に決定できます。 エコーは--をオプションの終了を意味すると解釈しません。 echo は次のエスケープ シーケンスを解釈します。

\a

警報(ベル)

\b

バックスペース

\c

それ以上の出力を抑制する

\e
\E

エスケープ文字

\f

フォームフィード

\n

改行

\r

キャリッジリターン

\t

水平タブ

\v

垂直タブ

\\

バックスラッシュ

\0nnn

値が 8 進数値 nnn (0 ~ 3 の 8 進数字) である 8 ビット文字

\xHH

値が 16 進数値 HH (1 桁または 2 桁の 16 進数) である 8 ビット文字

\uHHHH

値が 16 進値 HHHH (1 ~ 4 桁の 16 進数) である Unicode (ISO/IEC 10646) 文字

\UHHHHHHHH

値が 16 進値 HHHHHHHH (1 ~ 8 の 16 進数) である Unicode (ISO/IEC 10646) 文字

enable [-a] [-dnps] [-f filename] [name ...]

組み込みシェルコマンドを有効または無効にします。組み込みを無効にすると、通常、シェルはディスク コマンドの前に組み込みを検索しますが、シェル組み込みと同じ名前を持つディスク コマンドはフル パス名を指定せずに実行できます。 -n を使用すると、それぞれの名前 が無効になります。それ以外の場合は名前が有効になります。たとえば、シェル組み込みバージョンの代わりにパス経由で見つかったテストバイナリを使用するには、「enable -n test」を実行します。 -f オプションは、動的読み込みをサポートするシステム上で、共有オブジェクト filename から新しい組み込みコマンド name を読み込みます。 -d オプションは、以前に -f でロードされた組み込みを削除します。 name 引数が指定されていない場合、または -p オプションが指定されている場合は、シェル組み込みのリストが出力されます。他のオプション引数がない場合、リストは有効なすべてのシェル組み込みで構成されます。 -n を指定すると、無効な組み込みのみが出力されます。 -a を指定すると、印刷されるリストにはすべての組み込みが含まれ、それぞれが有効かどうかが示されます。 -s が指定されている場合、出力は POSIX の特別な組み込み関数に制限されます。 名前がシェル組み込み関数でない場合、または共有オブジェクトから新しい組み込み関数をロードするときにエラーが発生しない限り、戻り値は 0 です。

eval [arg ...]

arg は読み取られ、単一のコマンドに連結されます。このコマンドはシェルによって読み取られて実行され、その終了ステータスがeval の値として返されます。 引数がない場合、または null 引数のみの場合、eval は 0 を返します。

exec [-cl] [-a name] [command [arguments]]

コマンドを指定すると、シェルが置き換えられます。新しいプロセスは作成されません。その引数はコマンドの引数になります。 -l オプションが指定されている場合、シェルはコマンドに渡される 0 番目の引数の先頭にダッシュを配置します。これがログイン(1) の動作です。 -c オプションを使用すると、コマンドが空の環境で実行されます。 -a が指定された場合、シェルは実行されたコマンドに 0 番目の引数として name を渡します。何らかの理由でコマンドを実行できない場合、execfail シェル オプションが有効になっていない限り、非対話型シェルが終了します。その場合は失敗を返します。ファイルを実行できない場合、対話型シェルは失敗を返します。 exec が失敗すると、サブシェルは無条件で終了します。 コマンドが指定されていない場合、リダイレクトは現在のシェルで有効になり、戻りステータスは 0 になります。リダイレクト エラーがある場合、戻りステータスは 1 になります。

exit [n]

シェルを n のステータスで終了させます。 n を省略した場合、終了ステータスは最後に実行されたコマンドの終了ステータスになります。 EXIT のトラップは、シェルが終了する前に実行されます。

export [-fn ] [name[=word]] ...
export -p

指定された名前は、後で実行されるコマンドの環境に自動的にエクスポートされるようにマークされます。 -f オプションが指定されている場合、名前は関数を参照します。 名前が指定されていない場合、または-pオプションが指定されている場合は、エクスポートされたすべての変数の名前のリストが出力されます。 -n オプションを使用すると、各名前からエクスポート プロパティが削除されます。変数名の後に =word が続く場合、変数の値は word に設定されます。 エクスポートは、無効なオプションが見つからないか、名前のいずれかが有効なシェル変数名ではない場合、または-fでない限り、終了ステータス 0 を返します。関数ではない名前が指定されています。

fc [-e ename] [-lnr] [first] [last]
fc -s [pat=rep] [cmd]

最初の形式は、 履歴リストから最初から最後までのコマンドの範囲を選択し、それらを表示または編集して再実行します。 最初 と 最後 は、文字列 (その文字列で始まる最後のコマンドを見つけるため) または数値 (履歴リストのインデックス。負の数値の場合) として指定できます。現在のコマンド番号からのオフセットとして使用されます)。リストする場合、最初または最後の 0 は -1 に相当し、-0 は現在のコマンド (通常は fc コマンド) に相当します。 ;それ以外の場合、0 は -1 と同等であり、-0 は無効です。 last が指定されていない場合は、リスト表示用に現在のコマンド (「fc -l -10」で最後の 10 個のコマンドが出力されるように) と first に設定されます。さもないと。 first が指定されていない場合、編集の場合は前のコマンドに設定され、リストの場合は -16 に設定されます。

-n オプションは、リストするときにコマンド番号を抑制します。 -r オプションはコマンドの順序を逆にします。 -l オプションを指定すると、コマンドが標準出力にリストされます。それ以外の場合、ename で指定されたエディタが、それらのコマンドを含むファイルに対して呼び出されます。 ename が指定されていない場合は、FCEDIT 変数の値が使用され、FCEDIT の場合は EDITOR の値が使用されます。は設定されていません。どちらの変数も設定されていない場合は、 vi が使用されます。編集が完了すると、編集したコマンドがエコーされて実行されます。

2 番目の形式では、pat の各インスタンスが rep に置き換えられた後、command が再実行されます。 コマンドは、上記の最初と同じように解釈されます。これで使用すると便利なエイリアスは「r="fc -s"」です。つまり、「r cc」と入力すると「cc」で始まる最後のコマンドが実行され、「r」と入力すると再実行されます。最後のコマンド。

最初の形式が使用される場合、無効なオプションが検出されない限り、または最初または最後に範囲外の履歴行が指定されない限り、戻り値は 0 になります。 -e オプションが指定されている場合、戻り値は最後に実行されたコマンドの値、またはコマンドの一時ファイルでエラーが発生した場合は失敗します。 2 番目の形式が使用される場合、戻りステータスは、cmd が有効な履歴行を指定しない限り、再実行されたコマンドのステータスになります。その場合、fc は失敗を返します。

fg [jobspec]

フォアグラウンドでジョブスペックを再開し、それを現在のジョブにします。 ジョブスペックが存在しない場合は、 シェルの現在のジョブの概念が使用されます。戻り値は、フォアグラウンドに配置されたコマンドの値、またはジョブ制御が無効なときに実行された場合、またはジョブ制御が有効な状態で実行された場合にジョブスペックが有効なジョブを指定していない場合、または失敗した場合です。 jobspec は、ジョブ制御なしで開始されたジョブを指定します。

getopts optstring name [arg ...]

getopts は、位置パラメータを解析するためにシェル プロシージャによって使用されます。 optstring には、認識されるオプション文字が含まれます。文字の後にコロンが続く場合、オプションには引数があることが想定され、引数と空白で区切る必要があります。コロンおよび疑問符文字はオプション文字として使用できません。呼び出されるたびに、getopts はシェル変数 name に次のオプションを配置し、 name が存在しない場合は初期化し、name のインデックスを初期化します。変数 OPTIND に処理される次の引数。

OPTIND は、シェルまたはシェル スクリプトが呼び出されるたびに 1 に初期化されます。オプションに引数が必要な場合、getopts はその引数を変数に入れます。

オプターグです。シェルはOPTIND を自動的にリセットしません。新しいパラメータのセットを使用する場合は、同じシェル呼び出し内でのgetopts への複数の呼び出しの間に手動でリセットする必要があります。

オプションの終わりに達すると、getopts はゼロより大きい戻り値で終了します。

OPTIND は最初の非オプション引数のインデックスに設定され、name は ? に設定されます。

通常、getopts は位置パラメータを解析しますが、 より多くの引数がarg 値として指定された場合、 代わりにgetopts がそれらを解析します。

getopts は 2 つの方法でエラーを報告できます。 optstring の最初の文字がコロンの場合、サイレントエラー レポートが使用されます。通常の操作では、無効なオプションまたは欠落しているオプション引数が発生した場合に、診断メッセージが出力されます。変数 OPTERR が 0 に設定されている場合、optstring の最初の文字がコロンでない場合でも、エラー メッセージは表示されません。

無効なオプションが見つかった場合、getopts は ? を配置します。 name に入力し、サイレントでない場合は、エラー メッセージを出力し、OPTARG の設定を解除します。 getopts がサイレントの場合、見つかったオプション文字は OPTARG に配置され、診断メッセージは出力されません。

必要な引数が見つからず、getopts がサイレントでない場合は、疑問符 ( ? ) が name の OPTARG に配置されます。 の設定が解除され、診断メッセージが出力されます。 getopts がサイレントの場合、コロン ( : ) が name に配置され、OPTARG がオプションに設定されます。キャラクターが見つかりました。

getopts は、指定または未指定のオプションが見つかった場合に true を返します。オプションの終わりに達した場合、またはエラーが発生した場合は false を返します。

hash [-lr] [-p filename] [-dt] [name]

ハッシュ が呼び出されるたびに、` PATH 内のディレクトリを検索してコマンド name の完全なパス名が決定され、記憶されます。以前に記憶されていたパス名はすべて破棄されます。 -p オプションを指定すると、パス検索は実行されず、ファイル名がコマンドの完全なファイル名として使用されます。 -r オプションを使用すると、シェルは記憶されている場所をすべて忘れます。 -d オプションを使用すると、シェルは各名前の記憶された場所を忘れます。 -t オプションを指定すると、各名前に対応する完全なパス名が出力されます。複数の name 引数が -t で指定された場合、 ハッシュ化された完全なパス名の前に name が出力されます。 -l オプションを使用すると、入力として再利用できる形式で出力が表示されます。引数が指定されない場合、または -l のみが指定された場合は、記憶されているコマンドに関する情報が出力されます。 名前が見つからないか、無効なオプションが指定されない限り、戻りステータスは true です。

help [-dms] [pattern]

組み込みコマンドに関する役立つ情報を表示します。 パターンが指定されている場合、ヘルプはパターンに一致するすべてのコマンドに関する詳細なヘルプを表示します。それ以外の場合は、すべての組み込みおよびシェル制御構造のヘルプが出力されます。

-d

各パターンの短い説明を表示します。

-m

各パターンの説明をマンページのような形式で表示します。

-s

各パターンについて短い使用法の概要のみを表示します。

コマンドがパターンに一致しない限り、戻りステータスは 0 です。

history [n]
history -c
history -d offset
history -d start-end
history -anrw [filename]
history -p arg [arg ...]
history -s arg [arg ...]

オプションを指定しないと、行番号付きのコマンド履歴リストが表示されます。 * が付いているリストの行は変更されています。引数 n は、最後の n 行のみをリストします。シェル変数 HISTTIMEFORMAT が設定されており、null ではない場合、関連するタイムスタンプを表示するためにstrftime(3) のフォーマット文字列として使用されます。表示された各履歴エントリとともに。フォーマットされたタイムスタンプと履歴行の間に空白は印刷されません。 ファイル名が指定されている場合、 それは履歴ファイルの名前として使用されます。そうでない場合は、HISTFILE の値が使用されます。オプションが指定されている場合、その意味は次のとおりです。

-c

すべてのエントリを削除して履歴リストをクリアします。

-d offset

オフセットの位置にある履歴エントリを削除します。オフセットが負の場合、 1 つ大きいものを基準として解釈されます。最後の履歴位置であるため、負のインデックスは履歴の終わりから逆算し、インデックス -1 は現在のhistory -d コマンドを参照します。

-d start-end

位置開始から終了までの履歴エントリを削除します。 start とend の正の値と負の値は、上記のように解釈されます。

-a

「新しい」履歴行を履歴ファイルに追加します。これらは、 現在のbash セッションの開始以降に入力された履歴行ですが、 まだ履歴ファイルに追加されていないものです。

-n

まだ読み取られていない履歴行を履歴ファイルから現在の履歴リストに読み取ります。これらは、 現在のbash セッションの開始以降に履歴ファイルに追加された行です。

-r

履歴ファイルの内容を読み取り、現在の履歴リストに追加します。

-w

現在の履歴リストを履歴ファイルに書き込み、履歴ファイルの内容を上書きします。

-p

次の引数に対して履歴置換を実行し、 結果を標準出力に表示します。結果を履歴リストに保存しません。通常の履歴展開を無効にするには、 各引数を引用符で囲む必要があります。

-s

履歴リストの引数を単一のエントリとして保存します。履歴リストの最後のコマンドは引数が追加される前に削除されます。

HISTTIMEFORMAT 変数が設定されている場合、各履歴エントリに関連付けられたタイムスタンプ情報が履歴ファイルに書き込まれ、履歴コメント文字でマークされます。履歴ファイルが読み取られると、履歴コメント文字で始まり、すぐに数字が続く行が、次の履歴エントリのタイムスタンプとして解釈されます。無効なオプションが見つかった場合、履歴ファイルの読み取りまたは書き込み中にエラーが発生した場合、無効なオフセットが -d の引数として指定された場合、またはない限り、戻り値は 0 です。 > -p への引数として指定された履歴展開は失敗します。

jobs [-lnprs] [ jobspec ... ]
jobs -x command [ args ... ]

最初のフォームには、アクティブなジョブがリストされます。オプションには次の意味があります。

-l

通常の情報に加えてプロセス ID をリストします。

-n

ユーザーにステータスが最後に通知されてからステータスが変更されたジョブに関する情報のみを表示します。

-p

ジョブのプロセス グループ リーダーのプロセス ID のみをリストします。

-r

実行中のジョブのみを表示します。

-s

停止したジョブのみを表示します。

jobspec が指定されている場合、出力はそのジョブに関する情報に制限されます。無効なオプションが見つからないか、 無効なジョブスペックが指定されない限り、戻りステータスは 0 です。

-x オプションが指定されている場合、ジョブはコマンドまたは引数で見つかったジョブスペックを置き換えます。 に対応するプロセス グループ ID を指定し、引数を渡してコマンドを実行し、終了ステータスを返します。

kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
kill -l|-L [sigspec | exit_status]

sigspec または signum で指定されたシグナルを、pid または jobspec で指定されたプロセスに送信します。 sigspec は、SIGKILL などの大文字と小文字を区別しないシグナル名 (SIG プレフィックスの有無にかかわらず) またはシグナル番号です。 signum はシグナル番号です。 sigspec が存在しない場合は、SIGTERM が想定されます。 -l の引数は信号名をリストします。 -l を指定したときに引数が指定されている場合は、引数に対応するシグナルの名前がリストされ、戻りステータスは 0 になります。 exit_status 引数to -l は、シグナル番号またはシグナルによって終了されたプロセスの終了ステータスを指定する数値です。 -L オプションは -l と同等です。 kill は、少なくとも 1 つのシグナルが正常に送信された場合は true を返し、エラーが発生した場合は false を返します。無効なオプションが見つかりました。

let arg [arg ...]

各引数は、評価される算術式です (上記の算術評価を参照)。最後の arg が 0 と評価された場合、let は 1 を返します。それ以外の場合は 0 が返されます。

local [option] [name[=value] ... | - ]

引数ごとに、名前という名前のローカル変数が作成され、値が割り当てられます。 オプションは、declare で受け入れられる任意のオプションです。関数内でローカルが使用されると、変数name 可視スコープをその関数とその子に制限します。 name が - の場合、 シェル オプションのセットはローカルが呼び出される関数に対してローカルになります: シェル オプションはを使用して変更されます。 > 関数内の set 組み込み関数は、 関数が返されるときに元の値に復元されます。復元は、 関数の前に設定されていた値を復元するために一連のset コマンドが実行されたかのように行われます。オペランドを指定しない場合、local はローカル変数のリストを標準出力に書き込みます。関数内以外でローカルを使用するとエラーになります。 ローカルが関数の外で使用されている場合、無効な名前が指定されている場合、または名前が読み取り専用変数である場合を除き、戻りステータスは 0 です。

logout

ログインシェルを終了します。

mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]

標準入力から行をインデックス付き配列変数 array に読み取るか、-u オプションが指定されている場合はファイル記述子 fd から読み取ります。変数 MAPFILE はデフォルトの配列です。 オプションが指定されている場合、その意味は次のとおりです。

-d

delim の最初の文字は、 改行ではなく、 各入力行を終了するために使用されます。 delim が空の文字列の場合、mapfile は NUL 文字を読み取ると行を終了します。

-n

最大でも count 行をコピーします。 count が 0 の場合、 すべての行がコピーされます。

-O

インデックス原点で配列への代入を開始します。デフォルトのインデックスは 0 です。

-s

最初に読み取られたcount行を破棄します。

-t

読み取られた各行から末尾のデリム (デフォルトの改行) を削除します。

-u

標準入力の代わりにファイル記述子fdから行を読み取ります。

-C

量子行が読み取られるたびにコールバックを評価します。 -c オプションは量子を指定します。

-c

各呼び出しの間に読み取られる行数をコールバックに指定します。

-c を指定せずに -C を指定した場合、デフォルトのクォンタムは 5000 です。コールバック が評価されると、次のインデックスが提供されます。次に割り当てられる配列要素と、追加の引数としてその要素に割り当てられる行。 コールバックは、行が読み取られた後、 配列要素が割り当てられる前に評価されます。

明示的な原点が指定されていない場合、mapfile は割り当てる前に配列をクリアします。

mapfile は、無効なオプションまたはオプション引数が指定されている場合、配列が無効または割り当て不可能である場合、または配列が指定されている場合を除き、正常に戻ります。 はインデックス付き配列ではありません。

popd [-n] [+n] [-n]

ディレクトリスタックからエントリを削除します。引数を指定しないと、スタックから最上位ディレクトリを削除し、 新しい最上位ディレクトリに対してcdを実行します。引数が指定されている場合、次の意味があります。

-n

スタックからディレクトリを削除するときの通常のディレクトリの変更を抑制し、スタックのみが操作されるようにします。

+n

dirs で示されるリストの左から数えて、0 から数えてn番目のエントリを削除します。たとえば、「popd +0」は最初のディレクトリを削除し、「popd +1」は 2 番目のディレクトリを削除します。

-n

dirs で示されるリストの右から数えて、0 から数えてn番目のエントリを削除します。例: 「popd -0」は最後のディレクトリを削除し、「popd -1」は最後から 2 つ目のディレクトリを削除します。

popd コマンドが成功すると、dirs も実行され、戻りステータスは 0 になります。popd は、無効なオプションがある場合に false を返します。ディレクトリ スタックが空であるか、存在しないディレクトリ スタック エントリが指定されているか、ディレクトリの変更が失敗しています。

printf [-v var] format [arguments]

フォーマットされた引数をフォーマットの制御下で標準出力に書き込みます。 -v オプションこれにより、 出力は標準出力に出力されるのではなく、 変数 var に割り当てられます。

形式は、3 種類のオブジェクトを含む文字列です。 標準出力に単純にコピーされるプレーン文字、標準出力に変換されてコピーされる文字エスケープ シーケンス標準の printf(1) に加えて、出力および形式の指定により、次の連続する引数が出力されます。形式仕様 printf は次の拡張子を解釈します:

%b

printf は、echo -e と同じ方法で、 対応する 引数のバックスラッシュ エスケープ シーケンスを展開します。

%q

printf は、 対応する 引数をシェル入力として再利用できる形式で出力します。

%(datefmt)T

これにより、printf はstrftimeのフォーマット文字列として datefmt を使用した結果の日時文字列を出力します。 (3). 対応する引数は、 エポックからの秒数を表す整数です。 2 つの特別な引数値を使用できます。 -1 は現在の時刻を表し、-2 はシェルが呼び出された時刻を表します。引数が指定されていない場合、変換は -1 が指定されたかのように動作します。これは、 通常のprintf の動作の例外です。

%b、%q、および %T ディレクティブはすべて、形式仕様のフィールド幅と精度の引数を使用し、通常、元の引数よりも多くの文字が含まれる拡張された引数からそのバイト数を書き込みます (またはその幅のフィールドを使用します)。 。

文字列以外の書式指定子の引数は、先頭のプラスまたはマイナス記号が許可されることを除き、C 定数として扱われます。先頭の文字が一重引用符または二重引用符の場合、値は後続の文字の ASCII 値になります。

すべての引数を使用するためにフォーマットは必要に応じて再利用されます。フォーマット > は、 提供されているよりも多くの引数を必要とするため、 追加の形式仕様は、必要に応じてゼロ値または NULL 文字列が提供されたかのように動作します。戻り値は、成功した場合は 0、失敗した場合は 0 以外です。

pushd [-n] [+n] [-n]
pushd [-n] [dir]

ディレクトリ スタックの最上位にディレクトリを追加するか、スタックをローテーションして、スタックの新しい最上位を現在の作業ディレクトリにします。引数を指定しないと、 ディレクトリ スタックが空でない限り、pushd は上位 2 つのディレクトリを交換し、0 を返します。引数が指定されている場合、次の意味があります。

-n

スタックにディレクトリをローテーションまたは追加するときの通常のディレクトリの変更を抑制し、スタックのみが操作されるようにします。

+n

n番目のディレクトリ(ディレクトリで示されるリストの左から数えて、ゼロから数えます)が一番上になるようにスタックを回転します。 。

-n

n番目のディレクトリ (ディレクトリで表示されるリストの右から数えて、ゼロから数えます) が先頭になるようにスタックを回転します。 。

dir

dir をディレクトリ スタックの最上位に追加し、cd ビルトインの引数として指定されたかのように、それを新しい現在の作業ディレクトリにします。

pushd コマンドが成功すると、dirs も実行されます。最初の形式を使用した場合、ディレクトリへの cd が失敗しない限り、pushd は 0 を返します。 2 番目の形式では、ディレクトリ スタックが空であるか、存在しないディレクトリ スタック要素が指定されているか、指定された新しい現在のディレクトリへのディレクトリの変更が失敗しない限り、pushd は 0 を返します。

pwd [-LP]

現在の作業ディレクトリの絶対パス名を出力します。 -P オプションが指定されている場合、または set 組み込みコマンドの -o 物理 オプションが有効になっている場合、出力されるパス名にはシンボリック リンクは含まれません。 -L オプションを使用すると、出力されるパス名にシンボリック リンクが含まれる場合があります。現在のディレクトリ名の読み取り中にエラーが発生するか、無効なオプションが指定されない限り、戻りステータスは 0 です。

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

1 行は標準入力、または -u オプションの引数として指定されたファイル記述子fdから読み取られ、 上記のWord で説明したように単語に分割されます。分割すると、最初の単語が最初の名前に割り当てられ、2 番目の単語が 2 番目の名前に割り当てられます。名前よりも単語の数が多い場合は、残りの単語とその間の区切り文字が最後の名前に割り当てられます。入力ストリームから読み取られた単語の数が名前よりも少ない場合、残りの名前には空の値が割り当てられます。 IFS の文字は、シェルが展開に使用するのと同じルールを使用して、行を単語に分割するために使用されます (単語の分割で説明)。 バックスラッシュ文字 ( \) は、 次に読み込まれる文字と行継続に対する特別な意味を削除するために使用できます。オプションが指定されている場合、その意味は次のとおりです。

-a aname

単語は、配列変数 aname の 0 から始まる連続インデックスに割り当てられます。aname は、新しい値が割り当てられる前に設定解除されます。他のname引数は無視されます。

-d delim

delim の最初の文字は、 改行ではなく、 入力行を終了するために使用されます。 delim が空の文字列の場合、 read は NUL 文字を読み取ると行を終了します。

-e

標準入力が端末から来ている場合は、readline (上記のREADLINE を参照) を使用して行を取得します。 Readline は、現在の (行編集が以前にアクティブでなかった場合はデフォルト) 編集設定を使用しますが、Readline のデフォルトのファイル名補完を使用します。

-i text

行の読み取りにreadline が使用されている場合、 編集が開始される前にテキストが編集バッファーに配置されます。

-n nchars

read は、 完全な入力行を待つのではなくnchars文字を読み取った後に戻りますが、nchars 未満の場合は区切り文字を尊重します。 文字は区切り文字の前に読み取られます。

-N nchars

EOF が発生したり 読み取りタイムアウトになったりしない限り、読み取りは、 完全な入力行を待つのではなくnchars文字を正確に読み取った後に戻ります。入力内で検出された 区切り文字は特別に処理されず、nchars 文字が読み取られるまで読み取りが返されません。はIFS の文字で分割されません。その目的は、 読み取られた文字 (バックスラッシュを除く、-r オプションを参照) を変数に正確に割り当てることです。

-p prompt

入力を読み取ろうとする前に、 末尾改行なしで標準エラーにプロンプトを表示します。プロンプトは、入力が端末から送信されている場合にのみ表示されます。

-r

バックスラッシュはエスケープ文字として機能しません。バックスラッシュは行の一部とみなされます。特に、バックスラッシュと改行のペアは行継続として使用できません。

-s

サイレントモード。入力が端末から来ている場合、文字はエコーされません。

-t timeout

入力の完全な行 (または指定された数の文字) がタイムアウト秒以内に読み取られない場合、読み取りがタイムアウトになり、失敗を返します。 タイムアウトは、 小数点の後に小数部が続く 10 進数の場合があります。このオプションは、読み取りが端末、パイプ、またはその他の特殊ファイルから入力を読み取る場合にのみ有効です。通常のファイルから読み取る場合は効果がありません。 読み取りがタイムアウトした場合、読み取りは、 指定された変数名に読み取られた部分入力を保存します。タイムアウトの場合が 0 の場合、 read は、 データの読み取りを試行せずに、すぐに戻ります。指定されたファイル記述子で入力が使用可能な場合、終了ステータスは 0 であり、それ以外の場合は 0 以外です。タイムアウトを超えると、終了ステータスは 128 より大きくなります。

-u fd

ファイル記述子 fd から入力を読み取ります。

名前が指定されていない場合、読み取られた行は終了区切り文字なしで変更されず、変数REPLYに割り当てられます。ファイルの終わり、読み取りタイムアウト (この場合ステータスは 128 より大きい)、変数割り当てエラー (読み取り専用変数への割り当てなど) が発生しない限り、終了ステータスは 0 です。が発生するか、無効なファイル記述子が -u の引数として指定されます。

readonly [-aAf] [-p] [name[=word] ...]

指定された名前は読み取り専用としてマークされます。これらの名前の値は、その後の割り当てによって変更することはできません。 -f オプションを指定すると、 その名前に対応する関数がマークされます。 -a オプションは、変数をインデックス付き配列に制限します。 -A オプションは、変数を連想配列に制限します。両方のオプションが指定された場合は、-A が優先されます。 name 引数が指定されていない場合、または -p オプションが指定されている場合は、すべての読み取り専用名のリストが出力されます。他のオプションは、出力を読み取り専用名のセットのサブセットに制限するために使用できます。 -p オプションを使用すると、入力として再利用できる形式で出力が表示されます。変数名の後に =word が続く場合、 変数の値は word に設定されます。無効なオプションが検出された場合、名前のいずれかが有効なシェル変数名ではない場合、または名前とともに-fが指定された場合を除き、ステータスは 0 です。 > それは関数ではありません。

return [n]

関数の実行を停止し、n で指定された値を呼び出し元に返します。 n を省略した場合、戻りステータスは関数本体で実行された最後のコマンドのステータスになります。トラップ ハンドラーによってリターンが実行される場合、 ステータスを決定するために使用される最後のコマンドは、トラップ ハンドラーの前に実行される最後のコマンドです。 DEBUG トラップ中にreturn が実行された場合、 ステータスを決定するために使用される最後のコマンドは、return が呼び出される前にトラップ ハンドラによって実行された最後のコマンドになります。 は関数の外で使用されますが、 . (source) コマンドによるスクリプトの実行中に、シェルはそのスクリプトの実行を停止し、次のいずれかを返します。 n またはスクリプトの終了ステータスとして、スクリプト内で実行された最後のコマンドの終了ステータス。 n が指定された場合、戻り値はその最下位の 8 ビットになります。 return に数値以外の引数が指定された場合、または によるスクリプトの実行中ではなく関数の外で使用された場合、戻りステータスはゼロ以外になります。またはソースRETURN トラップに関連付けられたコマンドは、関数またはスクリプトの後に実行が再開される前に実行されます。

set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]

オプションを指定しない場合、各シェル変数の名前と値は、現在設定されている変数を設定またはリセットするための入力として再利用できる形式で表示されます。読み取り専用変数はリセットできません。 posix モードでは、 シェル変数のみがリストされます。出力は現在のロケールに従って並べ替えられます。オプションを指定すると、シェル属性が設定または設定解除されます。オプション処理後に残った引数は位置パラメータの値として扱われ、順番に $1、 $2、 ... に割り当てられます。 $n。オプションが指定されている場合、その意味は次のとおりです。

-a

作成または変更された各変数または関数にはエクスポート属性が与えられ、後続のコマンドの環境にエクスポートするようにマークされます。

-b

終了したバックグラウンド ジョブのステータスを、次のプライマリ プロンプトの前ではなく、ただちに報告します。ジョブ制御が有効な場合のみ有効です。

-e

パイプライン(単一の単純なコマンドで構成されている場合もあります)、リスト、 または複合コマンド (上記のシェル文法を参照) は、ゼロ以外のステータスで終了します。失敗したコマンドが while または until キーワードの直後のコマンド リストの一部である場合、または if に続くテストの一部である場合、シェルは終了しません。 または elif の予約語。最後の && に続くコマンドを除く、&& または || リストで実行されるコマンドの一部。または ||、 パイプライン内の最後以外のコマンド、またはコマンドの戻り値が ! で反転されている場合。 -e が無視されている間にコマンドが失敗したため、サブシェル以外の複合コマンドが 0 以外のステータスを返した場合、シェルは終了しません。ERR のトラップが設定されている場合、シェルが終了する前に実行されます。このオプションは、シェル環境と各サブシェル環境に個別に適用されます(「

上記のコマンド実行環境)、サブシェル内のすべてのコマンドを実行する前にサブシェルが終了する可能性があります。

-e が無視されているコンテキストで複合コマンドまたはシェル関数が実行される場合は、複合コマンドまたは関数本体内で実行されるコマンドはどれも、-e 設定の影響を受けません。 -e が設定されており、コマンドが失敗ステータスを返した場合。 -e が無視されるコンテキストでの実行中に複合コマンドまたはシェル関数が -e を設定した場合、その設定は複合コマンドまたは次のコマンドが実行されるまで効果がありません。関数呼び出しが完了します。

-f

パス名の展開を無効にします。

-h

コマンドは実行のために検索されるので、その場所を覚えておいてください。これはデフォルトで有効になっています。

-k

コマンド名の前にある引数だけでなく、代入ステートメントの形式のすべての引数がコマンドの環境に配置されます。

-m

モニターモード。ジョブ制御が有効になっています。このオプションは、このオプションをサポートするシステム上の対話型シェルではデフォルトでオンになっています (上記のジョブ制御を参照)。すべてのプロセスは別のプロセス グループで実行されます。バックグラウンド ジョブが完了すると、シェルはその終了ステータスを含む行を出力します。

-n

コマンドを読み取りますが、実行はしません。これは、シェル スクリプトの構文エラーをチェックするために使用できます。これは対話型シェルでは無視されます。

-o option-name

オプション名は次のいずれかになります。

allexport

-a と同じです。

braceexpand

-B と同じです。

emacs

emacs スタイルのコマンドライン編集インターフェイスを使用します。シェルが--noediting オプションで開始されていない限り、シェルが対話型の場合、これはデフォルトで有効になります。これは、read -e に使用される編集インターフェイスにも影響します。

errexit

-e と同じです。

errtrace

-E と同じです。

functrace

-T と同じです。

hashall

-h と同じです。

histexpand

-H と同じです。

history

上記の履歴で説明したように、コマンド履歴を有効にします。このオプションは、対話型シェルではデフォルトでオンになっています。

ignoreeof

この効果は、シェル コマンド「IGNOREEOF=10」が実行されたようなものです (上記のシェル変数を参照)。

keyword

-k と同じです。

monitor

-m と同じです。

noclobber

-C と同じです。

noexec

-n と同じです。

noglob

-f と同じです。

nolog

現在無視されています。

notify

-b と同じです。

nounset

うと同じです。

onecmd

-t と同じです。

physical

-P と同じです。

pipefail

設定されている場合、パイプラインの戻り値は、ゼロ以外のステータスで終了した最後 (右端) コマンドの値、またはパイプライン内のすべてのコマンドが正常に終了した場合はゼロになります。このオプションはデフォルトでは無効になっています。

posix

デフォルトの操作が POSIX 標準と異なる場合の bash の動作を、標準 (posix モード) に一致するように変更します。関連項目を参照してください。 posix モードが bash の動作にどのような影響を与えるかを詳しく説明したドキュメントへの参照については、 以下 を参照してください。

privileged

-p と同じです。

verbose

-v と同じです。

vi

vi スタイルのコマンド ライン編集インターフェイスを使用します。これは、read -e に使用される編集インターフェイスにも影響します。

xtrace

-x と同じです。

-o が option-name なしで指定された場合、 現在のオプションの値が出力されます。 +o に option-name を指定せずに指定した場合は、 現在のオプション設定を再作成するための一連の set コマンドが実行されます。標準出力に表示されます。

-p

特権モードをオンにします。このモードでは、$ENV ファイルと $BASH_ENV ファイルは処理されず、シェル関数は環境から継承されず、SHELLOPTS、BASHOPTS、CDPATH、および GLOBIGNORE 変数は、環境内に存在する場合でも無視されます。実際のユーザー (グループ) ID と等しくない実効ユーザー (グループ) ID でシェルが開始され、-p オプションが指定されていない場合、 これらのアクションが実行され、実効ユーザー ID は実際のユーザー ID に設定されます。起動時に-p オプションが指定されている場合、 実効ユーザー ID はリセットされません。このオプションをオフにすると、実効ユーザー ID とグループ ID が実際のユーザー ID とグループ ID に設定されます。

-t

1 つのコマンドを読み取って実行した後、終了します。

-u

特殊パラメータ「@」「*」以外の未設定の変数およびパラメータは、パラメータ展開時にエラーとして扱います。設定されていない変数またはパラメータに対して展開が試行されると、シェルはエラー メッセージを出力し、対話型でない場合はゼロ以外のステータスで終了します。

-v

シェルの入力行を読み取ったときに出力します。

-x

各単純なコマンド、for コマンド、case コマンド、select コマンド、または算術for コマンドを展開した後、展開された値を表示します。 PS4 の後にコマンドとその拡張引数または関連する単語リストが続きます。

-B

シェルは中括弧の展開を実行します (上記の中括弧の展開を参照)。これはデフォルトでオンになっています。

-C

設定すると、bash は >、>&、および <> リダイレクト演算子で既存のファイルを上書きしません。 。これは、出力ファイルを作成するときに、> の代わりにリダイレクト演算子 >| を使用してオーバーライドされる場合があります。

-E

設定されている場合、ERR のトラップは、シェル関数、 コマンド置換、およびサブシェル環境で実行されるコマンドによって継承されます。このような場合通常、ERR トラップは継承されません。

-H

! スタイルの履歴置換を有効にします。シェルが対話型の場合、このオプションはデフォルトでオンになります。

-P

設定すると、シェルは現在の作業ディレクトリを変更するcd などのコマンドを実行するときにシンボリック リンクを解決しません。代わりに物理ディレクトリ構造が使用されます。デフォルトでは、 現在のディレクトリを変更するコマンドを実行するとき、bash はディレクトリの論理チェーンに従います。

-T

設定すると、DEBUG および RETURN のトラップはすべて、 シェル関数、コマンド置換、およびサブシェル環境で実行されるコマンドによって継承されます。このような場合、 通常DEBUG トラップと RETURN トラップは継承されません。

--

このオプションの後に引数がない場合、位置パラメータは設定されません。それ以外の場合、位置パラメータは、 一部が - で始まっている場合でも、 arg に設定されます。

-

オプションの終了を通知し、 残りのすべてのargが位置パラメータに割り当てられるようにします。 -x および -v オプションはオフになっています。 argがない場合は、位置パラメータは変更されません。

特に明記されていない限り、オプションはデフォルトではオフになっています。 - ではなく + を使用すると、これらのオプションがオフになります。オプションは、シェルの呼び出しへの引数として指定することもできます。現在のオプションのセットは $- にあります。無効なオプションが見つからない限り、戻りステータスは常に true になります。

shift [n]

n+1 ... の位置パラメータは $1 .... に名前が変更されます。 $# から $#-n+1 までの数値は設定されていません。 n $# 以下の負でない数でなければなりません。n が 0 の場合、パラメータは変更されません。 n が指定されていない場合は、1 であるとみなされます。n が $# より大きい場合、 位置パラメータは変更されません。 n が $# より大きいかゼロより小さい場合、ステータスはゼロより大きくなります。それ以外の場合は 0。

shopt [-pqsu] [-o] [optname ...]

オプションのシェル動作を制御する設定の値を切り替えます。設定は、以下にリストされているもの、または -o オプションが使用されている場合は、set 組み込みコマンド-o オプションで使用可能な設定のいずれかになります。 オプションを指定しない場合、または -p オプションを使用すると、設定可能なすべてのオプションのリストが、それぞれが設定されているかどうかを示して表示されます。 optnames が指定されている場合、 出力はそれらのオプションに制限されます。-p オプションを使用すると、 再利用できる形式で出力が表示されます。入力として。他のオプションには次の意味があります。

-s

各 optname を有効 (設定) します。

-u

各 optname を無効 (設定解除) します。

-q

通常の出力を抑制します (静音モード)。戻りステータスは、optname が設定されているか未設定かを示します。 複数の optname 引数が 指定されている場合。 -q、 すべてのoptnameが有効な場合、戻りステータスはゼロになります。それ以外の場合は、 ゼロ以外です。

-o

optname の値を、 set ビルトインの -o オプションに定義された値に制限します。

-s または -u のいずれかが optname 引数なしで使用された場合 shoptそれぞれ、設定または設定解除されているオプションのみを示します。特に明記されていない限り、ショッピング オプションはデフォルトで無効(設定解除) になっています。

オプションをリストするときの戻りステータスは、すべてのoptnames が有効な場合はゼロ、それ以外の場合はゼロ以外です。オプションを設定または設定解除する場合、optnameが有効なシェルオプションでない限り、戻りステータスはゼロになります。

ショッピング オプションのリストは次のとおりです:

assoc_expand_once

設定すると、シェルは、変数代入を実行できる組み込み関数の実行中、および配列逆参照を実行する組み込み関数の実行中に、算術式の評価中に連想配列の添字の多重評価を抑制します。

autocd

設定すると、ディレクトリの名前であるコマンド名がcd コマンドの引数であるかのように実行されます。このオプションは対話型シェルでのみ使用されます。

cdable_vars

設定すると、ディレクトリではない cd 組み込みコマンドの引数は、変更先のディレクトリを値とする変数の名前とみなされます。

cdspell

設定すると、cd コマンドのディレクトリ コンポーネントのスペルの軽微なエラーが修正されます。チェックされるエラーは、転置された文字、欠落している文字、および 1 文字多すぎることです。修正が見つかった場合は、修正されたファイル名が出力され、コマンドが続行されます。このオプションは対話型シェルでのみ使用されます。

checkhash

設定されている場合、bash は実行を試みる前にハッシュ テーブルで見つかったコマンドが存在するかどうかをチェックします。ハッシュされたコマンドが存在しない場合は、通常のパス検索が実行されます。

checkjobs

設定すると、bash は対話型シェルを終了する前に停止したジョブと実行中のジョブのステータスを一覧表示します。ジョブが実行中の場合、コマンドを介さずに 2 回目の終了が試行されるまで終了が延期されます (上記のジョブ制御を参照)。ジョブが停止している場合、シェルは常に終了を延期します。

checkwinsize

設定されている場合、bash は各外部 (非組み込み) コマンドの後にウィンドウ サイズをチェックし、必要に応じてLINES とCOLUMNS の値を更新します。 。このオプションはデフォルトで有効になっています。

cmdhist

設定すると、bash は複数行のコマンドのすべての行を同じ履歴エントリに保存しようとします。これにより、複数行のコマンドを簡単に再編集できます。このオプションはデフォルトで有効になっていますが、上記の履歴で説明したように、コマンド履歴が有効になっている場合にのみ効果があります。

compat31
compat32
compat40
compat41
compat42
compat43
compat44

これらは、シェルの互換性モードの側面を制御します (以下のシェル互換モードを参照)。

complete_fullquote

設定すると、bash は補完を実行するときにファイル名とディレクトリ名のすべてのシェル メタ文字を引用符で囲みます。設定されていない場合、bash は、完成する単語のシェル変数参照にメタキャラクターが出現するときに、完成したファイル名で引用される文字セットからドル記号などのメタキャラクターを削除します。これは、ディレクトリに展開される変数名のドル記号が引用符で囲まれないことを意味します。ただし、ファイル名に含まれるドル記号も引用符で囲まれません。これは、bash が完全なファイル名を引用するためにバックスラッシュを使用している場合にのみアクティブになります。この変数はデフォルトで設定されており、これがバージョン 4.2 までのデフォルトの bash 動作です。

direxpand

設定すると、 ファイル名補完を実行するときにbash がディレクトリ名を単語展開の結果に置き換えます。これにより、readline 編集バッファの内容が変更されます。設定されていない場合、bash はユーザーが入力した内容を保存しようとします。

dirspell

設定すると、最初に指定されたディレクトリ名が存在しない場合、bash は単語補完中にディレクトリ名のスペル修正を試みます。

dotglob

設定すると、bash には「.」で始まるファイル名が含まれます。パス名展開の結果。ファイル名``.'' と ``..'' は、dotglob が設定されている場合でも、常に明示的に一致する必要があります。

execfail

設定すると、exec 組み込みコマンドの引数として指定されたファイルを実行できない場合、非対話型シェルは終了しません。 実行が失敗した場合、対話型シェルは終了しません。

expand_aliases

設定すると、エイリアスは上記のエイリアスで説明したように展開されます。このオプションは、対話型シェルではデフォルトで有効になっています。

extdebug

シェルの呼び出し時またはシェルの起動ファイルで設定した場合は、--debugger オプションと同じように、シェルの起動前にデバッガー プロファイルを実行するように調整します。呼び出し後に設定した場合、デバッガーによる使用を目的とした動作になります。有効になっています:

1.

組み込み宣言の-F オプションは、引数として指定された各関数名に対応するソース ファイル名と行番号を表示します。

2.

DEBUG トラップによって実行されたコマンドがゼロ以外の値を返した場合、次のコマンドはスキップされ、実行されません。

3.

DEBUG トラップによって実行されたコマンドが値 2 を返し、 シェルがサブルーチン (. またはソース ビルトインによって実行されるシェル関数またはシェル スクリプト) で実行されている場合、シェルはリターンへの呼び出しをシミュレートします。

4.

BASH_ARGC と BASH_ARGV は、上記の説明に従って更新されます。

5.

関数トレースが有効になっています。( command ) で呼び出されたコマンド置換、シェル関数、サブシェルは、DEBUG トラップと RETURN トラップを継承します。

6.

エラー トレースが有効になっています。( コマンド) で呼び出されたコマンド置換、シェル関数、およびサブシェルは ERR トラップを継承します。 >

extglob

設定すると、上記の「パス名の拡張」 で説明した拡張パターン マッチング機能が有効になります。

extquote

設定すると、$'string' と $"string" による引用符が実行されます。 $ {パラメータ} 展開内は二重引用符で囲まれています。このオプションはデフォルトで有効になっています。

failglob

設定されている場合、パス名の展開中にファイル名と一致しないパターンは展開エラーになります。

force_fignore

設定すると、FIGNORE シェル変数で指定されたサフィックスにより、無視される単語が唯一可能な補完である場合でも、単語補完を実行するときに単語が無視されます。 FIGNORE の説明については、上記のシェル変数を参照してください。このオプションはデフォルトで有効になっています。

globasciiranges

設定すると、パターン マッチングのブラケット式 (上記のパターン マッチングを参照) で使用される範囲式は、比較を実行するときに従来の C ロケールであるかのように動作します。つまり、現在のロケールの照合シーケンスは考慮されないため、b は A と B の間、および大文字と大文字の間で照合しません。小文字の ASCII 文字はまとめて照合されます。

globstar

設定されている場合、 パス名拡張コンテキストで使用されるパターン** は、 すべてのファイル、0 個以上のディレクトリおよびサブディレクトリと一致します。パターンの後に / が続く場合は、 ディレクトリと サブディレクトリのみが一致します。

gnu_errfmt

設定すると、シェル エラー メッセージが標準の GNU エラー メッセージ形式で書き込まれます。

histappend

設定すると、シェルの終了時に、ファイルを上書きするのではなく、履歴リストが HISTFILE 変数の値で指定されたファイルに追加されます。

histreedit

設定されており、readline が使用されている場合、ユーザーは失敗した履歴置換を再編集する機会が与えられます。

histverify

設定されており、readline が使用されている場合、履歴置換の結果はすぐにはシェル パーサーに渡されません。代わりに、 結果の行がreadline 編集バッファにロードされ、 さらなる変更が可能になります。

hostcomplete

設定され、readline が使用されている場合、bash は、@ を含む単語が補完されるときにホスト名補完を実行しようとします(を参照)。 > 上記の読み取りラインを完了してください)。これはデフォルトで有効になっています。

huponexit

設定すると、対話型ログイン シェルが終了するときに、bash はすべてのジョブに SIGHUP を送信します。

inherit_errexit

設定されている場合、コマンド置換はサブシェル環境で設定を解除するのではなく、errexit オプションの値を継承します。このオプションはposix モードが有効な場合に有効になります。

interactive_comments

設定すると、# で始まる単語が対話型シェルでその単語とその行の残りのすべての文字を無視できるようになります (上記のコメント を参照)。このオプションはデフォルトで有効になっています。

lastpipe

設定されており、ジョブ制御がアクティブでない場合、シェルは、現在のシェル環境のバックグラウンドで実行されていないパイプラインの最後のコマンドを実行します。

lithist

これを設定し、cmdhist オプションを有効にすると、複数行のコマンドは、可能な場合はセミコロン区切り文字を使用せずに、埋め込まれた改行を使用して履歴に保存されます。

localvar_inherit

設定されている場合、ローカル変数は、新しい値が割り当てられる前に、前のスコープに存在する同じ名前の変数の値と属性を継承します。 nameref 属性は継承されません。

localvar_unset

設定されている場合、 以前の関数スコープでローカル変数に対して unset を呼び出すと、その関数が返されるまで後続の検索で未設定であることが検出されるようにマークされます。これは、現在の関数スコープでローカル変数の設定を解除する動作と同じです。

login_shell

シェルがログイン シェルとして起動される場合、シェルはこのオプションを設定します (上記の呼び出しを参照)。値は変更できない場合があります。

mailwarn

設定されており、 bash がメールをチェックしているファイルが最後にチェックされてからアクセスされている場合、「メールファイルのメールは次のとおりです」というメッセージが表示されます。読んだ」 と表示されます。

no_empty_cmd_completion

設定されており、readline が使用されている場合、bash は、空の行で補完が試行されたときに、 可能な補完をパスで検索しようとしません。

nocaseglob

設定すると、bash はパス名拡張を実行するときに大文字と小文字を区別せずにファイル名を照合します (上記のパス名拡張を参照)。

nocasematch

設定されている場合、bash は、case または [[ 条件付きコマンドの実行中に照合を実行するとき、パターン置換単語の展開を実行するとき、または候補となる補完をフィルタリングするときに、大文字と小文字を区別しない方法でパターンを照合します。プログラム可能な完了の一部として。

nullglob

設定すると、bash は、ファイルに一致しないパターン (上記のパス名展開 を参照) を、それ自体ではなく NULL 文字列に展開できるようにします。

progcomp

設定すると、プログラム可能な補完機能 (上記のプログラム可能な補完を参照) が有効になります。このオプションはデフォルトで有効になります。

progcomp_alias

設定され、プログラム可能な補完が有効になっている場合、bash は補完のないコマンド名をエイリアス候補として扱い、エイリアスの展開を試みます。エイリアスがある場合、 bash は展開されたエイリアスから得られるコマンドワードを使用してプログラム可能な補完を試みます。

promptvars

設定すると、プロンプト文字列は、上記のプロンプトで説明したように展開された後、パラメータ展開、コマンド置換、算術展開、および引用符の削除を受けます。このオプションはデフォルトで有効になっています。

restricted_shell

シェルが制限モードで起動された場合、シェルはこのオプションを設定します (以下の制限付きシェルを参照)。値は変更できない場合があります。これは起動ファイルの実行時にリセットされないため、起動ファイルはシェルが制限されているかどうかを検出できます。

shift_verbose

設定すると、shift 組み込み関数は、シフト数が位置パラメータの数を超えるとエラー メッセージを出力します。

sourcepath

設定されている場合、ソース (.) 組み込み関数は PATH の値を使用して、引数として指定されたファイルを含むディレクトリを検索します。このオプションはデフォルトで有効になっています。

xpg_echo

設定すると、 デフォルトでエコー組み込み機能がバックスラッシュとエスケープのシーケンスを展開します。

suspend [-f]

SIGCONT シグナルを受信するまで、このシェルの実行を一時停止します。ログイン シェルは一時停止できません。 -f オプションを使用すると、これを無効にして強制的に一時停止を行うことができます。シェルがログイン シェルであり、-f が指定されていない場合、またはジョブ制御が有効になっていない場合、戻りステータスは 0 です。

test expr
[ expr ]

条件式 expr の評価に応じて、0 (true) または 1 (false) のステータスを返します。各演算子とオペランドは個別の引数である必要があります。

条件式。 テストはオプションを受け入れず、 オプションの終了を示す-- 引数を受け入れて無視することもありません。

式は、優先順位の高い順にリストされている次の演算子を使用して組み合わせることができます。評価は引数の数によって異なります。下記参照。演算子の優先順位は、引数が 5 つ以上ある場合に使用されます。

! expr

expr が false の場合は true。

( expr )

expr の値を返します。 これは、演算子の通常の優先順位をオーバーライドするために使用できます。

expr1 -a expr2

expr1 と expr2 の両方が true の場合は true。

expr1 -o expr2

expr1 または expr2 のいずれかが true の場合は true。

test と [ は、引数の数に基づいた一連のルールを使用して条件式を評価します。

0 arguments

という表現は誤りです。

1 argument

この式は、引数が null でない場合にのみ true になります。

2 arguments

最初の引数が ! の場合、2 番目の引数が null の場合にのみ、 およびその場合にのみ、式は true になります。最初の引数が上記の条件式にリストされている単項条件演算子のいずれかである場合、単項テストが true であれば式は true になります。最初の引数が有効な単項条件演算子でない場合、式は false になります。

3 arguments

以下の条件がリストされた順序で適用されます。 2 番目の引数が、上記の「条件式」にリストされているバイナリ条件演算子のいずれかである場合、式の結果は、最初と 3 番目の引数をオペランドとして使用したバイナリ テストの結果になります。引数が 3 つある場合、-a 演算子と -o 演算子は二項演算子とみなされます。最初の引数が! の場合、値は 2 番目と 3 番目の引数を使用した 2 つの引数のテストの否定になります。最初の引数が正確にある(そして 3 番目の引数が正確にある)場合、結果は 2 番目の引数の 1 つの引数のテストになります。それ以外の場合、式は false になります。

4 arguments

最初の引数が! の場合、 結果は残りの引数で構成される 3 つの引数の式の否定となります。それ以外の場合、式は上記のルールを使用して優先順位に従って解析および評価されます。

5 or more arguments

式は、上記のルールを使用して、優先順位に従って解析および評価されます。

test または [ とともに使用すると、< 演算子と > 演算子は ASCII 順序を使用して辞書順に並べ替えます。

times

シェルおよびシェルから実行されるプロセスの累積されたユーザー時間とシステム時間を出力します。戻りステータスは 0 です。

trap [-lp] [[arg] sigspec ...]

コマンド arg は、シェルがシグナル sigspec を受信したときに読み取られて実行されます。 arg が存在しない場合 (および単一の sigspec がある場合) または - の場合、指定された各信号はその値にリセットされます。元の性質 (シェルに入ったときに持っていた値)。 arg が null 文字列の場合、各 sigspec で指定されたシグナルは、シェルおよびシェルが呼び出すコマンドによって無視されます。 arg が存在せず、-p が指定されている場合は、各 sigspec に関連付けられたトラップ コマンドが表示されます。引数が指定されていないか、-p のみが指定されている場合、trap は各信号に関連付けられたコマンドのリストを出力します。 -l オプションを使用すると、シェルは信号名とそれに対応する番号のリストを出力します。各 sigspec は、<signal.h> で定義されたシグナル名、またはシグナル番号です。 シグナル名は大文字と小文字が区別されません。 >SIGプレフィックスはオプションです。

sigspec が EXIT (0) の場合、シェルの終了時にコマンド arg が実行されます。 sigspec が DEBUG の場合、コマンド arg はすべての単純なコマンドの前に実行されます。 >for コマンド、 case コマンド、 select コマンド、あらゆる算術コマンドに対して、最初のコマンドがシェル関数で実行される前に実行されます (上記のシェル文法を参照)。 DEBUG トラップへの影響の詳細については、 shopt ビルトインのextdebug オプションの説明を参照してください。sigspec がの場合。リターンすると、シェル関数またはスクリプトが実行されるたびに、 コマンドargが実行されます。または、 ソース組み込み関数の実行が終了します。

sigspec が ERR の場合、パイプライン (単一の単純なコマンドで構成される場合もあります)、リスト、または複合コマンドは、次の条件に従って、ゼロ以外の終了ステータスを返します。失敗したコマンドが、テストの一部である while キーワードまたは until キーワードの直後のコマンド リストの一部である場合、ERR トラップは実行されません。 if ステートメント。最後の && または || に続くコマンドを除く、&& または || リストで実行されるコマンドの一部。 、 パイプライン内の最後以外のコマンド、またはコマンドの戻り値が ! を使用して反転されている場合。これらはerrexit (-e) オプションに従う条件と同じです。

シェルに入るときに無視された信号は、トラップまたはリセットできません。無視されていないトラップされたシグナルは、サブシェルまたはサブシェル環境の作成時に、その環境で元の値にリセットされます。いずれかのsigspecが無効な場合、戻りステータスは false になります。それ以外の場合、トラップは true を返します。

type [-aftpP] name [name ...]

オプションを指定しない場合は、コマンド名として使用した場合に各名前がどのように解釈されるかを示します。 -t オプションが使用されている場合、type はエイリアス、キーワード、 のいずれかの文字列を出力します。 >関数、組み込み、またはファイル (名前がエイリアス、シェルの予約語、関数、組み込み、またはディスク ファイルの場合)それぞれ。 名前が見つからない場合は、何も出力されず、終了ステータス false が返されます。 -p オプションが使用されている場合、type は、name がコマンド名として指定された場合に実行されるディスク ファイルの名前を返します。 、または「type -t name」 がファイルを返さない場合は何もしません。 -P オプションは、「type -t name」 であっても各名前のパス検索を強制します。 ファイルは返されません。コマンドがハッシュされている場合、-p と -P はハッシュ値を出力します。これは必ずしも PATH の最初に現れるファイルであるとは限りません。 -a オプションを使用すると、type は name という名前の実行可能ファイルを含むすべての場所を出力します。これには、-p オプションも使用されない場合に限り、エイリアスと関数が含まれます。 -a を使用する場合、ハッシュされたコマンドのテーブルは参照されません。 -f オプションは、 コマンド組み込み と同様に、シェル関数の検索を抑制します。type は、すべての引数が見つかった場合は true を返し、引数があれば false を返します。が見つかりません。

ulimit [-HS] -a
ulimit [-HS] [-bcdefiklmnpqrstuvxPRT [limit]]

このような制御を許可するシステム上で、シェルで使用可能なリソースとシェルによって開始されるプロセスに対する制御を提供します。 -H および -S オプションは、特定のリソースにハード制限またはソフト制限を設定することを指定します。ハードリミットは、一度設定すると、root 以外のユーザーが増やすことはできません。ソフト制限はハード制限の値まで増加する可能性があります。 -H も -S も指定されていない場合は、 ソフト制限とハード制限 の両方が設定されます。 制限の値は、リソースに指定された単位の数値、またはハード、ソフト、または特別な値のいずれかになります。無制限は、それぞれ現在のハード制限、現在のソフト制限、制限なしを表します。 limit が省略された場合、-H オプションが指定されていない限り、リソースのソフト制限の現在の値が出力されます。複数のリソースが指定されている場合、制限名と単位 (該当する場合) が値の前に出力されます。他のオプションは次のように解釈されます。

-a

すべての現在の制限が報告されます。制限は設定されていません

-b

最大ソケットバッファサイズ

-c

作成されるコアファイルの最大サイズ

-d

プロセスのデータセグメントの最大サイズ

-e

最大のスケジューリング優先度 (「nice」)

-f

シェルとその子によって書き込まれるファイルの最大サイズ

-i

保留中のシグナルの最大数

-k

割り当てることができる kqueue の最大数

-l

メモリにロックできる最大サイズ

-m

常駐セットの最大サイズ (多くのシステムはこの制限を考慮しません)

-n

開いているファイル記述子の最大数 (ほとんどのシステムではこの値を設定できません)

-p

512 バイトのブロック単位のパイプ サイズ (これは設定できない場合があります)

-q

POSIX メッセージ キューの最大バイト数

-r

リアルタイム スケジューリングの最大優先度

-s

最大スタックサイズ

-t

CPU 時間の最大量 (秒)

-u

1 人のユーザーが使用できるプロセスの最大数

-v

シェルおよび一部のシステムではその子が使用できる仮想メモリの最大量

-x

ファイルロックの最大数

-P

擬似端末の最大数

-R

リアルタイム プロセスがブロックされるまでに実行できる最大時間 (マイクロ秒単位)

-T

スレッドの最大数

limit が指定され、-a オプションが使用されていない場合、limit は指定されたリソースの新しい値になります。 オプションが指定されない場合は、-f が想定されます。秒単位の -t を除き、値は 1024 バイト単位で増加します。 -R はマイクロ秒単位です。 -p は 512 バイトのブロック単位です。 -P、-T、-b、-k、-n、 -u はスケーリングされていない値です。また、posix モードの場合は、-c と -f を使用します。これらは 512 バイト単位で増加します。無効なオプションまたは引数が指定された場合、または新しい制限の設定中にエラーが発生した場合を除き、戻りステータスは 0 です。

umask [-p] [-S] [mode]

ユーザーファイル作成マスクはモードに設定されます。 モードが数字で始まる場合、8 進数として解釈されます。それ以外の場合は、chmod(1) で受け入れられるものと同様のシンボリック モード マスクとして解釈されます。 mode が省略された場合、マスクの現在の値が出力されます。 -S オプションを指定すると、マスクがシンボリック形式で出力されます。デフォルトの出力は 8 進数です。 -p オプションが指定され、mode が省略された場合、出力は入力として再利用できる形式になります。モードが正常に変更された場合、またはmode引数が指定されなかった場合、戻りステータスは 0 であり、 それ以外の場合は false です。

unalias [-a] [name ...]

定義されたエイリアスのリストから各名前を削除します。 -a を指定すると、すべてのエイリアス定義が削除されます。指定された名前が定義されたエイリアスでない場合、戻り値は true です。

unset [-fv] [-n] [name ...]

それぞれの名前について、対応する変数または関数を削除します。 -v オプションが指定されている場合、各名前はシェル変数を参照し、その変数は削除されます。読み取り専用変数の設定を解除することはできません。 -f が指定されている場合、各名前はシェル関数を参照し、関数定義は削除されます。 -n オプションが指定されており、 name がnameref 属性を持つ変数である場合、name参照する変数ではなく設定が解除されます。 -f オプションが指定されている場合、-n は効果がありません。

オプションが指定されない場合、 各名前は変数を参照します。その名前の変数がない場合、その名前の関数があれば、その関数は設定されません。設定されていない各変数または関数は、後続のコマンドに渡される環境から削除されます。 BASH_ALIASES、BASH_ARGV0、BASH_CMDS、BASH_COMMAND、BASH_SUBSHELL、のいずれかの場合>BASHPID、COMP_WORDBREAKS、DIRSTACK、EPOCHREALTIME、EPOCHSECONDS、FUNCNAME >、グループ、HISTCMD、LINENO、ランダム、秒、または > SRANDOM は設定されていないため、後でリセットされたとしても特別なプロパティを失います。

名前が読み取り専用でない限り、終了ステータスは true になります。

wait [-fn] [-p varname] [id ...]

指定された各子プロセスを待機し、その終了ステータスを返します。各idはプロセス ID またはジョブ仕様です。ジョブ仕様が指定されている場合、そのジョブのパイプライン内のすべてのプロセスが待機されます。 id が指定されていない場合、wait は実行中のすべてのバックグラウンド ジョブと、プロセス ID が $!, と同じ場合は最後に実行されたプロセス置換を待機します。 戻りステータスはゼロです。 -n オプションが指定されている場合 wait は、id のリストから 1 つのジョブを待機します。指定されていない場合は、 id が指定されると、 ジョブが完了し、その終了ステータスが返されます。指定された引数がシェルの子でない場合、または引数が指定されず、シェルに待機されていない子がない場合、終了ステータスは 127 になります。-p オプションが指定された場合、プロセスまたはジョブは終了ステータスが返されるジョブの識別子は、 オプション引数で指定された変数varnameに割り当てられます。この変数は、最初は設定が解除されます。割り当て。これは、-n オプションが指定されている場合にのみ役立ちます。ジョブ制御が有効な場合に -f オプションを指定すると、 待機が強制されます。ステータスが変更されたときに返すのではなく、 ステータスを返す前に終了するidにします。 id が存在しないプロセスまたはジョブを指定している場合、戻りステータスは 127 です。それ以外の場合、戻りステータスは、最後に待機したプロセスまたはジョブの終了ステータスです。

シェル互換モード

Bash-4.0 では、ショップ組み込みの compat31、compat32、compat40 へのオプションのセットとして指定される「シェル互換性レベル」の概念が導入されました。 、compat41など)。現在の互換性レベルは 1 つだけです。各オプションは相互に排他的です。互換性レベルは、ユーザーが現在の機能や動作を使用するためにスクリプトを移行する際に、新しいバージョンと互換性のない以前のバージョンの動作を選択できるようにすることを目的としています。これは一時的な解決策であることを目的としています。

このセクションでは、特定のバージョンの標準の動作については説明しません (たとえば、compat32 を設定すると、 正規表現一致演算子の rhs を引用符で囲むと、単語内の特殊な正規表現文字が引用されます。これは bash のデフォルトの動作です)。 3.2以降)。

ユーザーがcompat32 などを有効にすると、現在の互換性レベルまでの他の互換性レベルの動作に影響を与える可能性があります。各互換性レベルは、 そのバージョンのbash で変更された動作を制御するという考えですが、その動作は以前のバージョンにも存在していた可能性があります。たとえば、[[ コマンドでロケールベースの比較を使用するように変更されたのは bash-4.1 であり、以前のバージョンでは ASCII ベースの比較が使用されていたため、compat32 を有効にすると ASCII ベースの比較が有効になります。その粒度はすべての用途に十分ではない可能性があるため、ユーザーは互換性レベルを慎重に採用する必要があります。現在の動作を確認するには、特定の機能のドキュメントを読んでください。

Bash-4.3 では、新しいシェル変数が導入されました。

BASH_COMPAT。この変数に割り当てられた値 (4.2 などの 10 進数のバージョン番号、または 42 などのcompatNN オプションに対応する整数) によって決定されます。互換性レベル。

bash-4.4 以降、Bash は古い互換性レベルを非推奨にし始めました。最終的には、BASH_COMPAT が優先され、オプションは削除される予定です。

Bash-5.0 は最終バージョンであり、以前のバージョンには個別のショップ オプションがあります。ユーザーは、bash-5.0 以降のバージョンで BASH_COMPAT を使用する必要があります。

次の表では、各互換性レベル設定によって制御される動作の変更について説明します。 compatNN タグは、 次のいずれかを使用して 互換性レベルを NN に設定するための省略表現として使用されます。 bash-5.0 より前のバージョンの場合、互換性レベルは、対応する compatNN shopt オプションを使用して設定できます。 bash-4.3 以降のバージョンでは、BASH_COMPAT 変数が優先され、bash-5.1 以降のバージョンでは必須です。

compat31
  • [[ コマンドの正規表現一致演算子 (=~) の右側を引用しても特別な効果はありません

compat32
  • 「a ; b ; c」などのコマンド リストを中断すると、リスト内の次のコマンドが実行されます (bash-4.0 以降のバージョンでは、シェルは割り込みを受け取ったかのように動作するため、リスト内の 1 つのコマンドを中断すると中断されます)リスト全体の実行)

compat40
  • [[ コマンドの < および > 演算子は、文字列を比較するときに現在のロケールを考慮しません。 ASCII 順序を使用します。 bash-4.1 より前の Bash バージョンでは、ASCII 照合順序と strcmp(3) が使用されます。 bash-4.1 以降では、現在のロケールの照合順序とstrcoll(3) が使用されます。

compat41
  • posix モードでは、時間の後にオプションが続く場合がありますが、 予約語として<認識されます (これは POSIX 解釈 267)

  • posix モードでは、 パーサーは、 二重引用符で囲まれた部分の単語 部分に偶数個の一重引用符が存在することを要求します。 パラメータを拡張し、それらを特別に扱うため、一重引用符内の文字は引用符で囲まれたものとみなされます (これは POSIX 解釈 221)

compat42
  • 二重引用符で囲まれたパターン置換の置換文字列は、bash-4.2 以降のバージョンとは異なり、引用符の削除を受けません。

  • posix モードでは、 二重引用符で囲まれたパラメータ展開の単語部分を展開するときに一重引用符が特別なものとみなされ、閉じ中括弧やその他の特殊文字を引用するために使用できます(このこれは POSIX 解釈の一部です 221)。以降のバージョンでは、二重引用符で囲まれた単語展開内では一重引用符は特別ではありません。

compat43
  • 宣言する引数として引用符で囲まれた複合割り当てを使用しようとした場合 (declare -a foo='(1 2)')、シェルは警告メッセージを出力しません。それ以降のバージョンでは、この使用法は非推奨であることが警告されます

  • ワード拡張エラーは、posix モードであっても、現在のコマンドを失敗させる致命的ではないエラーとみなされます (デフォルトの動作では、シェルの終了を引き起こす致命的なエラーとなります)。

  • シェル関数を実行するとき、ループ状態 (while/until/など) はリセットされないため、 その関数内で中断または続行すると、 呼び出しコンテキストでループが中断されるかまたは続行されます。 Bash-4.4 以降では、これを防ぐためにループ状態をリセットします。

compat44
  • シェルは、BASH_ARGV と BASH_ARGC で使用される値を設定するため、拡張デバッグ モードが有効になっていない場合でも、シェルの位置パラメータに展開できます。

  • サブシェルは親コンテキストからループを継承するため、中断 または続行するとサブシェルが終了します。Bash-5.0 以降では、ループの状態をリセットして終了を防ぎます。

  • 属性を設定するエクスポートや読み取り専用などの組み込み関数に先行する変数の代入は、シェルが posix モードでない場合でも、呼び出し環境内の同じ名前の変数に引き続き影響します。

compat50
  • Bash-5.1 では、$RANDOM の生成方法が変更され、もう少しランダム性が導入されました。シェルの互換性レベルが 50 以下に設定されている場合、bash-5.0 以前のバージョンのメソッドに戻るため、< RANDOM に値を割り当てて乱数ジェネレーターをシードすると、同じシーケンスが生成されます。 bash-5.0/p> と同様

  • コマンド ハッシュ テーブルが空の場合、bash-5.1 より前のバージョンの bash は、入力として再利用できる出力を生成する場合でも、その旨を示す情報メッセージを出力しました。 Bash-5.1 では、-l オプションが指定されている場合にそのメッセージが抑制されます。

制限付きシェル

bash が rbash という名前で起動される場合、または呼び出し時に -r オプションが指定される場合、シェルは制限されます。制限付きシェルは、標準シェルよりもさらに制御された環境をセットアップするために使用されます。以下のことが禁止されているか、実行されないことを除いて、bash と同じように動作します。

  • cd でディレクトリを変更する

  • SHELL、PATH、HISTFILE、ENV、または BASH_ENVの値を設定または設定解除する>

  • / を含むコマンド名の指定

  • . 組み込みコマンドの引数として / を含むファイル名を指定する

  • history 組み込みコマンドの引数としてスラッシュを含むファイル名を指定する

  • hash 組み込みコマンドの -p オプションの引数としてスラッシュを含むファイル名を指定する

  • 起動時にシェル環境から関数定義をインポートする

  • 起動時にシェル環境からのSHELLOPTSの値を解析します。

  • >、>|、<>、>&、&>、および >> リダイレクト演算子を使用した出力のリダイレクト

  • exec 組み込みコマンドを使用してシェルを別のコマンドに置き換えます。

  • -f および -d オプションを使用して組み込みコマンドを enable 組み込みコマンドに追加または削除する

  • enablebuiltin コマンドを使用して無効なシェル組み込みを有効にする

  • command 組み込みコマンドに -p オプションを指定します。

  • set +r または set +o requested で制限モードをオフにします。

これらの制限は、起動ファイルが読み取られた後に適用されます。

rbash は、スクリプトを実行するために生成されたシェルの制限を無効にします。

関連項目

Bash Reference Manual, Brian Fox and Chet Ramey
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE --

http://pubs.opengroup.org/onlinepubs/9699919799/

http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)

ファイル

 /bin/bash 

bash 実行可能ファイル

 /etc/profile 

システム全体の初期化ファイル。ログイン シェルに対して実行されます。

 ~/.bash_profile 

ログインシェル用に実行される個人用初期化ファイル

 ~/.bashrc 

対話型シェルごとの個別の起動ファイル

 ~/.bash_logout 

ログイン シェルの終了時に実行される個別のログイン シェル クリーンアップ ファイル

 ~/.inputrc 

個別のreadline初期化ファイル

著者

ブライアン・フォックス、フリーソフトウェア財団
bfox@gnu.org

チェット・レイミー、ケースウェスタンリザーブ大学
chet.ramey@case.edu

バグレポート

bash でバグを見つけた場合は、報告してください。しかしまず、それが本当にバグであること、 そしてそれがbash の最新バージョンに現れることを確認する必要があります。最新バージョンはftp://ftp.gnu.org/pub/gnu/bash/からいつでも入手できます。

バグが実際に存在すると判断したら、bashbug コマンドを使用してバグ レポートを送信します。修正がある場合は、それもメールで送信することをお勧めします。提案と「哲学的」バグ レポートは、bug-bash@gnu.org にメールで送信するか、Usenet ニュースグループ gnu.bash.bug に投稿してください。 。

すべてのバグレポートには以下を含める必要があります。

The version number of bash
The hardware and operating system
The compiler used to compile
A description of the bug behaviour
A short script or `recipe' which exercises the bug

bashbug は、バグ レポートを提出するために提供されるテンプレートに最初の 3 つの項目を自動的に挿入します。

このマニュアル ページに関するコメントとバグ レポートは、chet.ramey@case.edu に送信してください。

バグ

大きすぎて遅すぎます。

bash と従来のバージョンの sh の間には微妙な違いがいくつかありますが、これは主に POSIX 仕様によるものです。

エイリアスは用途によっては混乱を招きます。

シェルの組み込みコマンドと関数は停止/再開できません。

`a ; 形式の複合コマンドおよびコマンド シーケンス。 b ; c' は、プロセスを一時停止しようとしたときに正常に処理されません。プロセスが停止すると、シェルはシーケンス内の次のコマンドをただちに実行します。コマンドのシーケンスを括弧で囲んでサブシェルに強制的に入れるだけで十分です。サブシェルはユニットとして停止できます。

配列変数は (まだ) エクスポートできない可能性があります。

アクティブなコプロセスは一度に 1 つだけです。