“cd `”(反引号)命令导致“>”,为什么以及如何退出它?

“cd `”(反引号)命令导致“>”,为什么以及如何退出它?

当我输入

cd `

进入终端,然后我得到这个

>

甚至ls或都cd不起作用。尝试在>提示符下运行这样的命令只会给出另一个>提示符。

请解释一下上述命令的含义。我该如何退出它?

答案1

反引号成对使用。Bash 正在等待您提供另一个反引号来完成命令/表达式。

>只是一个换行提示,它由PS2.bashrc 中通常定义的值决定。

每当您按下 时Enter(如果命令/表达式不完整,即反引号未关闭),bash 都会要求您在一行或多行中完成命令/表达式。例如,您想使用 来评估“a”的值expr。您可以这样做

$ a=`
> expr 1 + 3`

将被解释为

$ a=`expr 1 + 3`

因此,如果您想运行某个命令,请完成所需的表达式,或者如果反引号之间不需要命令/表达式,请不要使用它。另一种方法是使用Ctrl+ C,但那将是键盘中断并将使你的命令立即终止。

要了解有关反引号的更多信息,请阅读 U&L 上的以下问题:理解反引号命令中的 `(反引号/反引号)是什么意思?

答案2

反引号创建了一个称为命令替换的执行环境。它的用法如下,例如:

echo "The date today is `date`"

这里,date首先执行命令,其输出替换反引号之间的部分,因此最终您会得到一个包含当前日期的字符串。

命令替换可能跨越多行,因此当您输入:

cd `

然后按Enter,bash 要求您在执行命令之前完成命令替换cd。可以通过关闭反引号并按Enter或按CTRL-来打破这一c局面(这将中止命令而不执行任何操作)。

请注意,现代指南倾向于避免使用反引号语法进行命令替换,而是使用$( ),因此第一个例子是:

echo "The date today is $(date)"

答案3

>是对更多输入的请求。

在这种情况下,需要输入命令的名称。这是因为你按下了,`这告诉 shell 命令名称是即将关注

摆脱这种事故最简单的方法是按Ctrl+ C

相关内容