问:
我正在尝试使用 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