在对Linux中的文件与目录进行管理时,cp(copy)、mv(move)、(remove)是最常用的三个命令,那么这三个命令的具体用法如何呢?
复制文件或目录:cp
cp命令的主要作用就是复制文件或目录,其命令语法为:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
可以看出,对于cp命令,源文件可以为单个文件、多个文件或目录,目标文件也可以为文件或目录;各类型源与目标命令执行结果如下:
熟悉了源与目标的匹配后,下面看一下cp命令一些主要的选项:
-a, --archive:归档,相当于-dR --perserve=all
-d:相当于--no-dereference --perserve=links,即若源文件为链接文件,则复制链接文件属性而非原文件本身
-f,--force:若目标文件已存在且无法打开覆盖,则删除目标文件后再尝试一次
-i,interactive:若目标文件(destination)已经存在时,在覆盖时会先询问
-l,--link:进行硬链接(hard link)的链接文件创建,而非复制文件本身
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
-r,-R,--recursive:递归持续复制,用于目录的复制行为
可以看到,在复制目录的过程中,源目录下的文件与子目录都被复制到目标目录中。
-s,--symbolic-link:复制成符号链接文件(symbolic link),即“快捷方式”文件
-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:如果目标文件已经存在,不会询问而直接覆盖
-i,--interactive:若目标文件(destination)已经存在时,就会询问是否覆盖
-n,--no-clobber:不覆盖已经存在的文件
-u:若目标文件已经存在,且source比较新,才会更新(update)
-v,--verbose:展示命令执行过程
移除文件或目录:rm
rm命令的主要作用就是移除文件或目录,其命令语法为:
rm [OPTION]... FILE...
对于rm命令,同样有一些命令选项:
-f,--force:强制删除,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问用户是否操作
-r:递归删除,常用于目录的删除
-v,--verbose:展示命令执行过程
通过以上叙述,我们对cp、mv、rm三个命令已有了初步了解,那么对于下面的问题应该如何解决呢?
1、使用别名命令,每日将/etc/目录下所有文件,备份到/testdir/下独立的新目录下,并要求新目录格式为backupYYYY-mm-dd,备份过程可见
[[email protected] ~]# alias xy="cp -avr /etc /testdir/backup`date +%F`"
[[email protected] ~]# alias xy
alias xy=‘cp -avr /etc /testdir/backup2016-07-28‘
2、先创建/testdir/rootdir目录,再复制/root下所有文件到该目录内,并要求保留原有权限
[[email protected] ~]# cp -pr /root /testdir/rootdir