每天一个Linux命令(8):cp

cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,当我们在命令行下复制文件时,如果目标文件已经存在,无论你是否使用-i参数,系统都会询问是否覆盖。但如果是在shell脚本中执行cp时,没有-i参数则不会询问是否覆盖。这说明命令行和shell脚本的执行方式是不同的。

1. 命令格式

cp [选项] [-T] 源文件 目标目录

2. 命令功能

将源文件复制至目标文件,或将多个源文件复制至目标目录。

3. 命令参数

-a,–archive,等价于-dR –preserve=all

–backup[=CONTROL ,为每个已存在的目标文件创建备份。

-b,–backup 但不接受参数。

–copy-contents,在递归处理是复制特殊文件内容。

-d,–no-dereference,–preserve=links

-f, –force,如果目标文件无法打开,则将其移除并重试(当 -n 选项
存在时,则不需再选此项)。

-i,–interactive,覆盖前询问(使前面的 -n 选项失效)。

-H,跟随源文件中的命令行符号链接。

-l,–link,链接文件而不复制。

-L,–dereference,总是跟随符号链接。

-n,–no-clobber,不要覆盖已存在的文件(使前面的 -i 选项失效)。

-P, –no-dereference,不跟随源文件中的符号链接。

-p,–preserve=模式,所有权,时间戳。

–preserve=属性列表,保持指定的属性(默认:模式,所有权,时间戳),如果
可能,保持附加属性:环境、链接、xattr 等。

-R,-r,–recursive,复制目录及目录内的所有项目。

4. 命令实例

例一:当文件在目标文件中不存在时,复制单个文件到目标目录

# cp  log.log  test5

说明:在没有带-a参数时,两个文件的时间是不一样的;带了-a参数时,两个文件的时间是一致的。

例二:文件在目标目录中存在时,询问是否覆盖

# cp  log.log  test5

说明:目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,还会询问是否覆盖。

例三:复制整个目录

# cp -a test3 test5

说明:注意目标目录存在与否,结果是不一样的。当目标目录存在时,整个源目录被复制到目标目录里面。

例四:复制log.log 建立一个链接文件 log_link.log

# cp -s log.log log_link.log

说明:那个 log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』,所以你会看到在文件的最右边,会显示这个文件是『链接』到哪里去的!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值