在 Linux 中使用 cp 命令
cp
命令是 Linux 中一個(gè)重要的命令,你可能經(jīng)常會(huì)用到它。
正如名稱(chēng)所示,cp
代表 復(fù)制copy,它被用于 在 Linux 命令行中復(fù)制文件和目錄。
這是一個(gè)相對(duì)簡(jiǎn)單的命令,只有幾個(gè)選項(xiàng),但你仍有必要深入了解它。
在展示 cp
命令的實(shí)際示例之前,我更建議你先熟悉絕對(duì)路徑和相對(duì)路徑的概念,將文件從一個(gè)位置復(fù)制到另一個(gè)位置時(shí),你需要用到它們。
復(fù)制單個(gè)文件
cp
命令最簡(jiǎn)單和最常見(jiàn)的用途是復(fù)制文件,只需指定源文件和要“粘貼”文件的目標(biāo)目錄即可。
cp 源文件 目標(biāo)目錄
將單個(gè)文件從源目錄復(fù)制到目標(biāo)目錄。
在復(fù)制文件的同時(shí)重命名它
你將文件復(fù)制到另一個(gè)位置時(shí)可以同時(shí)進(jìn)行 重命名。這有點(diǎn)類(lèi)似于文本編輯器中的“另存為”選項(xiàng)。
為此,你必須在路徑中給出新的文件名。
cp 源文件 目標(biāo)目錄/新文件名
在復(fù)制文件的同時(shí)重命名
復(fù)制多個(gè)文件
你還可以將多個(gè)文件復(fù)制到另一個(gè)位置。
cp 文件1 文件2 文件3 目標(biāo)目錄
復(fù)制多個(gè)文件時(shí),將目標(biāo)目錄放在最后
在這種情況下,你無(wú)法重命名文件。
你還可以使用通配符擴(kuò)展,將特定后綴的文件復(fù)制到另一個(gè)位置:
cp *.txt 目標(biāo)目錄
使用通配符擴(kuò)展復(fù)制多個(gè)文件,比如所有 .txt 后綴的文件
復(fù)制文件時(shí)避免覆蓋現(xiàn)有文件
如果你將 file1.txt
復(fù)制到一個(gè)已經(jīng)存在名為 file1.txt
文件的目錄中,它會(huì)將原有的文件覆蓋掉。
如果你不希望這樣,cp
命令還提供了幾個(gè)選項(xiàng)來(lái)處理文件覆蓋的情況。
首先是使用選項(xiàng) -i
的交互模式。在交互模式下,它會(huì)詢問(wèn)是否確認(rèn)或放棄覆蓋目標(biāo)文件。
cp -i 源文件 目標(biāo)目錄
cp:覆蓋 '目標(biāo)目錄/源文件' ?
按 Y
覆蓋文件,按 N
跳過(guò)復(fù)制該文件。
覆蓋,但以交互方式詢問(wèn)(內(nèi)容將被覆蓋)
覆蓋,但以交互方式詢問(wèn)(內(nèi)容不會(huì)被覆蓋)
選項(xiàng) -n
代表完全取消覆蓋。使用此選項(xiàng)時(shí)目標(biāo)文件不會(huì)被覆蓋。
cp -n 源文件 目標(biāo)目錄
取消覆蓋(目錄內(nèi)文件的內(nèi)容未更改)
還有一個(gè)選項(xiàng) -b
,在目標(biāo)目錄的文件將被覆蓋時(shí)自動(dòng)為其創(chuàng)建備份。我猜這里 b
代表 備份backup。
cp -b 源文件 目標(biāo)目錄
覆蓋文件,但在備份文件后附加了“~”。
最后,還有一個(gè)“更新update”選項(xiàng) -u
,如果目標(biāo)文件比源文件舊,或者目標(biāo)文件不存在,就會(huì)被覆蓋掉。
cp -u 源文件 目標(biāo)目錄
新文件會(huì)覆蓋舊文件
復(fù)制目錄(文件夾)
cp 命令也用來(lái)在 Linux 命令行中復(fù)制目錄。
在復(fù)制目錄時(shí),你需要使用遞歸選項(xiàng) -r
。
cp -r 源目錄 目標(biāo)目錄
在 Linux 中使用 cp 命令復(fù)制整個(gè)目錄
你還可以將多個(gè)目錄復(fù)制到另一個(gè)位置:
cp -r 目錄1 目錄2 目錄3 目標(biāo)目錄
使用 cp 命令復(fù)制多個(gè)目錄
在復(fù)制時(shí)保留屬性
當(dāng)你將文件復(fù)制到另一個(gè)位置時(shí),它的 時(shí)間戳、文件權(quán)限 甚至所有權(quán)都會(huì)發(fā)生變化。
這是正常的行為。但在某些情況下,你可能希望在復(fù)制文件時(shí)保留其原始屬性。
要保留屬性,請(qǐng)使用選項(xiàng) -p
:
cp -p 源文件 目標(biāo)目錄
?? 還有一個(gè)
-a
選項(xiàng)用于存檔模式。它將連 ACL 也保留下來(lái)。
??? 練習(xí)時(shí)間
想要練習(xí)一下 cp
命令嗎?以下是一些簡(jiǎn)單的練習(xí)題供你嘗試。
- 打開(kāi)終端并創(chuàng)建一個(gè)名為
practice_cp
的目錄。 - 現(xiàn)在,將
/etc/services
文件復(fù)制到這個(gè)新創(chuàng)建的目錄中。 - 在
practice
目錄中對(duì)復(fù)制的services
文件進(jìn)行一些小的更改。 - 現(xiàn)在,使用更新模式再次復(fù)制
/etc/services
文件。有什么變化嗎?觀察一下。 - 查看
/var/log
目錄,并將以mail
開(kāi)頭的日志文件復(fù)制到你的聯(lián)系目錄下。 - 現(xiàn)在,返回到你的家目錄,并創(chuàng)建一個(gè)名為
new_dir
的新目錄(好吧,我想不出更好的名字)。 - 將
practice_cp
目錄復(fù)制到new_dir
目錄中。
對(duì)你來(lái)說(shuō)這些練習(xí)足夠用了。希望你能喜歡在這里學(xué)習(xí) Linux 命令。