所以我认为 GNU 的 cp 与 OSX(BSD)不同。
尽管 OSX 会复制以斜杠结尾的目录的内容,或者不带斜杠的目录本身,但 GNU/Linux 只是将其视为somedir
相同somedir/
(即复制目录)。
这很烦人,因为现在我的一个 shell 脚本如下所示:
# copy the contents of somedir in $path
if [ "$(uname -s)" = "Darwin" ] ; then
cp -R somedir/ $path
else
cp -R --no-target-directory somedir $path
fi
它能起到作用,但是我觉得有点笨重。
那么有没有更好的方法?也许有些命令可以在不同的操作系统上通用?
答案1
我找到了一个解决方案(感谢@glenn jackman):
mkdir -p "$path"
cp -R "path/to/somedir/". "$path"
唯一的区别是我使用了.
来代替*
,以复制隐藏文件。
这似乎在 Ubuntu 和 OSX 上都有效。如果$path
是点,也可以工作。