当我打字
cd `
Run Code Online (Sandbox Code Playgroud)
进入终端,然后我得到这个
>
Run Code Online (Sandbox Code Playgroud)
甚至ls或cd不工作。尝试在>提示符下运行这样的命令只会给出另一个>提示。
请解释上述命令的含义。我该如何退出它?
Kul*_*lfy 13
反引号成对起作用。Bash 正在等待您提供另一个反引号来完成命令/表达式。
>只是换行的提示,由PS2.bashrc中通常定义的值决定。
每当您点击时Enter(如果命令/表达式不完整,即反引号未关闭),bash 期望您在一行或多行中完成命令/表达式。例如,您想使用 来评估 'a' 的值expr。你可以做
$ a=`
> expr 1 + 3`
Run Code Online (Sandbox Code Playgroud)
将被解释为
$ a=`expr 1 + 3`
Run Code Online (Sandbox Code Playgroud)
因此,如果您想运行某些命令,要么完成所需的表达式,要么在反引号之间不需要命令/表达式,请不要使用它。另一种方法是使用Ctrl+ C,但这将是键盘中断,并使您的命令立即终止。
要了解有关反引号的更多信息,请阅读有关 U&L 的这些问题:了解反引号和`(反引号/反引号)在命令中的含义是什么?
反引号创建了一个称为命令替换的执行环境。它是这样使用的,例如:
echo "The date today is `date`"
Run Code Online (Sandbox Code Playgroud)
在这里,date命令首先被执行,它的输出替换了反引号之间的部分,所以最后你会得到一个带有当前日期的字符串。
命令替换可能跨越多行,因此当您键入时:
cd `
Run Code Online (Sandbox Code Playgroud)
并按Enter,bash 期望您在执行cd命令之前完成命令替换。这可以通过关闭反引号并按Enter或按CTRL-来破坏c(这将中止命令而不执行任何操作)。
请注意,现代指南倾向于避免命令替换的反引号语法,$( )而是使用反引号语法,因此第一个示例是:
echo "The date today is $(date)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1809 次 |
| 最近记录: |