为什么 mkdir 不能使用通配符?

为什么 mkdir 不能使用通配符?
nathan@gentoodesktop ~/Documents $ mkdir test
nathan@gentoodesktop ~/Documents $ mkdir te*/test
mkdir: cannot create directory 'te*/test': No such file or directory
nathan@gentoodesktop ~/Documents $ cd te*
nathan@gentoodesktop ~/Documents/test $ mkdir test
nathan@gentoodesktop ~/Documents/test $ ls 
test

答案1

模式只会扩展到现存的名称,并且该模式与te*/test任何现有名称都不匹配。请注意,这te*/test是一个完整的模式,并且该te*部分不与 分开匹配/test

由于模式不匹配(并且由于未设置nullglobfailglobshell 选项),因此它不会展开并赋予mkdir,当它无法test在目录中创建子目录时,它会抱怨te*

该命令cd te*成功,因为该模式te*与现有目录的名称匹配test。如果有更多匹配的名称te*,您可能会收到来自 的错误cd

答案2

您可以使用适当的开关来调试此类问题。第一个是-v,它将产生更多输出,您可以参考。另一种是-p,如果父目录不存在,它将创建父目录。玩这两个应该会给你一个很好的教训。例如。:

mkdir -pv _dirname_

相关内容