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

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


当前回答

cp -u ...
cp --update ...

同样有效。

其他回答

它不是cp-i。如果您不想被要求确认,它是cp-n;例如:

cp -n src dest

或者在目录/文件夹的情况下:

cp -nr src_dir dest_dir

如果您想在全局级别保持别名不变,并且只想更改脚本。

只需使用:

别名cp=cp

然后编写后续命令。

所以我经常遇到这种情况,因为我将cp别名改为cp-iv,我发现了一个很好的技巧。事实证明,尽管-i和-n都取消了以前的覆盖指令,但-f没有。然而,如果您使用-nf,它将增加清除-i的能力。因此:

cp -f /foo/* /bar  <-- Prompt
cp -nf /foo/* /bar <-- No Prompt

很整洁啊/尸体解剖所

另一种不使用别名调用命令的方法是使用bash中内置的命令。

命令cp-rf/zzz/zzz/*

您可能在某处有一个别名,将cp映射到cp-i;因为使用默认设置,cp不会要求覆盖。检查你的.bashrc,你的个人资料等。

请参阅cp手册页:只有在指定-i参数时,cp才会在覆盖之前实际提示。

您可以通过别名命令进行检查:

$ alias
alias cp='cp -i'
alias diff='diff -u'
....

要取消定义别名,请使用:

$ unalias cp