linux下的cp命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。
语法: cp [选项] 源文件或目录 目标文件或目录
说明:cp 将源文件复制至目标文件,或将多个源文件复制至目标目录。
参数命令:
a (archive)该选项通常在拷贝目录时使用。尽可能将档案状态、权限等资料都照原状予以复制。
d (backup)拷贝时保留链接。
f (force)若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制而不提示。
i (interactive)和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
p (preserve)此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
r (recursive)若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件至目的地。此时目标文件必须为一个目录名。
l (link)不作拷贝,只是链接文件。
为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖。建议用户在使用cp命令拷贝文件时,最好使用i选项。
实例:
1.将 mt1.txt 文件复制到mt2.txt 文件里;(mt2.txt存在)
命令为:cp mt1.txt mt2.txt
# 首先查看mt1.txt和mt2.txt文件内容,用cat+文件名
[mt555@localhost Desktop]$ cat mt1.txt [20:35:43]
123
456
789
0
[mt555@localhost Desktop]$ cat mt2.txt [20:35:49]
hello
my name is mt
[mt555@localhost Desktop]$ cp mt1.txt mt2.txt # 输入命令 [20:35:57]
[mt555@localhost Desktop]$ cat mt2.txt # 再次查看mt2.txt的内容,发现已被mt1.txt的内容覆盖
123
456
789
0
[mt555@localhost Desktop]$
2.采用交互方式将文件mt1.txt复制成文件mt2.txt,
命令为:cp -i mt1.txt mt2.txt
# 首先分别查看mt1.txt和mt2.txt文件的内容
[mt555@localhost Desktop]$ cat mt1.txt [20:06:36]
123
456
789
0
[mt555@localhost Desktop]$ cat mt2.txt [20:06:48]
hello
my name is mt
[mt555@localhost Desktop]$ cp -i mt1.txt mt2.txt # 输入命令 [20:06:53]
cp:是否覆盖"mt2.txt"? n # n代表"否"
[mt555@localhost Desktop]$ cat mt2.txt # 再次查看mt2.txt的内容 [20:07:26]
hello
my name is mt
[mt555@localhost Desktop]$ cp -i mt1.txt mt2.txt [20:07:35]
cp:是否覆盖"mt2.txt"? y # y代表"是"
[mt555@localhost Desktop]$ cat mt2.txt # 此时可看到mt1.txt文件的内容已经覆盖了mt2.txt的内容
456
789
0
[mt555@localhost Desktop]$ [20:07:51]
3.将文件mt1.txt复制成mt2.txt,因为目的文件已经存在,所以指定使用强制复制的模式
命令为:cp -f mt1.txt mt2.txt
# 同样先查看一下mt1.txt和mt2.txt文件内容
[mt555@localhost Desktop]$ cat mt1.txt [20:07:51]
123
456
789
0
[mt555@localhost Desktop]$ cat mt2.txt [20:21:56]
hello
my name is mt
[mt555@localhost Desktop]$ cp -f mt1.txt mt2.txt # 输入命令 [20:22:02]
[mt555@localhost Desktop]$ cat mt2.txt # 再次查看mt2.txt内容,发现已经被覆盖为mt1.txt的内容了
123
456
789
0
[mt555@localhost Desktop]$
4.将目录m1复制成目录m3
命令为:cp -R m1 m3
[mt555@localhost Desktop]$ cd m1 [22:00:09]
[mt555@localhost m1]$ ls [22:00:16]
t1
[mt555@localhost m1]$ cd .. [22:00:17]
[mt555@localhost Desktop]$ cd m3 [22:00:22]
[mt555@localhost m3]$ ls [22:00:29]
mt3.txt
[mt555@localhost m3]$ cd .. [22:00:32]
[mt555@localhost Desktop]$ cp -R m1 m3 [22:00:47]
[mt555@localhost Desktop]$ cd m3 [22:01:01]
[mt555@localhost m3]$ ls # 此时可看到m1被复制到m3 [22:01:05]
m1 mt3.txt #这样看可能不是很直观,教你一个命令tree,来看目录结构
[mt555@localhost m3]$ tree . # 就可看到树状目录结构了
5.同时将文件mt1.txt、mt2.txt、mt3.txt与目录m1复制到m2
命令为: cp -R mt1.txt mt2.txt mt3.txt m1 m2
# 先用ls看一下桌面的文件
[mt555@localhost Desktop]$ ls [21:40:04]
brackets.desktop gvim.desktop m3 mt2.txt mt3.txt~
firefox.desktop m1 mt1.txt mt2.txt~ xfce4-terminal.desktop
gedit.desktop m2 mt1.txt~ mt3.txt
[mt555@localhost Desktop]$ cp -R mt1.txt mt2.txt mt3.txt m1 m2 # 输入命令 [21:41:41]
[mt555@localhost Desktop]$ cd m2 [21:41:59]
[mt555@localhost m2]$ ls [21:42:21]
m1 mt1.txt mt2.txt mt3.txt t2
[mt555@localhost m2]$
6.复制时保留文件属性
命令为:cp -p mt1.txt m3/
[mt555@localhost Desktop]$ cp -p mt1.txt m3/
[mt555@localhost Desktop]$ cd m3
[mt555@localhost m3]$ ls
m1 mt1.txt mt3.txt
[mt555@localhost m3]$
7.复制时保留文件的目录结构
命令为: cp -P /var/tmp/a.txt ./temp/
这里写代码片
8.复制时产生备份文件
命令为: cp -b mt2.txt m3
[mt555@localhost Desktop]$ cp -b mt2.txt m3
[mt555@localhost Desktop]$ cd m3
[mt555@localhost m3]$ ls
m1 mt2.txt mt3.txt
9.复制时产生备份文件,尾标 ~1~格式
命令为: cp -b -V t mt3.txt /m3
10.指定备份文件尾标
命令为: cp -b -S _bak a.txt /tmp
这里写代码片