gpt4 book ai didi

bash - 使用 cp 在命令行复制目录时出错

转载 作者:行者123 更新时间:2023-11-29 09:25:36 25 4
gpt4 key购买 nike

Mac OS X Yosemite v.10.10.5。

我正在尝试使用 cp 命令将一个 Git 目录复制到另一个目录。

这个命令行语句:
cp -r /path/to/dir/from/ /path/to/dir/to/
返回此错误:
cp: /path/to/dir/to/.git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128: Permission denied

对于目录中的每个文件(我相信,但尚未验证,是),每次都会返回一次此错误。

我第一次运行命令时,它按预期正常工作,没有错误。但是,在没有对任何文件进行任何更改的情况下,我第二次(以及后续)运行该命令时,出现了错误。

这是怎么回事?我该如何解决这个问题?

编辑:

回应评论中的一个问题:

What does ls -l /path/to/dir/to/.git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128 show?

答案是它显示:

-r--r--r-- 1 myusername staff 6151 May 6 00:45 /path/to/dir/to/.git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128

最佳答案

您得到 Permission Denied 的原因是因为您正试图覆盖已存在于目标目录中且已设置只读权限的文件。由于您似乎正在尝试覆盖它,因此您可以删除目标目录(如果它在复制操作之前存在)。此外,您应该使用 -R,而不是 -r ...

Historic versions of the cp utility had a -r option. This implementation supports that option; however, its use is strongly discouraged, as it does not correctly copy special files, symbolic links, or fifo's.

使用这样的命令应该可以解决您的问题:

[[ ! -d dest ]] || rm -rf dest ; cp -R src dest

上面检查 dest 是否存在;如果确实递归删除它,则将 source 复制到 dest

关于bash - 使用 cp 在命令行复制目录时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37080976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com