bash命令中该点的含义是什么?它与星号有何不同?


11

我试图了解bash中点的重要性以及它与星号的区别。有人可以详细说明吗?例如,cp -ar /foo/. /foo2/和之间有什么区别cp -pr /foo/* /foo2/

Answers:


12

点(.)只是.目录内的目录,该目录与目录本身相同(ls -la /foo将向您显示)。因此,如果您将其复制foo/.到其他地方,则可以有效地复制下面的所有树,foo而无需复制foo自身(将其复制到foo2/.与相同的树foo2)。

/foo/*被shell扩展到中的非隐藏文件和目录的列表/foo,因此除了dotfiles / dotdirs之外,它还会将相同的目录结构复制/foo/foo2中。有效地,cp将(可能)接收许多参数。如果列表太大,甚至可能导致执行cp失败。


对不起,但是我很困惑。因此,从本质上讲,星号会使命令递归执行?换句话说cp -r /foo/*,和一样cp /foo/* 吗?
Mike B

5
@MikeB,不,shell仅扩展/ foo目录中的文件列表。它不会改变cp的行为。使用set -xecho cp -pr /foo/* /foo2查看正在发生的事情。重要的是要意识到,是外壳扩展了通配符。cp没有看到星星。
斯特凡Chazelas

那这个呢?chmod 755 -R。与chmod 755 -R *
未来之路
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.