Answers:
可以yes | cp -rf xxx yyy
,但是我的固执己见地说,如果您以root用户身份进行操作-您的.bashrc
或.profile
具有cp
to 的别名cp -i
,则大多数现代系统(主要是RH派生系统)都会对root用户配置文件进行操作。
您可以通过alias
在命令提示符处运行来检查现有别名,或which cp
仅检查的别名cp
。
如果确实定义了别名,则运行unalias cp
将取消当前会话的别名,否则可以将其从shell配置文件中删除。
你可以暂时绕过一个别名,用前缀它使用命令的非走样版本\
,如\cp whatever
¯\_(ツ)_/¯
了
(primarily RH-derivatives)
评论:)
unalias cp
并复制需要复制的内容后,可以通过执行操作将别名设置回其默认值alias cp='cp -i'
。之后,运行,alias cp
以便您可以验证它是否已恢复为默认别名。
这可能是由于cp
已被别名为引起的cp -i
。cp
直接致电应该可以:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
解决此问题的另一种方法是使用yes
命令:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yes
命令。搞笑 有一天我可能会使用它。
您可能在某处有一个别名,映射cp
到cp -i
; 因为使用默认设置,cp
不会要求覆盖。检查您的.bashrc
,您的.profile
等等。
请参见cp手册页:仅当-i
指定参数时,才会cp
在覆盖之前实际提示。
您可以通过以下alias
命令进行检查:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
要取消定义别名,请使用:
$ unalias cp
如其他答案所述,如果cp
是的别名,则可能会发生这种情况cp -i
。
您可以\
在cp
命令前附加一个,以使用它而不使用别名。
\cp -fR source target
默认情况下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
我找到了这个
'cp' -rf * /data/danalonso_testing/target/
资料来源:https : //superuser.com/questions/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
不使用别名调用命令的另一种方法是使用command
bash中的内置函数。
command cp -rf /zzz/zzz/*
-n是“不覆盖”,但他的问题与您的答复完全相反。
为了避免这种确认,您可以使用绝对路径简单地运行cp命令,它将避免使用别名。
/ bin / cp源文件目标
如果您想按原样在全局级别上保留别名,而只想更改脚本。
只需使用:
别名cp = cp
然后编写后续命令。
不是cp -i
。如果您不想被要求确认,则为cp -n
; 例如:
cp -n src dest
或目录/文件夹为:
cp -nr src_dir dest_dir
cp -i
已由系统链接到该链接,这意味着他们正试图克服默认值并强制覆盖。听起来您可能因为建议的语法而感到困惑,但-n
可以防止覆盖。