linux 下文件夹的复制、覆盖以及确认问题解决

来源:互联网 发布:立讯精密 知乎 编辑:程序博客网 时间:2024/06/06 05:46

在项目中有个这样的需求就是在每次编译后将某个文件夹下的文件替换为一个固定文件夹下的文件,如果没有那就直接复制了,但是如果有那就麻烦了,他会一个个问你是否要覆盖,这样是不是很麻烦,下面我们用小demo来学习一下:

1、正常复制命令:

cp -rf /www/cms.whd.com/conf/  mycms/
-r 是递归的意思,会把问价下的子文件目录都会复制

-f 参数是强制复制,比如你在a文件中有个文件名叫b,然后你把c文件夹里面的另一个文件名叫做b的复制到a里面,这个时候回冲突,然后会提示你要不要继续复制,加上-f就不会提示你了。

但是当我们执行上面的那个命令时还是会提示你要不要覆盖,这是因为系统中设置了别名:

[root@sjhl-wn-cms01v cms.fang.com]# alias alias cp='cp -i'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'

其中就有cp 当我们执行 cp -f时 就相当于执行了 cp -if  所以会询问你要不要覆盖,当然了如果只是很少的手动修改那可以如果量大了那就很麻烦,所以可以做如下处理:

1、修改文件(不太推荐,太危险了)

[root@sjhl-wn-cms01v whd.com]# sudo vim  ~/.bashrc# .bashrc# User specific aliases and functionsalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'# Source global definitionsif [ -f /etc/bashrc ]; then        . /etc/bashrcfi
如果不需要的的话可以把     alias cp='cp -i'  使用 # 注释掉


2、直接使用命令实现(推荐)

 \cp -rf /www/cms.whd.com/conf/  /www/cms.manager/core/conf/
如果写在脚本中可以使用下面的方式 $(pwd) 或者 $`pwd` 来获取当前的目录路径

 \cp -rf /www/cms.whd.com/conf/ $(pwd)/target/cms.manager/bdp/core/conf/
我们看到 只是在命令前加了一个反斜杠(\),这样就不会再次确认了,而且只在命令中起作用比较好。

0 0