cp-----copy files and directories
語法:
SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
功能:
cp命令主要用來將一個或多個源文件或者目錄復制到指定目標文件或目錄,它可以將單個源文件復制到一個指定文件名的具體的文件或一個已經存在的目錄下。
選項:
-a:此參數效果等同于-dpR
-b: 覆蓋目標文件之前,進行備份。備份文件會在字尾添加一個備份字符串,默認為:The backup suffix is ‘~’
-d:當復制符號連接時,把目標文件或目錄也建立為符號連接,并指向與源文件或目錄連接的原始文件工目錄
-f:不論目標文件或目錄是否存在,強行復制
-i:覆蓋目標已有的文件前,先詢問用戶
-l:對源文件建立硬鏈接,而非復制文件
-p:保留源文件或目錄的屬性信息
-r|-R: 遞歸處理,將指定目錄下文件及子目錄一并處理
-s: 對源文件建立符號鏈接,而非復制文件
-u: 只在源文件比目的地更新時復制
案例:
1)當源是一個文件,目標(目的地)不存在
則:在目的地創建一個文件,將源文件里的內容填充進新建的文件中
[root@manager ~]# cp /etc/fstab /app/mima (目標文件/app/mima事先不存在)
[root@manager ~]# cat /app/mima
#
# /etc/fstab
# Created by anaconda on Mon Jul 31 17:19:47 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
2)當源是一個文件,目標(目的地)存在且是一個文件時,會覆蓋目標文件里的內容(針對root用戶,復制目標已存在的文件,會詢問,cp='cp -i')
(注意:覆蓋目標已存在的文件,要十分小心,或者可以額外增加-b參數,把已經存在的目標文件復制一份)
[root@manager ~]# echo "123abc">/app/a.txt
[root@manager ~]# cat /app/a.txt
123abc
[root@manager ~]# cp /etc/issue /app/a.txt
cp: overwrite `/app/a.txt'? y
[root@manager ~]# ll /app/
total 8
-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt
-rw-r--r--. 1 root root 783 Oct 19 10:47 mima
(以上操作,目標文件里的內容會被覆蓋)
[root@manager ~]# echo "test134">/app/b.txt
[root@manager ~]# cp -b /etc/issue /app/b.txt
cp: overwrite `/app/b.txt'? y
[root@manager ~]# ll /app/
total 16
-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt
-rw-r--r--. 1 root root 47 Oct 19 11:06 b.txt
-rw-r--r--. 1 root root 8 Oct 19 11:06 b.txt~
-rw-r--r--. 1 root root 783 Oct 19 10:47 mima
[root@manager ~]# cat /app/b.txt
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@manager ~]# cat /app/b.txt~
test134
(以上操作,添加-b參數,會把目標文件先備份一份)
3)當源是一個文件,目標存在且是一個目錄時,不可以實現復制,文件無法覆蓋
[root@manager app]# mkdir test/passwd -p
[root@manager app]# cp /etc/passwd test/
cp: overwrite `test/passwd'? y
cp: cannot overwrite directory `test/passwd' with non-directory
4)當源是多個文件,目的地不存在時,復制時會報錯,目的地不能不存在
[root@manager app]# cp /etc/fstab /etc/issue /etc/passwd test/
cp: overwrite `test/passwd'? y
cp: cannot overwrite directory `test/passwd' with non-directory
5)當源是多個文件,目的地存在且是一個目錄時,如果目錄中存在與源文件同名的文件則覆蓋;如果不存在與源文件同名的文件則新建并填充源文件中的內容;如果目的地目錄中存在與源文件同名的目錄,則不復制該源文件
[root@manager ~]# cp /etc/fstab /etc/issue /app/
[root@manager ~]# ll /app/
total 28
-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt
-rw-r--r--. 1 root root 47 Oct 19 11:06 b.txt
-rw-r--r--. 1 root root 8 Oct 19 11:06 b.txt~
-rw-r--r--. 1 root root 783 Oct 19 11:11 fstab
-rw-r--r--. 1 root root 47 Oct 19 11:11 issue
6)當源是一個目錄,目標不存在的時候,則新建一個同名的目錄,然后填充新的內容(復制目錄,需要額外添加-r參數)
[root@manager ~]# cp -r /tmp/ /app/
[root@manager ~]# ll /app/
total 32
-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt
-rw-r--r--. 1 root root 47 Oct 19 11:06 b.txt
-rw-r--r--. 1 root root 8 Oct 19 11:06 b.txt~
-rw-r--r--. 1 root root 783 Oct 19 11:11 fstab
-rw-r--r--. 1 root root 47 Oct 19 11:11 issue
-rw-r--r--. 1 root root 783 Oct 19 10:47 mima
drwxr-xr-x. 3 root root 4096 Oct 19 11:10 test
drwxr-xr-t. 7 root root 4096 Oct 19 11:14 tmp
7)當源是個目錄,目的地存在且為目錄時,在目的地新建與源目錄同名的內容并將源文件中的內容復制至新目錄中。
[root@manager ~]# cd /app/
[root@manager app]# mkdir oldboy
[root@manager app]# cp -r /oldboy/ oldboy/
[root@manager app]# ll oldboy/
total 4
drwxr-xr-x. 2 root root 4096 Oct 19 11:16 oldboy
8)創建鏈接文件
軟鏈接:
[root@manager app]# cp -s a.txt link.txt
[root@manager app]# ll link.txt
lrwxrwxrwx. 1 root root 5 Oct 19 11:17 link.txt -> a.txt
[root@manager app]# cat link.txt
CentOS release 6.8 (Final)
Kernel \r on an \m
硬鏈接:
[root@manager app]# cp -l b.txt soft.txt
[root@manager app]# ll soft.txt
-rw-r--r--. 2 root root 47 Oct 19 11:06 soft.txt
9)復制文件前保存源文件的屬性
[root@manager ~]# ll /etc/fstab
-rw-r--r--. 1 root root 783 Oct 11 11:30 /etc/fstab
[root@manager ~]# cp -a /etc/fstab /app/
[root@manager ~]# ll /app/fstab
-rw-r--r--. 1 root root 783 Oct 11 11:30 /app/fstab
- 第一章:文件和目錄操作類命令
- 第一節:pwd命令
- 第二節:cd命令
- 第三節:mkdir命令
- 第四節:touch命令
- 第五節:ls命令
- 第六節:cp命令
- 第八節: mv命令
- 第九節:ln命令
- 第十節:find命令
- 第十一節:chattr命令
- 第十二節:chown命令
- 第十三節:chmod命令
- 第二章:文件過濾和內容編輯類命令
- 第一節: cat命令
- 第二節:less命令
- 第三節:head命令
- 第四節:tail命令
- 第五節:cut命令
- 第六節:sort命令
- 第七節:wc命令
- 第八節:tr命令
- 第三章:文本處理三劍客
- 第一節:grep命令
- 第二節:sed命令
- 第四章:linux信息顯示類或搜索命令
- 第一節:uname命令
- 第二節:du命令
- 第三節:data命令
- 第四節:echo命令
- 第五節:watch命令
- 第五章: 文件備份和壓縮類命令
- 第一節:tar命令
- 第二節:gzip壓縮
- 第三節:zip和upzip命令
- 第四節:scp命令
- 第五節: rsync文件同步工具命令
- 第六章:Linux用戶管理及用戶信息查詢類命令
- 第一節:useradd命令
- 第二節:usermod命令
- 第三節:userdel命令
- 第四節:groupadd和groupdel命令
- 第五節:passwd命令
- 第六節:su命令
- 第七節:visudo命令
- 第八節:id命令
- 第九節:w和who命令
- 第十節:last和lastb命令
- 第七章: Linux磁盤及文件系統管理
- 第一節:fdisk命令
- 第二節: partprobe命令
- 第三節:parted磁盤分區工具
- 第四節:mkfs命令
- 第五節:dumpe2fs命令
- 第六節: fsck命令
- 第七節:mount和umount命令
- 第八節:dd命令
- 第九節:df命令