Linux CP 命令强制覆盖

mgs2002 2020年07月14日 56次浏览

Linuxcp是用来进行文件或者目录的复制,是比较常用的命令。

基础用法

cp 参数(可选) 源文件/目录 备份文件/目录

参数说明

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件

使用示例:

//将halo-latest.jar复制重命名为halo-latest20200714.jar
[root@iZuf65uszna3wogdpm327kZ halo]# cp halo-latest.jar halo-latest20200714.jar
[root@iZuf65uszna3wogdpm327kZ halo]# ls
halo-latest20200714.jar  halo-latest.jar  halo-latest.jar.bak  

强制覆盖

因为cp操作有一定危险性,所以如果被复制的文件和已有文件同名时会提示用户是否覆盖当前文件
cp覆盖提示.png
从上图可以看出,cp默认是会提示用户是否覆盖当前文件,需手动一个一个去确认。

平时使用 cp 命令,虽然没有添加任何参数 ,但系统默认会在我们使用 cp 命令时自动添加 -i 参数
可通过输入alias查询重命名方法:
[root@iZuf65uszna3wogdpm327kZ halo]# alias
alias cp='cp -i'
....省略其他方法

当复制文件夹和大量文件时,一个一个去确认会很麻烦,有两种解决方法。

  1. 注释掉系统重命名
[root@iZuf65uszna3wogdpm327kZ halo]# vim ~/.bashrc

里面找到alias cp=’cp -i这一行加#号注释,然后保存退出,如图。
屏蔽cp重命名.png

  1. cp命令前加斜杠\
[root@iZuf65uszna3wogdpm327kZ halo]# \cp halo-latest.jar halo-latest20200714.jar 

\这个是转义符,可以把别名取消

  1. 临时取消cpalias
[root@iZuf65uszna3wogdpm327kZ halo]# unaslias cp