Answers:
你输入的内容是反引号 - 它是bash评估你输入命令的指令的开始。该>
显示指示你还在下一行输入命令。
如果你关闭反引号,你会发现整个命令都会运行。例如
~$ cd `
> echo /var`
/var$
cd `dirname \`which ls\``
= cd到“ls”二进制文件所在的目录。(即,cd /bin
因为它是/bin/ls
)[编辑:phew,逃避降价
$()
到``
。你的例子(加上正确的引用)会变得cd "$(dirname "$(which ls)")"
更加疯狂。
$()
反引号。
JohnC的回答已经解释了反击。但你也想知道的是>
提示。这是一个延续提示,它不仅由反引号触发,而且总是当你的shell明确知道你没有完成输入命令时。最简单的例子是\
在输入行的末尾放置一个显式的行继续(这有助于拆分长输入):
$ echo \
> hallo
请注意,就像PS1
控制命令提示符的外观一样,您也可以设置PS2
更改延续提示,例如
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
继续发生的原因有很多。单个反引号不完整,但您也可以输入类似的内容
ls -l `which cp`
在一行中(旁注:建议使用$(
而)
不是,因为括号使得扩展开始和结束的位置变得明显,而单个反引号使得更难以看到缺少的位置。并且嵌套......)。继续提示的其他可能原因:
done
后while
或for
fi
后if
esac
之后case
(cd $HOME; cat .bashrc)
|
,以及条件执行||
和&&
(未&
不过,因为那只是让在后台运行的命令)'
或"
)奇怪的是,}
变量扩展后缺少的括号${
也会导致延续提示,但由于插入的空间而失败:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution