Linux与运维

Linux cp 强制覆盖目录与文件不提示确认的正确姿势:\cp

在 Linux 终端中同步或覆盖更新文件时,使用 cp -rf dir1/* dir2/ 经常会遇到系统疯狂弹出 cp: overwrite 'file'? (y/n) 确认提示,即使用了 -f 强制参数也无济于事。本文解释该现象的根源并提供优雅解法。


一、 为什么加了 -f 依然会提示确认?

大多数 Linux 发行版(Ubuntu、CentOS、Debian)在 ~/.bashrc 中默认给 cp 命令设置了别名(Alias):

alias cp='cp -i'

参数 -i(interactive)代表交互模式,无论命令行是否指定 -f,别名中的 -i 优先级依然会导致每次覆盖触发询问。


二、 真正一键静默覆盖的 3 种解法

解法 1:使用反斜杠转义(最推荐,单次生效)

\cp -rf /source/dir/. /target/dir/

解法 2:使用绝对路径调用

/bin/cp -rf /source/dir/. /target/dir/