Linux 基础教程

Linux 参考手册

Linux 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/linux-force-cp-to-overwrite-without-confirmation.html

linux cp 复制命令强制覆盖不提示的方法

linux cp 复制命令用法详解 linux cp 复制命令用法详解


Linux cp 复制命令如果想要跳过是否覆盖提示的方法,可以使用强制复制的选项 -f,但是实际使用时,有可能失效,还会一如既往地弹出提示,那是为什么呢?

解决方法

首先说明一下加 -f 选项也会提示的原因是,当前 linux 针对 cp 命令起了一个别名,可以通过 alias 查看:

[knowledgedict@Linux ~]# alias
alias cp='cp -i'
alias rm='rm -i'
alias vi='vim'
...

发现 cp 命令对应了一个别名 cp -i-i 选项强制弹出提示交互信息,所以 -f 参数此时会失效。

了解了原因之后,我们列出了 3 个解决方案

  1. 对别名动手脚;
  2. 命令最前面加反斜杠 \ 即可跳过别名生效范围;
  3. 第三个方法非常骚,通过 yes 命令和管道命令 | 传 y 信息给 cp 命令,达到自动确认的功能。

个人推荐第二种方式,因为绝大数情况下提示信息是有必要的,修改别名会对全局有效,可以针对自身需要局部加反斜杠就可以。

命令前加反斜杠

[knowledgedict@Linux ~]# \cp knowledge.json dict.json

使用 -f 选项(修改 cp 别名,如果必要)

一般别名配置是在 ~/.bashrc 文件,可以直接在 cp 别名行加 # 号禁用,如下:

# alias cp='cp -i'
alias rm='rm -i'
alias vi='vim'
...

设置完后,重新登录即可生效,此时用 -f 选项即可达到强制复制的功能。

[knowledgedict@Linux ~]# cp -f knowledge.json dict.json

yes 命令结合管道命令

通过 yes 命令和管道命令 | 传 y 信息给 cp 命令,达到自动确认的功能:

[knowledgedict@Linux ~]# yes | cp knowledge.json dict.json