cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。
语法
cp(选项)(参数)
选项
1 | -a:此参数的效果和同时指定"-dpR"参数相同; |
参数
- 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用
-R
选项; - 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
常用范例
1)复制单个文件到目标目录,文件在目标文件中不存在
1 | # cp log.log test5 |
说明:
在没有带-a参数时,两个文件的时间是不一样的。在带了-a参数时,两个文件的时间是一致的。
2)目标文件存在时,会询问是否覆盖
1 | # cp log.log test5 |
说明:
目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖。
3)复制整个目录
目标目录存在时:
1 | #cp -a test3 test5 |
目标目录不存在时:
1 | # cp -a test3 test4 |
说明:
注意目标目录存在与否结果是不一样的。目标目录存在时,整个源目录被复制到目标目录里面。
4)复制的 log.log 建立一个链接到 log_link.log
1 | # cp -s log.log log_link.log |
说明:
那个 log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』,所以您会看到在文件的最右边,会显示这个文件是『连结』到哪里去的!
5)将文件file复制到目录/usr/men/tmp
下,并改名为file1
1 | cp file /usr/men/tmp/file1 |
6)将目录/usr/men
下的所有文件及其子目录复制到目录/usr/zh
中
1 | cp -i /usr/men m*.c /usr/zh |
我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:
1 | cp aaa/* /bbb |
参考链接:
http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html