cp -R foo/ 和 cp -R foo/* 有什么区别

Bar*_*zek 2 linux unix bash command-line asterisk

我注意到,每当我使用命令时,cp -R foo/*我都会复制除文件之外的所有内容,例如.env或可能.gitignore

解决方案是使用cp -R foo/它处理整个目录,但这并没有改变我仍然不理解使用*字符的行为的事实。

为什么一个*角色不会捕获像.env?

操作系统是 Debian

xen*_*oid 5

  • cp -R foo/ 递归复制下面的所有内容 foo/
  • cp -R foo/*递归复制所有匹配的文件和目录foo/*。并且默认情况下不包括带点的名称(ls *也不会列出它们)。这在此处进行了解释(以及有关前导点的其他一些小细节)。

除了处理带前导点的文件之外,另一个区别是cp -R foo/*将单个文件和目录复制foo/到目标目录中,同时在目标目录中cp -R foo/复制foo/.