cp (Unix)

UNIX命令複製文件和目錄

cp是一個用於複製檔案UNIX命令。檔案可以被複製到相同目錄下,也可以複製到其他完全不同的目錄中(甚至複製到不同的檔案系統或是硬碟中)。如果檔案將被複製到相同的目錄中,那麼目的檔檔案必須使用不同於原檔案的檔名;在其他情況下,目的檔的名稱允許使用與原檔案相同或不同的名稱。原始的檔案不會被改變。

cp 命令現在擁有多種實現版本,兩個主要的版本是POSIX cpGNU 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 (保持) – 對於每個原檔案(或目錄),在複製時也複製下述特性:

  • 最後一次修訂時間最後一次訪問時間
  • 所屬使用者ID所屬組ID(僅在有權限如此做時)。
  • 檔案權限位以及SUIDSGID權限位。

-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隧道安全複製

參見

參考來源

  1. ^ 存档副本. [2011-07-09]. (原始內容存檔於2011-06-24).