私は誤って端末にcd `を入力しましたが、端末で何か奇妙なことが起こりました。
入力が必要なように、次の行に「>」記号が追加され、その後にカーソルが追加されます。私が何を入力しても、コマンドを終了するまで同じ操作が続行されます。
気になって何が起こりましたか?これはバグか機能ですか?
答え1
あなたが見ている効果は、シェルが別のバックティックを期待しているからです。たとえば、(
(または他の不完全なコマンド)を入力してReturnコマンドラインを押すと、同じ効果が得られます。
あなたが受け取るプロンプト>␣
は次のとおりです。2番目の通知に保存されているように、$PS2
シェルは最後にコマンドを完了するためにより多くの対話型入力が必要な場合にこのプロンプトを使用します。
一例:
bash-4.4$ for i in {0..10..2}
> do
> printf 'Hello %d\n' "$i"
> done
Hello 0
Hello 2
Hello 4
Hello 6
Hello 8
Hello 10
bash-4.4$
bash-4.4$
私のものになる主なヒント()、最初の行で[次へ]を押すと、$PS1
2番目のプロンプトが表示されます。これまでに入力したコマンドが完了していないためです。 after キーを押すと、コマンドが完了するまで各行に補助プロンプトが表示されます(これにより、シェル入力の for ループが完了します)。Return{0..10..2}
Returndone
これレベル3のヒント($PS3
、通常#?␣
)はキーワードで使用されますがselect
、4元1ヒント$PS4
(通常+␣
)シェルオプションがに設定されている場合は、出力を追跡するために使用されます。xtrace
set -x
1 はい、言葉を探す必要があります。
答え2
ここに回答しましたすでに...本質的に
バックティック間に入力した内容は、基本コマンドの前にシェルで評価(実行)されます。