Linux如何强制覆盖文件

最近在 非交互式shell 中执行 cp 命令时,遇到了个坑,由于目标文件已存在,cp 命令出现交互式输入,要求确认是否执行强制覆盖,但由于是非交互式 shell,无法操作。查看 cp 命令的文档后发现,cp 命令可以进行强制覆盖,只需要执行 cp -rf <source> <target> 即可,但是在 shell 中输入强制覆盖的指令后,依然无法成功复制。经过折腾,终于找到了原因,记录一下解决方案和爬坑过程。

解决方案

解决方案一:使用原生CP命令
/bin/cp -rf <source> <target>

解决方案二:取消别名

1
2
3
$ unalias cp
$ cp -rf <source> <target>
$ alias cp='cp -i'

无法强制覆盖的原因

部分 linux 机器在配置命令别名时,会将 cp 命令配置为 cp -i,其中,-i 表示交互式模式,因此,当目标文件已存在时,会出现交互式输入,要求用户输入是否执行强制覆盖。

当出现使用 linux 命令但未获得预期结果时,可执行 alias 查看当前命令是否为 别名,然后再做后续排查,避免掉入别名带来的天坑中。

owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%