linux常用命令学习(八) -- cp

cp, copy之意,用于文件或目录的复制。注意:一般情况下,使用命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,无论是否使用 -i 参数。但是在shell脚本中执行cp时,如果没有-i参数,则不会询问是否覆盖-命令行和shell脚本的执行方式有些不同。

命令格式

cp [选项] 源文件或目录 目标目录

常用命令参数

参数功能
-a–archive ;等同于-dR; 复制整个目录,包括目录中的子目录等都递归的复制,同时保持文件的访问模式,所有者,时间戳等属性与原文件一样。
-b–backup ; 删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录
-f–force; 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i若目标文件已存在时,询问是否覆盖
-u如果目标文件已存在,且source比较新时,才会覆盖。
-v–verbose, 详细显示进行的步骤。

示例

  • cp demo1.log ../demo2
    将目录demo1下的文件demo1.log复制到demo2文件夹下。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@kvm45072 demo1]# ll
    total 8
    drwxr-xr-x. 2 root root 4096 Apr 29 16:03 demo-1
    -rw-r--r--. 1 root root 10 Apr 29 16:29 demo1.log
    [root@kvm45072 demo1]# cp demo1.log ../demo2
    [root@kvm45072 demo1]# cd ../demo2
    [root@kvm45072 demo2]# ll
    total 4
    -rw-r--r--. 1 root root 10 Apr 29 16:31 demo1.log
    [root@kvm45072 demo2]#
  • cp -f demo1.log ../demo2
    目标文件存在时,会询问是否覆盖。因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖。
    1
    2
    [root@kvm45072 demo1]# cp -f demo1.log ../demo2
    cp: overwrite `../demo2/demo1.log'?