1. 程式人生 > 其它 >一天一個 Linux 命令(11):cp命令

一天一個 Linux 命令(11):cp命令

一、簡介

Linux裡面的cp命令用來複制檔案或者目錄,是Linux系統中最常用的命令之一。一般情下,shell會設定一個別名,在命令列下複製檔案時,如果目標檔案已經存在,就會詢問是否覆蓋,不管你是否使用-i引數。但是如果是在shell指令碼中執行cp時,沒有-i引數時不會詢問是否覆蓋。這說明命令列和shell指令碼的執行方式有些不同。

二、格式說明

cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

cp [選項]… [-T] 源 目的
或:cp [選項]… 源… 目錄
或:cp [選項]… -t 目錄 源…

三、選項說明

-a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用等於dpR引數組合。
-b: 類似–backup 但不接受引數
-d:複製時保留連結。這裡所說的連結相當於 Windows 系統中的快捷方式。
-f:覆蓋已經存在的目標檔案而不給出提示。
-H: 跟隨原始檔中的命令列符號連結
-i:與 -f 選項相反,在覆蓋目標檔案之前給出提示,要求使用者確認是否覆蓋,回答 y 時目標檔案將被覆蓋。
-l:不復制檔案,只是生成連結檔案。
-n: 不要覆蓋已存在的檔案(使前面的 -i 選項失效)
-p:除複製檔案的內容外,還把修改時間和訪問許可權也複製到新檔案中。
-r,-R:若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案。

四、命令功能

將原始檔複製至目標檔案,或將多個原始檔複製至目標目錄。

五、常見用法

1.複製單個檔案到目標目錄,檔案在目標檔案中不存在

將test.txt檔案複製到test目錄

cp test.txt test

注意:

在沒有帶-a引數時,兩個檔案的時間是不一樣的。在帶了-a引數時,兩個檔案的時間是一致的。

2.目標檔案存在時,會詢問是否覆蓋

cp test.txt test

注意:目標檔案存在時,會詢問是否覆蓋。這是因為cp是cp -i的別名。目標檔案存在時,即使加了-f標誌,也還會詢問是否覆蓋。

3.複製整個目錄

cp test2 test3

注意:

(1)如果目標目錄不存在時,則建立對應的目標目錄,和源目錄同級;

(2)目標目錄存在時,整個源目錄被複制到目標目錄裡面。

4.複製的 test1.txt 建立一個連結檔test1_link.txt

cp -s test1.txt test1_link.txt

注意:

test1_link.txt 是由 -s 的引數造成的,建立的是一個『快捷方式』,所以可以看到在檔案的最右邊,會顯示這個檔案是『連結』到哪裡去了

5.遞迴複製檔案

使用指令cp將當前目錄test2/下的所有檔案複製到新目錄test3下,輸入如下命令:

cp –r test2/ test3