我想将某个文件复制到某个位置,而不管该文件是否已存在于目标中。我正在尝试通过 shell 脚本进行复制。但是文件没有被复制。我正在使用以下命令
/bin/cp -rf /source/file /destination
但这不起作用。
利用
cp -fr /source/file /destination
这应该可以解决问题。
您的问题可能是由系统中默认创建的 cp 命令的别名引起的(您可以通过键入“alias”来查看所有别名)。比如我的系统默认有以下alis:alias cp='cp -i',其中-i覆盖-f选项,即cp会一直提示覆盖确认。
在这种情况下,您需要的(即使您没有别名也可以使用)是向该确认提供“是”。为此,只需将您的 cp 命令修改为如下所示:
是的 | cp /源/文件/目标
这个问题已经讨论过了,但是你可以写一个像这样的小脚本:
#!/bin/bash
if [ ! -d "$2" ]; then
mkdir -p "$2"
fi
cp -R "$1" "$2"
#!/bin/bash
: 告诉您的计算机使用bash
解释器。
if [ ! -d "$2" ]; then
:如果您提供的第二个变量不存在...
mkdir -p "$2"
:创建该目录,包括路径中提供的任何父目录。
运行mkdir -p one/two/three
将使:
$ mkdir -p one/two/three
$ tree one
one/
└── two
└── three
如果您不提供标签,那么如果目录不存在,-p
您将收到错误消息:one
two
$ mkdir one/two/three
mkdir: cannot create directory ‘one/two/three’: No such file or directory
fi
: 关闭if语句。
cp -R "$1" "$2"
: 将文件从您提供的第一个变量复制到您提供的第二个变量的目录。
因此,如果您运行script.sh mars pluto
,mars
将是第一个变量 ( $1
) 并且pluto
将是第二个变量 ( $2
)。
该-R
标志意味着它递归地执行此操作,因此该cp
命令将遍历第一个变量中的所有文件和文件夹,并将它们复制到第二个变量的目录中。
/bin/cp -rf src dst 或 /usr/bin/env cp -rf