协慌网

登录 贡献 社区

如何强制 cp 覆盖而无需确认

我正在尝试使用cp命令并强制覆盖。

我已经尝试过cp -rf /foo/* /bar ,但是仍然提示我确认每个覆盖。

答案

您可以做yes | cp -rf xxx yyy ,但是我的 gutfeeling 说,如果您以 root 身份执行 - 您的.bashrc.profile具有cp -i cp别名,大多数现代系统(主要是 RH 派生系统)都会对 root 概要文件执行此操作。

您可以通过在命令提示符alias来检查现有的别名which cp别名来检查cp

如果确实定义了别名, unalias cp将会取消该别名,否则,您只需将其从 Shell 配置文件中删除即可。

\来临时绕过别名并使用命令的非别名版本,例如\cp whatever

这可能是由于cp已经被别名为cp -i 。直接调用cp应该可以:

/bin/cp -rf /zzz/zzz/* /xxx/xxx

解决此问题的另一种方法是使用yes命令:

yes | cp -rf /zzz/zzz/* /xxx/xxx

正如其他一些答案所指出的那样,您可能在将cp映射到cp -i或类似名称的地方使用了别名。您可以通过在命令前面加上反斜杠来运行不带任何别名的命令。在您的情况下,请尝试

\cp -r /zzz/zzz/* /xxx/xxx

反斜杠将暂时禁用您称为cp任何别名。