专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。
写shell脚本文件时,如何避免cp文件时有同名文件的提示呢?这道题会告诉大家为什么?
当前目录下有文件quesiton/test,从root文件夹复制test文件到文件夹question,让其直接覆盖但是不进行任何的提示。
首先我们按照正常的操作来看:
原来Linux担心我们会不小心错误的覆盖文件,通过别名把cp 改成了cp -i 让我们覆盖前确认,我们怎样取消这个限制呢,在shell脚本中我们可以通过两种方式避免该问题。
1. 使用cp的全路径
以上两种方法都能避开此问题,你现在知道了吗?
使用cp命令的-n参数。
使用cp命令的-n参数即可跳过相同的文件 。
将源文件复制至目标文件,或将多个源文件复制至目标目录。
等于--preserve=模式,所有权,时间戳-preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳)。
显示此帮助信息并退出--version 显示版本信息并退出。
默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用-sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文建为稀疏件。使用--sparse=never 参数禁止创建稀疏文件。
当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。
有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件是同一个已存在的一般文件的话,cp 会将源文件备份。
学的虽是计算机网络,但是读的书很多也很杂也是一知半解,所以到现在我也不知道我有啥能力!只知道努力!
1、使用cp命令的-n参数即可跳过相同的文件 。
2、cp命令使用详解:
将源文件复制至目标文件,或将多个源文件复制至目标目录。
2)、长选项必须使用的参数对于短选项时也是必需使用的。
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
-H 跟随源文件中的命令行符号链接
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
--parents 复制前在目标目录创建来源文件路径中的所有目录
--help 显示此帮助信息并退出
3)、默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
4)、当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。
变量来选择。以下是可用的变量值:
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
6)、有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。
我看了下scp的man手册页,发现没有参数支持跳过相同文件,sorry 你用scp应该是在不同机子上复制,不过你可以通过scp先拷贝到目标主机另外 一个目录,然后通过/bin/cp命令拷贝到到最终的目标目录,因为cp在系统中 使用了别名
linux 的命令建议参考linux就该这样学等书籍,这样才能提高工作效率,希望能够帮助你
①-i 可以选择是否覆盖相同文件
②-a 直接全属性cp过去