在对Linux中的文件与目录进行管理时,cp(copy)、mv(move)、(remove)是最常用的三个命令,那么这三个命令的具体用法如何呢?

  复制文件或目录:cp

  cp命令的主要作用就是复制文件或目录,其命令语法为:

    cp [OPTION]... [-T] SOURCE DEST

    cp [OPTION]... SOURCE... DIRECTORY

    cp [OPTION]... -t DIRECTORY SOURCE...

  可以看出,对于cp命令,源文件可以为单个文件、多个文件或目录,目标文件也可以为文件或目录;各类型源与目标命令执行结果如下: Linux文件与目录管理之:cp,mv,rm_cp

  熟悉了源与目标的匹配后,下面看一下cp命令一些主要的选项:

    -a, --archive:归档,相当于-dR --perserve=all

    -d:相当于--no-dereference --perserve=links,即若源文件为链接文件,则复制链接文件属性而非原文件本身

    Linux文件与目录管理之:cp,mv,rm_rm_02

    -f,--force:若目标文件已存在且无法打开覆盖,则删除目标文件后再尝试一次

    Linux文件与目录管理之:cp,mv,rm_cp_03

    -i,interactive:若目标文件(destination)已经存在时,在覆盖时会先询问

    -l,--link:进行硬链接(hard link)的链接文件创建,而非复制文件本身

    Linux文件与目录管理之:cp,mv,rm_cp_04

    -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)

    -r,-R,--recursive:递归持续复制,用于目录的复制行为

    Linux文件与目录管理之:cp,mv,rm_cp_05

    可以看到,在复制目录的过程中,源目录下的文件与子目录都被复制到目标目录中。

    -s,--symbolic-link:复制成符号链接文件(symbolic link),即“快捷方式”文件

    Linux文件与目录管理之:cp,mv,rm_mv_06

    -u,--update:若destination比source旧或destination丢失才复制更新destination

    -v,--verbose:展示命令执行过程

  移动或重命名文件:mv

  mv命令的主要作用就是移动或重命名文件(当源文件与目标文件在同一目录时,相当于重命名),其命令语法为:

    mv [OPTION]... [-T] SOURCE DEST

    mv [OPTION]... SOURCE... DIRECTORY

    mv [OPTION]... -t DIRECTORY SOURCE...

  由命令语法可以看出,mv命令与cp命令的语法大致相同,对于各类型源与目标的命令执行结果,可参考cp命令,就不再赘述。同样的,mv命令也有一些命令选项:

    -f,--force:如果目标文件已经存在,不会询问而直接覆盖

    Linux文件与目录管理之:cp,mv,rm_rm_07

    -i,--interactive:若目标文件(destination)已经存在时,就会询问是否覆盖

    -n,--no-clobber:不覆盖已经存在的文件

    Linux文件与目录管理之:cp,mv,rm_mv_08

    -u:若目标文件已经存在,且source比较新,才会更新(update)

    -v,--verbose:展示命令执行过程

  移除文件或目录:rm

  rm命令的主要作用就是移除文件或目录,其命令语法为:

    rm [OPTION]... FILE...

  对于rm命令,同样有一些命令选项:

    -f,--force:强制删除,忽略不存在的文件,不会出现警告信息

    -i:互动模式,在删除前会询问用户是否操作

    -r:递归删除,常用于目录的删除

    Linux文件与目录管理之:cp,mv,rm_cp_09

    -v,--verbose:展示命令执行过程

  通过以上叙述,我们对cp、mv、rm三个命令已有了初步了解,那么对于下面的问题应该如何解决呢?

    1、使用别名命令,每日将/etc/目录下所有文件,备份到/testdir/下独立的新目录下,并要求新目录格式为backupYYYY-mm-dd,备份过程可见

    [root@luolmcentos7 ~]# alias xy="cp -avr /etc /testdir/backup`date +%F`"

    [root@luolmcentos7 ~]# alias xy

    alias xy='cp -avr /etc /testdir/backup2016-07-28'

    2、先创建/testdir/rootdir目录,再复制/root下所有文件到该目录内,并要求保留原有权限

    [root@luolmcentos7 ~]# cp -pr /root /testdir/rootdir