以下在 Fedora 和 CentOS 中的行为相同。
cd mydirectory
Run Code Online (Sandbox Code Playgroud)
作品。
cd notadirectory
Run Code Online (Sandbox Code Playgroud)
有效(从 Bash 获取错误)。
然而,
cd `
Run Code Online (Sandbox Code Playgroud)
给了我某种提示:
>
Run Code Online (Sandbox Code Playgroud)
我想输入的任何内容都没有给出任何响应,它只是转到下一行再次提示。我只是使用CTRL+C退出回到我的root@localhost
.
这样做的目的是什么,人们可以用它做什么?
谢谢!
小智 123
您输入的是反引号- 它是 bash 评估您作为命令输入的内容的指令的开始。该>
显示指示你还在下一行输入命令。
如果关闭反引号,您会发现整个命令都将运行。例如
~$ cd `
> echo /var`
/var$
Run Code Online (Sandbox Code Playgroud)
Tob*_*ler 59
JohnC 的回答已经解释了反引号。但是您还想知道的是>
提示。这是一个继续提示,它不仅由反引号触发,而且总是在您的 shell 清楚地知道您没有完成输入命令时触发。最简单的例子是\
在输入行的末尾放置一个显式的续行(这有助于拆分长输入):
$ echo \
> hallo
Run Code Online (Sandbox Code Playgroud)
请注意,就像PS1
控制命令提示符的外观一样,您也可以设置PS2
更改继续提示符,例如
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
Run Code Online (Sandbox Code Playgroud)
持续发生的原因有很多。单个反引号是不完整的,但您也可以输入类似
ls -l `which cp`
Run Code Online (Sandbox Code Playgroud)
在一行中(旁注:建议使用$(
and)
代替,因为括号使扩展开始和结束的位置一目了然,而单个反引号使您更难看到缺少的位置。和嵌套......)。继续提示的其他可能原因:
done
后while
或for
fi
后if
esac
后case
(cd $HOME; cat .bashrc)
|
以及条件执行||
和&&
(未&
不过,因为这只是做在后台运行的命令)'
或"
)奇怪的是,}
变量展开后缺少大括号${
也会导致继续提示,但会因插入空格而失败:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14119 次 |
最近记录: |