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