unix 命令的解析方式:"rm" 和 "cp"

How parsing works for unix commands: "rm" and "cp"

我们正在执行以下命令

rm -f $folder_name/filename*

cp $folder_name1/filename1* $folder_name/

检查执行日志后,我们得到以下命令执行

rm -f '/home/user/file*'

cp /home1/user1/file1* /home/user/

为什么 rm 使用单引号而不是 cp 命令执行?

您可能正在检查 bash -x 的输出,它在参数周围添加单引号只是为了消除歧义。但是您显示的代码无法产生您描述的输出结果。

rm wildcard*
如果通配符匹配,

将扩展为 rm 和匹配的文件。但是,如果 不是 ,则扩展将等同于

'rm' 'wildcard*'

我在其中添加引号只是为了表明不会进行进一步的评估,类似于 bash -x(以及至少 sh -x 的某些变体)所做的。