如何停止cp:覆盖“ ./xxx”?提示


19

如何停止提示覆盖的cp命令。我想覆盖所有文件,而不必继续回到终端。由于这些文件很大,因此需要一些时间才能完成。

我尝试使用-f选项。它仍然询问我是否要覆盖。

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y

Answers:


17

除了呼叫之外/bin/cp,您还可以执行以下操作之一:

\cp -f ...
command cp -f ...

但是,我同意,您不应该习惯于使用别名,例如- cp -irm -i-如果您坐在其他外壳上,将不会获得依赖的安全网。


1
A whereis cp将显示命令在哪里。因此,您将能够调用真实的命令而不是别名。
AnthonyB

12

看到这个解决方案之后。我可以看到,别名别名功能引起了问题。 http://systembash.com/content/prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

他建议

unalias cp

我仍然想保留别名,只是不希望它应用于此实例。我的解决方案是使用具有完整路径的二进制文件,从而避免别名别名功能接管。效果很好。

/bin/cp -f /media/somedir/somefiles* .  

4

不幸的是,在Linux上,复制“ cp”命令没有选择自动回答“ y”或“ n”答案的选项。根据您要执行的操作,有不止一种解决方案。一种解决方案是使用Unix的“是”命令。该命令将重复输出一个字符串,直到被杀死为止。

如果我们要覆盖目标目录中的所有文件,则可以使用“ yes”命令以“ y”回答所有问题。“ y”是默认值,因此不必指定。

yes | cp source/*.txt destination/.

如果我们要避免覆盖目标目录中的任何文件,则可以使用“ yes”命令回答所有带有“ n”的问题。

yes n | cp source/*.txt destination/.

使用“ man yes”获得有关“ yes”命令的更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.