简介
在 linux
中使用 cp -fr ...
,即使加了 -f
强制覆盖还是会提示是否覆盖,在复制多个文件的时候要一个一个地敲 y
,效率非常低,下面介绍如何解决 cp
命令无法强制覆盖的问题。
方法一、取消别名
我们输入 alias
命令,可以看到系统给 cp
起了一个别名。
$ alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
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 -i
别名,也就是说我们输入 cp
命令时,其实等同于输入了 cp -i
命令,通过 man cp
命令查看帮助文档得知 -i
是 interactive prompt before overwrite
覆盖之前提示的意思,所以我们加了 -fr
也无法强制覆盖。
解决方法是用 unalias
命令把别名取消:
$ unalias cp
方法二、直接调用系统可执行文件
使用 which
命令查看 cp
命令的可执行文件位置:
$ which cp
/usr/bin/cp
直接使用 cp
的可执行文件 /usr/bin/cp
进行复制文件操作:
$ /usr/bin/cp -fr ... ...
方法三、使用管道自动输入
使用管道自动输入一大堆 yes
:
$ yes|cp -fr ... ...