linux cp 强制覆盖不生效的解决办法

在linux中,拷贝并覆盖文件,我们用 cp -f source dest 这个命令,其中 -f 表示就是强制覆盖而不用提示。

但是,你能发现提示是否覆盖还是弹出来了,这是为什么呢?

因为在linux在登录 login shell 的时候,会自动运行 ~/.bashrc 这个文件中的:
alias rm=’rm -i’
alias cp=’cp -i’
alias mv=’mv -i’
所以,仅仅用 cp -f,实际上是 cp -i -f, 而 i 和 f 两者是互斥的,默认linux就选择了 -i。

那么应该怎样才能强制覆盖而不会弹出提示呢?可以用下面的3种方法:
1,unaslias cp (这只是临时取消cp的别名,不是永久的),然后再 cp -f source dest 就可以了。
2,\cp -f source dest ,这个效果就等同于上面,反斜杠表示取消cp的别名。
3,yes|cp -fr source dest,使用管道自动输入yes。这个 yes 特别有意思,假如在控制台中直接输入yes,就可以发现很有趣的现象,不断地输出y。查看一下yes –help,能发现y是可以换成其他字符串的。

发表评论

邮箱地址不会被公开。 必填项已用*标注