关于Linux的拷贝命令我们都知道cp的参数 -f的意思是:
-f, --force if an existing destination file cannot be opened, remove it and try again
也就是说-f可以覆盖目的目录下有的文件,
但你有没有发现过这种情况,即使使用了-f也无法覆盖?
原因何在呢?
默认cp命令是有别名(alias cp='cp -i')的,无法强制覆盖,即使你用 -f 参数也无法强制覆盖文件。
方法1:
可以使用cp 执行cp命令时不走alias
实例如下:
cp -rf www1/* /home/www2/
方法2:
临时取消cp的alias
#unalias cp
#cp -rf www1/* /home/www2/
方法3:
自动入输Y
echo Y | cp -rf www1/* /home/www2/
方法4:
修改配置文件
vi ~/.bashrc
在alias cp=’cp -i’前加上”#”注释掉这行,:wq!保存推出,然后重新登陆就可以了。
方法5:
修改
~/.bash_profile文件的最后一行添加如下内容
unalias cp
然后使用下面的命令使其生效
$ . ~/.bash_profile
方法6:
恢复cp原始状态 alias cp ='cp'
具体方法可能还有许多,就不再啰嗦了,一般来说直接cp 绕过alias就可以了
cp (复制档案或目录)命令参数
参数:
-a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制
);
-p :连同档案的属性一起复制过去,而非使用预设属性;
其他参数意义:
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u :若 destination 比 source 旧才更新 destination。