天天一个linux命令-cp

cp命令用于文件及目录的复制,是linux经常使用的命令之一,通常状况下,shell会设置一个别名alias cp='cp -i',在命令行下复制文件时,若是目标文件已经存在,就会询问是否覆盖,无论你是否使用-i参数。可是若是是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不一样。 linux

1.命令格式:    shell

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

cp [OPTION]... SOURCE... DIRECTORYide

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


2.命令参数:命令行

cp [-aifpru] [源文件][目标文件]递归

-a:至关于-pdrit

-d:若源文件为连接文件(like file),则复制连接文件属性而非档案自己class

-f:强制,若目标档案已经存在且没法开启,则移除后在尝试test

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

-p:连同档案的属性一块儿复制过来,而非使用默认属性

-r:递归,用于复制目录

-u:若目标文件存在。则目标文件比源文件旧时才复制;

3.命令实例:

  1.复制单个文件到目标目录,文件在目标目录中不存在。

[root@oldboylinux ~]# cp a.txt backup/
[root@oldboylinux ~]# ll a.txt 
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[root@oldboylinux ~]# ll backup/
total 4
-rw-r--r--. 1 root root 4 Jul  4 22:07 a.txt
[root@oldboylinux ~]#

说明:会发现两个文件的时间戳是不同的,若是想要目标文件和源文件属性同样,可使用-a选项

 2.复制单个文件到目标目录,文件在目标目录中已存在,复制后的文件与源文件属性同样。

[root@oldboylinux ~]# ll a.txt 
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[root@oldboylinux ~]# cp -a a.txt backup/
cp: overwrite `backup/a.txt'? y
[root@oldboylinux ~]# ll backup/
total 4
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[root@oldboylinux ~]#

说明:cp在复制文件时,若是目标目录的文件是已存在的,会提示是否覆盖文件,这是因为命令行下的cp是有别名的,使用alias | grep "cp"查看cp别名,alias cp='cp -i',-i参数是若目标文件已经存在,在覆盖时会先询问;若是不想提示询问直接覆盖,能够cp -n 或者/bin/cp。

 3.复制目录:

   目标目录不存在时

[root@oldboylinux ~]# ls
anaconda-ks.cfg  a.txt  backup  b.txt  c.txt  data  d.txt  ett.txt  e.txt  install.log  install.log.syslog  mkdirtest  oldboy.txt  readme.txt  test
[root@oldboylinux ~]# cp -a mkdirtest mkdirtest2
[root@oldboylinux ~]# ll mkdirtest2
total 24
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 bin
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 config
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 info
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib32
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 sbin
[root@oldboylinux ~]# ll mkdirtest
total 24
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 bin
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 config
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 info
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib32
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 sbin

  目标目录已存在时

[root@oldboylinux ~]# mkdir mkdirtest3
[root@oldboylinux ~]# ll mkdirtest3
total 0
[root@oldboylinux ~]# cp -a mkdirtest mkdirtest3
[root@oldboylinux ~]# ll mkdirtest3
total 4
drwxr-xr-x. 8 root root 4096 Jun 29 02:38 mkdirtest
[root@oldboylinux ~]#

说明:在复制目录时,当目标目录不存在时,复制时会先建立目标目录,而后将源目录内的内容复制到目标目录;当目标目录存在时,会直接将源目录复制到已存在的目标目录下。

相关文章
相关标签/搜索