linux命令行cp,每天一个linux命令-cp

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

1.命令格式:

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

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

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

2.命令参数:

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

-a:相当于-pdr

-d:若源文件为链接文件(like file),则复制链接文件属性而非档案本身

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

-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 ~]#

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值