我正在尝试使用cp
命令并强制覆盖。
我尝试了cp -rf /foo/* /bar
,但仍然提示我确认每次覆盖。
答案 0 :(得分:960)
你可以yes | cp -rf xxx yyy
,但我的诅咒说,如果你以root用户身份执行 - .bashrc
或.profile
的别名为cp
到{{1}大多数现代系统(主要是RH衍生系统)对根配置文件执行此操作。
您可以通过在命令提示符处运行cp -i
来检查现有别名,或alias
仅检查which cp
的别名。
如果您确实定义了别名,则运行cp
将取消当前会话的别名,否则您只需将其从您的shell配置文件中删除即可。
您可以暂时绕过别名并使用命名的非别名版本,前缀为unalias cp
,例如\
答案 1 :(得分:243)
这可能是由于cp
已经被cp -i
等名称所造成的。直接致电cp
应该有效:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
解决此问题的另一种方法是使用yes
命令:
yes | cp -rf /zzz/zzz/* /xxx/xxx
答案 2 :(得分:101)
正如其他一些答案所述,你可能会在某个地方使用别名来映射cp
到cp -i
或类似的东西。您可以通过在其前面加上反斜杠来运行没有任何别名的命令。在您的情况下,请尝试
\cp -r /zzz/zzz/* /xxx/xxx
反斜杠会暂时禁用您调用cp
的任何别名。
答案 3 :(得分:52)
您可能在别处有别名,将cp
映射到cp -i
;因为使用默认设置,cp
不会要求覆盖。检查您的.bashrc
,.profile
等
请参阅cp manpage:仅当指定-i
参数时,cp
才会在覆盖前实际提示。
您可以通过alias
命令检查:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
要取消定义别名,请使用:
$ unalias cp
答案 4 :(得分:41)
正如其他答案所述,如果cp
是cp -i
的别名,则可能会发生这种情况。
您可以在\
命令之前附加cp
,以便在没有别名的情况下使用它。
\cp -fR source target
答案 5 :(得分:18)
默认情况下,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
答案 6 :(得分:12)
所以我经常遇到这个问题,因为我将cp别名保留为cp -iv
,并且发现了一个巧妙的技巧。事实证明,尽管-i
和-n
都取消了先前的覆盖指令,但-f
却没有。但是,如果您使用-nf
,则可以清除-i
。所以:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
整洁漂亮吧? / necropost
答案 7 :(得分:8)
cp
通常是这样的别名
alias cp='cp -i' # i.e. ask questions of overwriting
如果您确定要进行覆盖,请使用:
/bin/cp <arguments here> src dest
答案 8 :(得分:6)
cp -u ...
cp --update ...
也有效。
答案 9 :(得分:5)
您也可以使用此命令:
cp -ru /zzz/zzz/* /xxx/xxx
它会使用较新的文件更新现有文件。
答案 10 :(得分:5)
在没有别名的情况下调用命令的另一种方法是在bash中使用command
内置函数。
command cp -rf /zzz/zzz/*
答案 11 :(得分:4)
我发现了
'cp' -rf * /data/danalonso_testing/target/
答案 12 :(得分:2)
-n是“不要覆盖”,但他的问题与你回答的完全相反。
为了避免这种确认,您可以简单地使用绝对路径运行cp命令,它将避免使用别名。
/ bin / cp sourcefile destination
答案 13 :(得分:2)
如果您希望将别名保持在全局级别,只想更改脚本。
只需使用:
alias cp = cp
然后编写你的后续命令。
答案 14 :(得分:0)
我只是使用unalias来删除&#34; cp -i&#34;别名,然后执行复制,然后设置别名。 :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
不是最漂亮的代码,但易于设置和高效。我还检查别名已经用简单的
设置了alias |grep cp
答案 15 :(得分:-2)
不是cp -i
。如果您不想被要求确认,
它是cp -n
;例如:
cp -n src dest
或者目录/文件夹是:
cp -nr src_dir dest_dir