我试图理解 bash 中点的重要性以及它与星号的不同之处。有人可以详细说明一下吗?例如,cp -ar /foo/. /foo2/
和之间有什么区别cp -pr /foo/* /foo2/
答案1
点(.
)只是.
目录中的目录,与目录本身相同(ls -la /foo
将向您显示)。因此,如果您foo/.
在其他地方复制,您将有效地复制下面的所有树foo
,而不复制foo
其自身(您将其复制到foo2/.
与 相同的位置foo2
)。
/foo/*
由 shell 扩展到 中的非隐藏文件和目录列表/foo
,因此它也会将相同的目录结构复制/foo
到 中/foo2
,但 dotfiles/dotdirs 除外。实际上,cp
会收到(潜在的)许多争论。如果列表太大,甚至可能导致执行cp
失败。