如何使用“ cp”覆盖文件?


10

使用Shell脚本或终端,如何覆盖可能存在或可能不存在的文件。我查看了cp的手册页,它说使用-f参数强制覆盖。但是,它什么也没做。

$ cp -f /path/to/source/file.txt /path/to/target

还是有另一个选择可以使用OS X中常用的内置命令行工具覆盖文件?


3
这个对我有用。尝试时它在做什么而不是覆盖?
Gordon Davisson

2
如果您无权覆盖目标文件,则此操作将失败。如果您确实要覆盖目标文件,则可以sudo在命令开头使用。但是请谨慎使用!
丹尼尔

@戈登·戴维森:这是做什么的?没有。如果mv它们存在,它将仅将文件复制到目标目录rm
rogerFernand

@Daniel Lawson:在不使用的情况下,sudo我可以使用mvrm移动或删除文件cp。使用sudo cp没有区别。
rogerFernand

越来越好奇。
丹尼尔

Answers:


14

如果不涉及别名,为什么cp会以这种方式表现,我感到很困惑。但是,为这种确切情况提供了一个快速且危险的实用程序:yes。您可以使用它将连续的肯定语流传输到任何会向您提供确认提示的命令中(您可以使用它发送任何文本,但默认值为“ y”)。

yes | cp foo bar 将执行cp命令并绕过所有确认提示。


8

它可能是由命令别名引起的。

cp直接致电,您可以使用/bin/cp src dest


1
不知道为什么这被否决了。我的印象是,显式指定-f将覆盖别名中的-i,但是我检查了但没有这样做。发布者应查明他们是否具有cp别名(类型alias cp)。他们可以在配置文件中更改别名,或按照建议使用/ bin / cp。
10

我使用的cp是Apple提供的默认设置。
rogerFernand

@octern:roger$ alias cp -bash: alias: cp: not found
rogerFernand

我不得不使用/ bin / cp我不知道为什么。
bealalex 2014年

1
我可能已经来不及了,但是对于来自搜索引擎的人来说,我可以通过执行命令来查看该命令是否具有任何别名type cp。它确实做到了。
尖叫

2
rm foo/bar/destination && cp source foo/bar/destination

首先,您删除(rm)目标,然后,如果成功(&&),则进行复制。删除文件夹时,请记住添加-rrmrm -r)。


1

我也有一个别名,弄乱了-f,直接从/ bin调用cp,一切都很好,默认情况下,有一个别名可以防止意外的覆盖/删除,这很好,因此最好不要删除它。

。#别名

别名cp ='cp -i'

如前所述,-i标志取代-f,该标志不允许以下命令按预期执行。

。#/ bin / cp -fauv src dst

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.