每天一個(gè)Linux命令之cp命令詳解
Linux系統(tǒng)的cp命令是copy的縮寫(xiě),意思就是復(fù)制。下面由學(xué)習(xí)啦小編為大家整理了每天一個(gè)Linux命令之cp命令詳解,希望對(duì)大家有幫助!
每天一個(gè)Linux命令之cp命令詳解
cp命令用來(lái)復(fù)制文件或者目錄,是Linux系統(tǒng)中最常用的命令之一。[]一般情況下,shell會(huì)設(shè)置一個(gè)別名,在命令行下復(fù)制文件時(shí),如果目標(biāo)文件已經(jīng)存在,就會(huì)詢(xún)問(wèn)是否覆蓋,不管你是否使用-i參數(shù)。但是如果是在shell腳本中執(zhí)行cp時(shí),沒(méi)有-i參數(shù)時(shí)不會(huì)詢(xún)問(wèn)是否覆蓋。這說(shuō)明命令行和shell腳本的執(zhí)行方式有些不同。
1.命令格式:
用法:
cp[選項(xiàng)]...[-T]源目的
或:cp[選項(xiàng)]...源...目錄
或:cp[選項(xiàng)]...-t目錄源...
2.命令功能:
將源文件復(fù)制至目標(biāo)文件,或?qū)⒍鄠€(gè)源文件復(fù)制至目標(biāo)目錄。
3.命令參數(shù):
-a,--archive等于-dR--preserve=all
--backup[=CONTROL為每個(gè)已存在的目標(biāo)文件創(chuàng)建備份
-b類(lèi)似--backup但不接受參數(shù)
--copy-contents在遞歸處理是復(fù)制特殊文件內(nèi)容
-d等于--no-dereference--preserve=links
-f,--force如果目標(biāo)文件無(wú)法打開(kāi)則將其移除并重試(當(dāng)-n選項(xiàng)
存在時(shí)則不需再選此項(xiàng))
-i,--interactive覆蓋前詢(xún)問(wèn)(使前面的-n選項(xiàng)失效)
-H跟隨源文件中的命令行符號(hào)鏈接
-l,--link鏈接文件而不復(fù)制
-L,--dereference總是跟隨符號(hào)鏈接
-n,--no-clobber不要覆蓋已存在的文件(使前面的-i選項(xiàng)失效)
-P,--no-dereference不跟隨源文件中的符號(hào)鏈接
-p等于--preserve=模式,所有權(quán),時(shí)間戳
--preserve[=屬性列表保持指定的屬性(默認(rèn):模式,所有權(quán),時(shí)間戳),如果
可能保持附加屬性:環(huán)境、鏈接、xattr等
-R,-r,--recursive復(fù)制目錄及目錄內(nèi)的所有項(xiàng)目
每天一個(gè)Linux命令之cp命令實(shí)例
實(shí)例一:復(fù)制單個(gè)文件到目標(biāo)目錄,文件在目標(biāo)文件中不存在
命令:
cplog.logtest5
輸出:
[root@localhosttest]#cplog.logtest5
[root@localhosttest]#ll
-rw-r--r--1rootroot010-2814:48log.log
drwxr-xr-x6rootroot409610-2701:58scf
drwxrwxrwx2rootroot409610-2814:47test3
drwxr-xr-x2rootroot409610-2814:53test5
[root@localhosttest]#cdtest5
[root@localhosttest5]#ll
-rw-r--r--1rootroot010-2814:46log5-1.log
-rw-r--r--1rootroot010-2814:46log5-2.log
-rw-r--r--1rootroot010-2814:46log5-3.log
-rw-r--r--1rootroot010-2814:53log.log
說(shuō)明:
在沒(méi)有帶-a參數(shù)時(shí),兩個(gè)文件的時(shí)間是不一樣的。在帶了-a參數(shù)時(shí),兩個(gè)文件的時(shí)間是一致的。
實(shí)例二:目標(biāo)文件存在時(shí),會(huì)詢(xún)問(wèn)是否覆蓋
命令:
cplog.logtest5
輸出:
[root@localhosttest]#cplog.logtest5
cp:是否覆蓋“test5/log.log”?n
[root@localhosttest]#cp-alog.logtest5
cp:是否覆蓋“test5/log.log”?y
[root@localhosttest]#cdtest5/
[root@localhosttest5]#ll
-rw-r--r--1rootroot010-2814:46log5-1.log
-rw-r--r--1rootroot010-2814:46log5-2.log
-rw-r--r--1rootroot010-2814:46log5-3.log
-rw-r--r--1rootroot010-2814:48log.log
說(shuō)明:
目標(biāo)文件存在時(shí),會(huì)詢(xún)問(wèn)是否覆蓋。這是因?yàn)閏p是cp-i的別名。目標(biāo)文件存在時(shí),即使加了-f標(biāo)志,也還會(huì)詢(xún)問(wèn)是否覆蓋。
實(shí)例三:復(fù)制整個(gè)目錄
命令:
輸出:
目標(biāo)目錄存在時(shí):
[root@localhosttest]#cp-atest3test5
[root@localhosttest]#ll
-rw-r--r--1rootroot010-2814:48log.log
補(bǔ)充:每天一個(gè)命令之cp命令其它用法
♦ cp afile afile.bak —— 把文件 afile 復(fù)制為新文件 afile.bak。
♦ cp afile /home/bible/ —— 把文件 afile 從當(dāng)前目錄復(fù)制到/home/bible/目錄下。
♦ cp * /tmp —— 把當(dāng)前目錄下的所有未隱藏文件復(fù)制到/tmp/目錄下。
♦ cp -a docs docs.bak —— 遞歸性第把當(dāng)前目錄下的 docs 目錄復(fù)制為新目錄 docs.bak,保持文件屬性,并復(fù)制所有的文件,包括以句點(diǎn)開(kāi)頭的隱藏文件。為了方便起見(jiàn),-a 選項(xiàng)暗含 -R 選項(xiàng)。
♦ cp -i —— 如果要把文件復(fù)制到已經(jīng)存在的一個(gè)相同的文件的目錄下,默認(rèn)時(shí),舊文件將被覆蓋。 -i 選項(xiàng)可以讓命令交互,換句話(huà)說(shuō),在覆蓋之前詢(xún)問(wèn)用戶(hù)。
♦ cp -v —— 帶有 -v (verbose)選項(xiàng),cp命令將告訴用戶(hù)正在做什么。很多Linux命令都帶有具有相同意義的 -v 選項(xiàng)。