简介
在 linux 中使用 cp -fr ...,即使加了 -f 强制覆盖还是会提示是否覆盖,在复制多个文件的时候要一个一个地敲 y,效率非常低,下面介绍如何解决 cp 命令无法强制覆盖的问题。
方法一、取消别名
我们输入 alias 命令,可以看到系统给 cp 起了一个别名。
$ aliasalias 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 ... ...
