回答:
>
これはデフォルトの継続プロンプトです。これは、前に入力したものに不均衡な引用符があった場合に表示されるものです。
例として、コマンドラインに単一引用符を入力し、その後にいくつかのenter
キーを入力します。
$ '
>
>
>
次のいずれかになるまで継続プロンプトが表示されます
(a)引用符を閉じてコマンドを完了します
または
(b)Ctrl+ Dを入力して入力を終了します。この時点で、シェルは不均衡な引用符に関するエラーメッセージで応答します。
または
(c)Ctrl+ Cを入力すると、入力したコマンドが中止されます。
場合によっては、埋め込まれた改行を含む文字列を入力することもできます。次のようにできます。
$ paragraph='first line
> second line
> third line
> end'
これで、そのシェル変数を表示すると、プロンプトは消えたが改行が保持されていることがわかります。
$ echo "$paragraph"
first line
second line
third line
end
コマンドに閉じられていない引用符がある場合に発生します。それは次のようなものです:
$ echo "test here
>
>
...
引用符を閉じることで、そのモードを終了できます("
または'
、または開いている引用符が何であれ)。それはまた、ブレース区切りブロック、部分的に完全であり得るfor-do
か、while-do
ループ、又は特定の他の構築物。を押しCtrl-Cてこのコマンドをキャンセルすることもできます(その後、押しUpて修正します)。
これは、予期しない場所でパラメーターまたは履歴の展開が発生したときに、明らかな引用符なしで発生することがあります。
>
あなたのであるPS2
(「二次プロンプト」)値。これを別のものに変更して、何が起こったかを思い出させることができます。
PS2="Unclosed >"
代わりに各行の先頭に.bashrc
印刷しますUnclosed >
。
答えは、Bashリファレンスマニュアルのこの不可解な言及にあります。
5.1 Bourneシェル変数
[...]
PS1
:プライマリプロンプト文字列。デフォルト値は '\s-\v\$
'です。表示される前に展開されるエスケープシーケンスの完全なリストについては、「プロンプトの印刷」を参照してくださいPS1
。PS2
:2次プロンプト文字列。デフォルト値は '>
'です。
…に続いて:
6.3.3対話型シェルの動作
- Bash
PS1
は、コマンドの最初の行をPS2
読み取る前に展開して表示され、複数行のコマンドの2番目以降の行を読み取る前に展開して表示します。
したがって、>
を押すEnterとプロンプトが表示され、Bashはコマンドが不完全であると判断します。その理由は次のとおりです。
\
。これは行の継続として扱われます。$()
、()
、``
。for
ループ、while
ループ、またはを開始しましたcase
。意図しない入力エラーが原因でセカンダリプロンプトが表示されている場合は、ヒットControlCしてプライマリプロンプトに戻ります。