linux cp 命令 错了,Linux 使用cp命令的错误

昨天维护的编译软件出了一个奇怪的问题,功能大概是这样的:

1、下载资源和代码;

2、编译;

3、将需要打包的文件复制到临时目录打包。

后来由于新需求,修改了一下功能,在复制到临时目录之前还有回去一些资源到临时目录:

2.5、下载三方资源到临时目录。

增加此功能后错误就出现了,复制的临时目录的结构全乱了,比如:

java/bin应复制到temp/bin,结果去错误的复制到了temp/bin/bin。

看到此问题我以为是2.5步骤中下载的资源包目录有问题,将功能运行到2.5步停止查看目录无问题,保留第3步把2.5删除也无问题,唯独这些一起运行就有问题,而且windows系统下没问题,Linux却有问题。

后来一位前辈想到了问题的原因,linux系统下面调用了cp命令来复制文件和文件夹,问题就出在这里。

调用的命令 cp -arf srcdir destdir

-a是要复制链接文件,有些生僻,-r递归-f强制较常见。

从srcdir到destdir有讲究。举例子来说:

cp -arf java/bin temp/bin 有两种情况的复制:

a.复制前 若temp/bin不存在,则将java/bin直接复制到temp,即temp/bin就是java/bin;

b.复制前 若temp/bin存在,则将java/bin复制到temp/bin/中,即temp/bin/bin才是java/bin。

之前没有2.5步temp下的bin不存在所以不会有问题,加入2.5步使得bin目录存在了所以导致复制出错。

解决方式是这样复制

cp -arf java/bin temp/

这样不论怎样都会正确,注意temp后一定要加/。

另外,windows下使用的是xcopy命令,不会有这样的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值