通常我们在Linux中执行mvcp命令操作文件时,如果遇到target文件已存在,那么就会给出提示,是否确认覆盖,从操作安全来说,这个很有必要,因为曾经我就遇到过同事不小心将2.dbf文件覆盖到1.dbf,导致oracle数据丢失的操作。但是如果存在大量的文件,以及递归很深的文件类操作,每个文件都需要确认就有点麻烦了,在Linux中并没有桌面环境那种记住上次选择的操作,所以我们就需要使用如下方式来解决了。

首先,查看mvcp的使用,发现使用了-i参数才会有这种确认操作,看来Linux已经添加了默认的alias:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color'
alias fgrep='fgrep --color'
alias grep='grep --color'
alias l='ls -AFhlt'
alias l.='ls -d .* --color=auto'
alias lh='l | head'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

方法一

在cp命令前加入\即可实现。

1
\cp -rf source target

个人也是比较推崇这种方法。

方法二

将系统默认的alias注释了。

1
2
3
4
5
6
7
8
9
[root@localhost ~]# vi ~/.bashrc        
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
-alias cp='cp -i'
+# alias cp='cp -i'
alias mv='mv -i'

这种方式虽然也能解决问题,但是如果使用完成后忘记了将其恢复,那么往后有可能会出现cp错文件直接覆盖的问题,所以不太建议第二种。