简介

linux 中使用 cp -fr ...,即使加了 -f 强制覆盖还是会提示是否覆盖,在复制多个文件的时候要一个一个地敲 y,效率非常低,下面介绍如何解决 cp 命令无法强制覆盖的问题。

方法一、取消别名

我们输入 alias 命令,可以看到系统给 cp 起了一个别名。

  1. $ alias
  2. alias cp='cp -i'
  3. alias egrep='egrep --color=auto'
  4. alias fgrep='fgrep --color=auto'
  5. alias grep='grep --color=auto'
  6. alias l.='ls -d .* --color=auto'
  7. alias ll='ls -l --color=auto'
  8. alias ls='ls --color=auto'
  9. alias mv='mv -i'
  10. alias rm='rm -i'

发现系统给 cp 命令起了 cp -i 别名,也就是说我们输入 cp 命令时,其实等同于输入了 cp -i 命令,通过 man cp 命令查看帮助文档得知 -iinteractive prompt before overwrite 覆盖之前提示的意思,所以我们加了 -fr 也无法强制覆盖。
解决方法是用 unalias 命令把别名取消:

  1. $ unalias cp

这下用 cp -fr ... 就可以强制覆盖了。

方法二、直接调用系统可执行文件

使用 which 命令查看 cp 命令的可执行文件位置:

  1. $ which cp
  2. /usr/bin/cp

直接使用 cp 的可执行文件 /usr/bin/cp 进行复制文件操作:

  1. $ /usr/bin/cp -fr ... ...

方法三、使用管道自动输入

使用管道自动输入一大堆 yes

  1. $ yes|cp -fr ... ...

参考:https://www.cnblogs.com/yorkyang/p/6518083.html