2016-12-26 54 views

回答

2

shell变量逐字扩展,所以您应该使用带引号的选项。假设您的$ HOME变量等于/Users/rocket spacer。在这种情况下,运行rm -rf /Users/rocket spacerrm -rf "/Users/rocket spacer"之间的区别。第一个尝试删除当前目录中的两件事:/Users/rocketspacer。第二个选项会做你想做的,并删除目录/Users/rocket spacer。一般来说,当展开一个表示路径的shell变量时,你应该用引号将它包装起来,这样你就不必担心任何被误解的可能性。

+0

此外,我看到另一种报价,'报价,而不是单引号'。在这个答案中可以看到http://unix.stackexchange.com/a/84980。我什么时候使用它? – rocketspacer

+1

这就是所谓的反引号,它里面的所有内容都会被评估,然后代入你的bash命令。例如,如果你想打印出“我的名字是”和当前用户的名字,你可以运行echo“我是'whoami'” –

+0

不幸的是,在我上面的评论中,反引起了“whoami”格式化为代码,但我的意思是运行:echo“我(反向)whoami(反向)” –