在Bash中,空格“ ”和反斜杠空格“\ ”有什么区别?

4

" "\在bash中有什么区别吗?

例如,对我来说,ls *" "*ls *\ *返回的结果相同。

2个回答

8

""版本会在解析引号内的变量/运算符时产生微小的开销。反斜杠空格版本将被视为只有一个字面上的空格,没有额外的开销。然而,除非它在运行kajillions次的循环内部,否则两者之间的实际CPU时间/内存使用成本将是微不足道的。


0

反斜杠只能掩盖下一个字符,如果你只想掩盖一个字符,可能会更快地输入,但这取决于你的键盘布局以及你是否盲打十指。我更喜欢引号,因为它们更容易输入。

相互和自身的掩盖是另一个区别:

echo \\

会输出一个反斜杠,但是

echo "\"

将输出一个双引号,并等待闭合引号。

echo \"

这将起作用并输出一条引用,但是

echo """ 

出于上述原因,不会执行。

一些特殊字符,如换行符、换页符、制表符、警报等只能用反斜杠来生成,而不能用引号,包括反斜杠本身。

/bin/echo -e "\tfoo\abar\bbar\ffoo\nbar\rfoo"

查看 man echo 以获取完整列表。

这不仅适用于 echo,还适用于许多在脚本中使用字符串的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接