在不同环境中使用 cp 的不同实现

在不同环境中使用 cp 的不同实现

所以我认为 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是点,也可以工作。

相关内容