cp命令的作用:用于复制文件和目录
1.基本语法:
bash
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
2.常用选项:
| 选项 | 完整写法 | 说明 |
|---|---|---|
-i |
--interactive |
交互模式,覆盖前提示确认 |
-r |
--recursive |
递归复制目录(复制目录必须用) |
-f |
--force |
强制覆盖,不提示 |
-u |
--update |
只复制更新的文件(源比目标新才复制) |
-v |
--verbose |
显示详细复制过程 |
-p |
--preserve |
保留文件属性(时间戳、权限、所有者) |
-a |
--archive |
归档模式,等于 -dpR(保留所有属性+递归) |
-n |
--no-clobber |
不覆盖已存在的文件 |
-b |
--backup |
覆盖前自动备份目标文件 |
-s |
--symbolic-link |
创建符号链接(而不是复制文件) |
-l |
--link |
创建硬链接(而不是复制文件) |
-d |
保留链接属性 |
3.基础用法示例
bash
[root@master /]# mkdir Tests
[root@master /]# ls
bin boot data demo01 dev etc home lib lib64 media mnt opt parent proc Projects root run sbin srv sys Tests tmp usr var
[root@master /]# cd Tests
[root@master Tests]# echo "2026年4月25日01点18分" > test1.txt
[root@master Tests]# ls
test1.txt
[root@master Tests]# cat test1.txt
2026年4月25日01点18分
[root@master Tests]# touch test2.txt # 创建一个空文件
[root@master Tests]# cp test1.txt test2.txt # 复制test1.txt到test2.txt
cp: overwrite 'test2.txt'? y
[root@master Tests]# ls
test1.txt test2.txt
[root@master Tests]# cat test2.txt
2026年4月25日01点18分
bash
[root@master Tests]# cp test1.txt test3.txt # 将test1.txt文件的内容复制到test3.txt中,但是test3.txt不存在,则会先创建出这个文件再复制内容进去
[root@master Tests]# ls
test1.txt test2.txt test3.txt
[root@master Tests]# cat test3.txt
2026年4月25日01点18分
bash
[root@master Tests]# mkdir SubTests
[root@master Tests]# ls
SubTests test1.txt test2.txt test3.txt
[root@master Tests]# cp test1.txt SubTests # 复制文件到指定目录中
[root@master Tests]# ls SubTests
test1.txt
[root@master Tests]# cat SubTests/test1.txt
2026年4月25日01点18分
bash
[root@master Tests]# echo "01点26分" > SubTests/file1.txt
[root@master Tests]# ls SubTests
file1.txt test1.txt
[root@master Tests]# cat SubTests/file1.txt
01点26分
[root@master Tests]# cp SubTests/file1.txt ./myfile1.txt # 复制目标文件到当前目录并重命名。其实也就是新建了一个myfile1.txt文件,然后再执行普通复制
[root@master Tests]# ls
myfile1.txt SubTests test1.txt test2.txt test3.txt
[root@master Tests]# cat myfile1.txt
01点26分
bash
[root@master Tests]# cp -r SubTests / # 复制SubTests目录到根目录下。需要注意两点:1.复制目录必须要用到-r参数。 2.复制到根目录/需要root权限
[root@master Tests]# cd /
[root@master /]# ls
bin boot data demo01 dev etc home lib lib64 media mnt opt parent proc Projects root run sbin srv SubTests sys Tests tmp usr var
[root@master /]# ls SubTests/
file1.txt test1.txt
[root@master /]# cat SubTests/file1.txt
01点26分
[root@master /]# cat SubTests/test1.txt
2026年4月25日01点18分
bash
[root@master /]# cd SubTests
[root@master SubTests]# cp file1.txt test1.txt / # 复制多个文件到根目录下
[root@master SubTests]# ls /
bin boot data demo01 dev etc file1.txt home lib lib64 media mnt opt parent proc Projects root run sbin srv SubTests sys test1.txt Tests tmp usr var