入力したものはバックティックです。これは、コマンドとして入力したものを評価するために bash する命令の始まりです。 >
が表示され、次の行にまだコマンドを入力していることを示します。
バックティックを閉じると、コマンド全体が実行されることがわかります。例
~$ cd `
> echo /var`
/var$
JohnC の回答では、すでにバックティックについて説明しています。しかし、あなたが疑問に思っているのは >
です 促す。これは継続プロンプトであり、バックティックによってトリガーされるだけでなく、常に コマンドの入力が完了していないことをシェルが明確に認識している場合。最も簡単な例は、明示的な行継続 \
を置くことです 入力行の最後 (長い入力を分割するのに役立ちます):
$ echo \
> hallo
PS1
と同じように注意してください コマンド プロンプトの外観を制御します。PS2
を設定することもできます 継続プロンプトを変更します。例:
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
継続する理由はたくさんあります。単一のバッククォートは不完全ですが、次のようなものを入力することもできます
ls -l `which cp`
1 行で (補足:$(
を使用することをお勧めします) と )
代わりに、括弧は展開の開始点と終了点を明確にしますが、単一のバッククォートはどこが欠けているかを確認するのをより困難にします.そしてネスト...)。継続プロンプトのその他の考えられる理由:
- 欠落している
done
while
以降 またはfor
- 欠落している
fi
if
の後 - 欠落している
esac
case
の後 - 閉じ括弧の欠落。サブシェル内
(cd $HOME; cat .bashrc)
|
をパイプした後のコマンドの欠落 条件付き実行||
そして&&
(&
ではありません ただし、これはコマンドをバックグラウンドで実行しているだけなので)- 最後の引用符がありません (
'
または"
)
不思議なことに、括弧 }
がありません 変数展開後 ${
継続プロンプトも表示されますが、スペースが挿入されているために失敗します:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution
これは、コマンドがまだ完了していないことを意味します。実際、文字バッククォート `
、インライン コマンドを区切るために使用されます。
例:
cd /tmp # Go to /tmp
pwd # Prints the current working directory
ls `pwd` # Lists the content of the current working directory