Linux 使用cp命令的错误
2016-01-20 00:00
411 查看
昨天维护的编译软件出了一个奇怪的问题,功能大概是这样的:
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命令,不会有这样的问题。
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命令,不会有这样的问题。
相关文章推荐
- centos7 ssh设置
- centos7安装wine1.8
- linux win1.8安装
- linux dnf命令安装
- linux每天习惯一个命令之who
- Linux知识工具大全
- Linux编程简介——静态链接库和动态链接库
- Linux账号密码过期会导致crontab作业不能执行
- linux下红黑树使用实例
- Linux驱动开发之主设备号找驱动,次设备号找设备
- CentOS 6.7安装配置Ansible
- linux下C 信号集处理函数
- centos6.x上编译安装crtmpserver
- Linux中断处理驱动程序编写【转】
- mysql在centos下的安装
- Linux下ifconfig的简易实现
- 基于tiny4412的Linux内核移植(支持device tree)(二)
- 利用Linux内核编译输出信息构建内核源码树
- Linux运维工程师的十个基本技能点
- linux安装VNC