2012-12-13 39 views
8

我想将某个文件复制到某个位置,而不管目标中是否存在该文件。我试图通过shell脚本复制,但该文件没有被复制。我使用下面的命令复制并覆盖shell脚本中的文件

/bin/cp -rf /source/file /destination

,但不起作用。

+0

也许你应该试着--remove目的地 – jDourlens

+1

'cp'覆盖目标除非给出选项“-n”,所以你的命令应该成功。你也没有告诉我们为什么你认为你的命令失败了。 – scai

+0

是否有任何错误消息? –

回答

8

这个问题已经讨论过,但是你可以写这样的小脚本:

#!/bin/bash 
if [ ! -d "$2" ]; then 
    mkdir -p "$2" 
fi 
cp -R "$1" "$2" 
6

使用

cp -fr /source/file /destination 

这也许应该解决的问题。

13

您的问题可能是由默认情况下在系统中创建的cp命令的别名引起的(您可以通过键入“别名”来查看别名)。 例如,我的系统默认具有以下alis:alias cp ='cp -i',其中-i覆盖-f选项,即cp将始终提示您进行覆盖确认。

你在这种情况下需要什么(即使你没有别名,它也会工作)是向该确认提供“是”。要做到这一点,只需修改您的cp命令,看起来像这样:

yes | CP /源/文件/目的

+0

完美,谢谢你的支持! –

1

/斌/ CP -rf SRC DST 或 在/ usr/bin中/ env的CP -rf

+1

你能解释为什么它的工作,而不是OP的代码? – Math

+0

这是因为OP可能在不知不觉中将cp别名为'cp -i',我认为一些(所有?)系统将优先考虑-i选项。例如,在我的系统: '>其中CP 别名CP = 'CP -i' \t/bin中/ CP > CP的abc.txt efg.txt CP:覆盖'efg.txt'? n > cp -f abc.txt efg.txt cp:覆盖'efg.txt'? N' – verboze