在 Linux 中使用 cp 命令
熟悉在 Linux 命令行中複製文件和目錄的 cp 命令。
cp
命令是 Linux 中一個重要的命令,你可能經常會用到它。
正如名稱所示,cp
代表 複製 ,它被用於 在 Linux 命令行中複製文件和目錄。
這是一個相對簡單的命令,只有幾個選項,但你仍有必要深入了解它。
在展示 cp
命令的實際示例之前,我更建議你先熟悉絕對路徑和相對路徑的概念,將文件從一個位置複製到另一個位置時,你需要用到它們。
複製單個文件
cp
命令最簡單和最常見的用途是複製文件,只需指定源文件和要「粘貼」文件的目標目錄即可。
cp 源文件 目標目錄
在複製文件的同時重命名它
你將文件複製到另一個位置時可以同時進行 重命名。這有點類似於文本編輯器中的「另存為」選項。
為此,你必須在路徑中給出新的文件名。
cp 源文件 目標目錄/新文件名
複製多個文件
你還可以將多個文件複製到另一個位置。
cp 文件1 文件2 文件3 目標目錄
在這種情況下,你無法重命名文件。
你還可以使用通配符擴展,將特定後綴的文件複製到另一個位置:
cp *.txt 目標目錄
複製文件時避免覆蓋現有文件
如果你將 file1.txt
複製到一個已經存在名為 file1.txt
文件的目錄中,它會將原有的文件覆蓋掉。
如果你不希望這樣,cp
命令還提供了幾個選項來處理文件覆蓋的情況。
首先是使用選項 -i
的交互模式。在交互模式下,它會詢問是否確認或放棄覆蓋目標文件。
cp -i 源文件 目標目錄
cp:覆蓋 '目標目錄/源文件' ?
按 Y
覆蓋文件,按 N
跳過複製該文件。
選項 -n
代表完全取消覆蓋。使用此選項時目標文件不會被覆蓋。
cp -n 源文件 目標目錄
還有一個選項 -b
,在目標目錄的文件將被覆蓋時自動為其創建備份。我猜這裡 b
代表 備份 。
cp -b 源文件 目標目錄
最後,還有一個「 更新 」選項 -u
,如果目標文件比源文件舊,或者目標文件不存在,就會被覆蓋掉。
cp -u 源文件 目標目錄
複製目錄(文件夾)
cp 命令也用來在 Linux 命令行中複製目錄。
在複製目錄時,你需要使用遞歸選項 -r
。
cp -r 源目錄 目標目錄
你還可以將多個目錄複製到另一個位置:
cp -r 目錄1 目錄2 目錄3 目標目錄
在複製時保留屬性
當你將文件複製到另一個位置時,它的 時間戳、文件許可權 甚至所有權都會發生變化。
這是正常的行為。但在某些情況下,你可能希望在複製文件時保留其原始屬性。
要保留屬性,請使用選項 -p
:
cp -p 源文件 目標目錄
? 還有一個
-a
選項用於存檔模式。它將連 ACL 也保留下來。
?️ 練習時間
想要練習一下 cp
命令嗎?以下是一些簡單的練習題供你嘗試。
- 打開終端並創建一個名為
practice_cp
的目錄。 - 現在,將
/etc/services
文件複製到這個新創建的目錄中。 - 在
practice
目錄中對複製的services
文件進行一些小的更改。 - 現在,使用更新模式再次複製
/etc/services
文件。有什麼變化嗎?觀察一下。 - 查看
/var/log
目錄,並將以mail
開頭的日誌文件複製到你的聯繫目錄下。 - 現在,返回到你的家目錄,並創建一個名為
new_dir
的新目錄(好吧,我想不出更好的名字)。 - 將
practice_cp
目錄複製到new_dir
目錄中。
對你來說這些練習足夠用了。希望你能喜歡在這裡學習 Linux 命令。
(題圖:MJ/07b35a39-826e-4904-9f85-25257831ce9d)
via: https://itsfoss.com/cp-command/
作者:Abhishek Prakash 選題:lkxed 譯者:onionstalgia 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive