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).