cp (Unix)
cp是一個用於複製檔案的UNIX命令。檔案可以被複製到相同目錄下,也可以複製到其他完全不同的目錄中(甚至複製到不同的檔案系統或是硬碟中)。如果檔案將被複製到相同的目錄中,那麼目的檔檔案必須使用不同於原檔案的檔名;在其他情況下,目的檔的名稱允許使用與原檔案相同或不同的名稱。原始的檔案不會被改變。
cp 命令現在擁有多種實現版本,兩個主要的版本是POSIX cp 與 GNU cp。 GNU cp 有許多額外的選項。[1]
用法
將檔案複製為另一檔案:
cp [-f] [-H] [-i] [-p][--] 源文件 目标文件
將檔案複製到一目錄下:
cp [-f] [-H] [-i] [-p] [-r | -R] [--] 源文件 ... 目标目录
將目錄複製為另一目錄(必須使用參數 -r 或 -R):
cp [-f] [-H] [-i] [-p] [--] { -r | -R } 源目录 ... 目标目录
參數
-f (強制) – 在目的檔因沒有寫權限而無法打開時刪除目的檔。這一移除動作先於所有的cp命令複製動作。
-L (間接參照) – 使cp命令跟隨符號連結,這樣cp命令將複製符號連結指向的檔案而不是符號連結到目的位置。
-i (互動) – 提示您將要被覆蓋之檔案的檔名。當目標目錄或是目的檔中包含一個與原檔案(或目錄)名字相同的檔案(或目錄)時,互動就會發生,如果你輸入 'y' 或者區域語言中等價於 'y'的字元,cp操作將覆蓋目的檔,其餘的任意回答都會避免目的檔被原檔案覆蓋。
-p (保持) – 對於每個原檔案(或目錄),在複製時也複製下述特性:
-R or -r (遞迴) – 複製目錄(遞迴地複製目錄中的所有內容)
範例
欲複製原檔案的一份副本,執行:
cp prog.c prog.bak
這一操作把檔案prog.c複製為prog.bak。如果prog.bak檔案不存在,cp命令將建立此檔案。如果目的檔已存在,cp命令將用原檔案的內容替代目的檔中的內容。
欲複製當前工作目錄中的檔案到另外一目錄中,執行:
cp jones /home/nick/clients
這一操作將 jones 檔案複製到 /home/nick/clients/jones。
欲將檔案複製為新的檔案,並保留修改日期與相關的訪問控制權限,執行:
cp -p smith smith.jr
操作將smith檔案複製為smith.jr檔案。此時系統將給與smith.jr與smith檔案相同的修改日期和時間而並不使用當前的系統時間。smith.jr檔案同時也繼承了smith檔案的訪問控制保護。
欲將某目錄中所有檔案複製到新目錄中,執行:
cp /home/janet/clients/* /home/nick/customers
這一操作僅將clients目錄中的檔案複製到customers目錄中。
欲將一個目錄,包括其包含的所有檔案與子目錄複製到另一目錄中,執行:
cp -R /home/nick/clients /home/nick/customers
這一複製將clients目錄以及其中包含的所有檔案、子目錄與子目錄中的檔案複製到customers/clients目錄下。
注意在原目錄的結尾無斜槓符:如果你在GNU基礎的系統上執行cp -R /home/nick/clients/ /home/nick/customers
,這與原目錄沒有加結尾斜槓符的效果相同。
但如果你在BSD基礎系統上執行相同的命令,這將複製所有client目錄中的內容,而不是client目錄本身。
欲將複製指定的一些檔案到另一目錄中,執行:
cp jones lewis smith /home/nick/clients
這一操作複製當前工作目錄下的 jones、lewis和smith 檔案到 /home/nick/clients 目錄。
欲使用模式匹配字元集來複製檔案,執行:
cp programs/*.c .
這一操作將programs目錄下所有以 .c 結尾的檔案都複製到當前目錄下,當前目錄用單個點符號 . 表示。在 .c 和最後的 . 之間必須用空格隔開。
將檔案複製到另一已存在檔案的過程是:將已存在檔案以更新模式打開(使用這一模式需要擁有目的檔的寫入權限)。操作的結果是目的檔保留了其原來擁有的權限位。
相關 Unix 命令
- cpio – 複製完整的目錄結構到其他檔案系統位置
- tar – 建立檔案歸檔
- link – 建立檔案或目錄的連結的系統呼叫
- ln – 建立檔案或目錄的連結檔案
- mv – 移動檔案或目錄
- rm – 移除檔案或目錄
- unlink – 刪除檔案或目錄的系統呼叫
- chmod – 修改檔案或目錄的權限位
- chown – 修改檔案或目錄的隸屬關係
- chgrp – 修改檔案或目錄的所屬組
- uucp – UNIX間複製協定
- scp – 通過SSH隧道安全複製