我正在尝试使用cp命令并强制覆盖。
我尝试过cp-rf/foo/*/bar,但仍然会提示我确认每个覆盖。
我正在尝试使用cp命令并强制覆盖。
我尝试过cp-rf/foo/*/bar,但仍然会提示我确认每个覆盖。
当前回答
对我来说最简单的方法是:
yes | cp source destination
其他回答
正如其他一些答案所指出的,您可能在某个地方使用了将cp映射到cp-i或类似的别名。通过在命令前面加一个反斜杠,可以运行没有任何别名的命令。在你的情况下,尝试
\cp -r /zzz/zzz/* /xxx/xxx
反斜杠将暂时禁用您调用的任何别名。
-n是“不覆盖”,但他的问题与你回答的完全相反。
为了避免这种确认,您可以简单地使用绝对路径运行cp命令,它将避免别名。
/bin/cp源文件目标
您可能在某处有一个别名,将cp映射到cp-i;因为使用默认设置,cp不会要求覆盖。检查你的.bashrc,你的个人资料等。
请参阅cp手册页:只有在指定-i参数时,cp才会在覆盖之前实际提示。
您可以通过别名命令进行检查:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
要取消定义别名,请使用:
$ unalias cp
所以我经常遇到这种情况,因为我将cp别名改为cp-iv,我发现了一个很好的技巧。事实证明,尽管-i和-n都取消了以前的覆盖指令,但-f没有。然而,如果您使用-nf,它将增加清除-i的能力。因此:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
很整洁啊/尸体解剖所
正如其他答案所指出的,如果cp是cp-i的别名,这可能会发生。
您可以在cp命令之前附加一个\,以使用它而不使用别名。
\cp -fR source target