MvG*_*MvG 10 cp shell-script coreutils
cp
如果目标文件已经存在,有没有办法让(来自 Linux 上的 GNU coreutils)返回一个非零值?
或者是否有任何其他常用的小实用程序并提供此功能?
这在 shell 脚本中很有用,可以自动复制文件而不会意外丢失任何内容,也无需用户交互。通过将副本与原件进行比较可以获得类似的结果,但我希望有一个更简单的解决方案。
一些cp
实现,包括 GNU cp
,有一个非标准的-n
开关来不破坏文件(如果它存在)。但 GNU无论如何都会cp
返回0
。
您可以在 shell 脚本中使用 if 语句来测试文件是否存在,然后再将某些内容复制到该文件中:
if [ -e /path/to/file ]
then
exit 1
else
cp file /path/to/file
fi
Run Code Online (Sandbox Code Playgroud)
或者如果你想要一个函数,你可以使用这样的东西:
function cpa(){
if [ -e "$2" ]
then
exit 1
else
/bin/cp "$1" "$2"
fi
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
(set -C && cat < /path/to/src > /path/to/dest)
Run Code Online (Sandbox Code Playgroud)
但它不会复制除文件内容之外的任何内容(不是像某些cp
实现那样复制权限、所有权或稀疏性)。