端末に「>」プロンプトが繰り返し表示されるのはなぜですか?

端末に「>」プロンプトが繰り返し表示されるのはなぜですか?

さて、いくつかのコマンドを間違った方法(タイプミスなど)で実行すると、端末は次のように出力されます。>代わりにcomputername:workingfolder username$Enterを入力すると、次のようになります。

>

>

>

Enterを3回押すと終了です。

答え1

>デフォルトの継続プロンプトです。前の入力に不均衡な引用符がある場合は、このプロンプトが表示されます。

たとえば、コマンドラインに一重引用符といくつかのキーを入力しますenter

$ '
> 
> 
> 

続行するように求められます。

  • (a)閉じる引用符を使用してコマンドを完了します。

    または

  • (b) Enter Ctrl+D入力完了。この時点で、シェルは不均衡な見積もりに関するエラーメッセージで応答します。

    または

  • (c)Ctrl+を入力すると、入力中Cのコマンドが中断されます。

何が役に立つの?

場合によっては、挿入された改行文字を含む文字列を入力したい場合があります。次のようにこれを行うことができます。

$ paragraph='first line
> second line
> third line
> end'

シェル変数を表示するとプロンプトは消えましたが、改行文字は保存されていることがわかります。

$ echo "$paragraph"
first line
second line
third line
end

答え2

コマンドに閉じられていない引用符がある場合、これが発生する可能性があります。このように:

$ echo "test here
>
>
...

引用符を閉じる(または開いている引用符を作成して)、このモードを終了でき"ます'。中かっこで区切られたブロック、部分完了、for-doまたはwhile-doループ、またはその他の構造にすることもできます。を押してCtrl-Cコマンドをキャンセルすることもできます(次に[Up編集]を押します)。

引用符が明確に欠けていない場合でも、これが発生する可能性があります。範囲または歴史拡張は予期しない場所で発生します。


これは>あなたでしょうPS2(「助け」)価値。何が起こったのかを思い出させるために他のものに変更することができます。

PS2="Unclosed >"

注記各行の先頭に.bashrc印刷するようにしてください。Unclosed >

答え3

他の回答に加えて、行\の最後の文字としてaと入力すると、プロンプトが表示されます。

答え4

シェルは、ユーザーがコマンドを完了するのを待ちます。どこかに完了していない参照があるか、「for」ループを開始し、ユーザーが入力を完了するのを待っていると思うかもしれません。

関連情報