当我输入
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)"