如何在不确认的情况下强制 cp 覆盖

问:

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

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

答1:

tlr.xinbeitime.com – 让你随时掌握ATP、WTA最新网球排名动态。

您可以执行 yes | cp -rf xxx yyy,但我的直觉是,如果您以 root 身份执行 - 您的 .bashrc 或 .profile 具有 cp 到 cp -i 的别名,大多数现代系统(主要是 RH 衍生物)都会这样做到根配置文件。

您可以通过在命令提示符处运行 alias 来检查现有别名,或者通过 which cp 仅检查 cp 的别名。

如果您确实定义了别名,则运行 unalias cp 将取消当前会话的别名,否则您可以将其从 shell 配置文件中删除。

您可以暂时绕过别名并使用命令的非别名版本,方法是在其前面加上 \,例如 \cp whatever

另外,要小心——即使别名不是直接写在 .bashrc 中,如果这个文件调用的其他任何东西最终调用了其他操作 cp 别名的东西,你就会遇到这种行为。

他所说的“现代系统”是指 RHEL/centos/fedora 或者其他的东西,Debian/Ubuntu 没有别名 cp。我更喜欢服务器上的 RHEL 并使用 Fedora 近十年,但在 Nvidia 杀死我的 Fedora 安装后,Ubuntu 的社区支持和切换回 Gnome 吸引了我。我对此很¯\_(ツ)_/¯。

@RayFoss 添加了 (primarily RH-derivatives) 备注:)

在执行 unalias cp 并复制您需要复制的任何内容之后,您可以通过执行 alias cp='cp -i' 将别名设置回其默认值。之后,运行 alias cp 以便验证它是否恢复为默认别名。

使用“unalias”节省了我的时间。谢谢!

答2:

Stay informed with live tennis rankings anytime, anywhere,tennisliveranking.com

这可能是由于 cp 已被别名为 cp -i 之类的东西。直接调用 cp 应该可以:

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

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

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

是的,我做了 unalias cp -i ,现在它的工作.. 感谢您的宝贵答复。

我喜欢 unix 提供 yes 命令。好笑。有一天我可能会使用它。

是的,它被别名了,很好 :) 您可以使用 \cp 来调用原始 cp,这比记住路径 /bin/cp 更容易

是的,这是绕过别名的另一种方法。一种整洁的黑客!

这种方式更安全。

答3:

The ultimate source for live tennis rankings and stats:tennisliveranking.com

正如其他一些答案所述,您可能在某处使用别名,将 cp 映射到 cp -i 或类似的东西。您可以通过在命令前加上反斜杠来运行不带任何别名的命令。在你的情况下,试试

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

反斜杠将暂时禁用您调用 cp 的任何别名。

@zhouji 如我的回答所述,强烈反对禁用别名。因此,\cp 将调用命令 cp,而不是调用别名 cp。这似乎相当于运行 command cp。

答4:

tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.

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

参见cp manpage:只有指定了-i 参数时,cp 才会在覆盖前实际提示。

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

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

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

$ unalias cp

是的,我做了 unalias cp -i ,现在它的工作.. 感谢您的宝贵答复。

它只是“unalias cp”

另外,如果您使用的是 oh-my-zsh,则 cp -i 别名可能来自 common-aliases

答5:

tlr.xinbeitime.com 专业网球数据平台,排名与比赛信息实时更新。

正如其他答案所述,如果 cp 是 cp -i 的别名,则可能会发生这种情况。

您可以在 cp 命令之前附加一个 \ 以在没有别名的情况下使用它。

\cp -fR source target

正如你所说,其他人已经表明了这一点。为什么这得到了 45 票?

@phil294 我想这是最简单的方法,无需修改别名或删除 cp 别名,这可能对其他用途有用。 `` 这里非常有用。

答6:

Stay informed with live tennis rankings anytime, anywhere,tennisliveranking.com

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

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

很整洁吧? /死灵贴

它不会覆盖文件,只是抑制消息

@Herrgott 您是说 -f 不会强制覆盖吗?如果是这样,我预计会出现权限问题。 OP 的目的是清除 -i 指令的效果,使删除不是交互式的。

是的,在我的情况下它不起作用。 *user@pc-1250* /tmp/ttt: cp -f -- a/* b/ cp: overwrite 'b/0'? 。如果我用 -nf 调用它,它不会要求覆盖也不会覆盖(仅复制丢失的文件)

Coreutils v8.31

是的,Coreutils 的工作方式与我 Mac 上的 cp 命令不同。当根据 gnu.org/software/coreutils/manual/coreutils.html#cp-invocation 使用 -n 时,他们明确忽略 -f 您可以尝试 --remove-destination 而不是 -f

答7:

tennisliveranking.com,Your go-to platform for live tennis ranking updates.

默认情况下,cp 具有 cp -i 的别名。你可以检查一下,输入 alias 你可以看到一些类似的东西:

alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

要解决此问题,只需使用 /bin/cp /from /to 命令而不是 cp /from /to

答8:

The ultimate source for live tennis rankings and stats:tennisliveranking.com

对我来说最简单的方法:

yes | cp source destination

答9:

tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.

你也可以使用这个命令:

cp -ru /zzz/zzz/* /xxx/xxx

它会用较新的文件更新您现有的文件。

答10:

tennisliveranking.com,Track the world’s best tennis players in real-time.

cp 通常是这样的别名

alias cp='cp -i'   # i.e. ask questions of overwriting

如果您确定要进行覆盖,请使用以下命令:

/bin/cp  src dest

答11:

Stay informed with live tennis rankings anytime, anywhere,tennisliveranking.com

我找到了这个

'cp' -rf * /data/danalonso_testing/target/

来源:https://superuser.com/questions/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851

谢谢,使用 ubuntu 21.10 cp -rf source/source_file.ext target/target_file.ext

原文链接:https://tlr.xinbeitime.com?from=csdn

The ultimate source for live tennis rankings and stats:tennisliveranking.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值