服务器:Linux系统利用cp命令实现强制覆盖功能的方法

发布时间:2021-09-23

  前言

  

  cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

  

  语法

  

  cp(选项)(参数)

  

  选项

  -a:此参数的效果和同时指定-dpR参数相同;

  -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;

  -f:强行复制文件或目录,不论目标文件或目录是否已存在;

  -i:覆盖既有文件之前先询问用户;

  -l:对源文件建立硬连接,而非复制文件;

  -p:保留源文件或目录的属性;

  -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;

  -s:对源文件建立符号连接,而非复制文件;

  -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;

  -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;

  -b:覆盖已存在的文件目标前将目标文件备份;

  -v:详细显示命令执行的操作。

  参数

  

  源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;

  

  目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

  

  利用cp命令实现强制覆盖功能

  

  我们平常在Linux中使用 cp 命令时,会发现将一个目录中文件复制到另一个目录具有相同文件名称时,即使添加了 -rf 参数强制覆盖复制时,系统仍然会提示让你一个个的手工输入 y 确认复制,所添加的rf参数是不起作用的。

  

  强制复制

  

  建议大家使用方式一,因为取消别名的话很容易造成风险,万一又忘记恢复别名,以后的复制都不会有提示信息。

  有提示信息可以多一层保险嘛,是人都会有犯混的时候,给自己加一个保险,有保障呀.

  

  方式一

  

  使用原生的cp命令

  

  /bin/cp -rf xxxx

  方式二

  

  取消cp命令别名

  

  unalias cp

  去掉 cp 命令的别名,这时你再用 cp -rf 复制文件时,就不会要求确认啦.

  

  复制完成后恢复别名

  

  alias cp=cp -i

  

注册即送1000元现金券