天天一個linux命令-cp

cp命令用於文件及目錄的複製,是linux經常使用的命令之一,通常狀況下,shell會設置一個別名alias cp='cp -i',在命令行下複製文件時,若是目標文件已經存在,就會詢問是否覆蓋,無論你是否使用-i參數。可是若是是在shell腳本中執行cp時,沒有-i參數時不會詢問是否覆蓋。這說明命令行和shell腳本的執行方式有些不一樣。 linux

1.命令格式:    shell

cp [OPTION]... [-T] SOURCE DESTbash

cp [OPTION]... SOURCE... DIRECTORYide

cp [OPTION]... -t DIRECTORY SOURCE...spa


2.命令參數:命令行

cp [-aifpru] [源文件][目標文件]遞歸

-a:至關於-pdrit

-d:若源文件爲連接文件(like file),則複製連接文件屬性而非檔案自己class

-f:強制,若目標檔案已經存在且沒法開啓,則移除後在嘗試test

-i:若目標文件已經存在,在覆蓋時會先詢問;

-p:連同檔案的屬性一塊兒複製過來,而非使用默認屬性

-r:遞歸,用於複製目錄

-u:若目標文件存在。則目標文件比源文件舊時才複製;

3.命令實例:

  1.複製單個文件到目標目錄,文件在目標目錄中不存在。

[root@oldboylinux ~]# cp a.txt backup/
[root@oldboylinux ~]# ll a.txt 
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[root@oldboylinux ~]# ll backup/
total 4
-rw-r--r--. 1 root root 4 Jul  4 22:07 a.txt
[root@oldboylinux ~]#

說明:會發現兩個文件的時間戳是不同的,若是想要目標文件和源文件屬性同樣,可使用-a選項

 2.複製單個文件到目標目錄,文件在目標目錄中已存在,複製後的文件與源文件屬性同樣。

[root@oldboylinux ~]# ll a.txt 
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[root@oldboylinux ~]# cp -a a.txt backup/
cp: overwrite `backup/a.txt'? y
[root@oldboylinux ~]# ll backup/
total 4
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[root@oldboylinux ~]#

說明:cp在複製文件時,若是目標目錄的文件是已存在的,會提示是否覆蓋文件,這是因爲命令行下的cp是有別名的,使用alias | grep "cp"查看cp別名,alias cp='cp -i',-i參數是若目標文件已經存在,在覆蓋時會先詢問;若是不想提示詢問直接覆蓋,能夠cp -n 或者/bin/cp。

 3.複製目錄:

   目標目錄不存在時

[root@oldboylinux ~]# ls
anaconda-ks.cfg  a.txt  backup  b.txt  c.txt  data  d.txt  ett.txt  e.txt  install.log  install.log.syslog  mkdirtest  oldboy.txt  readme.txt  test
[root@oldboylinux ~]# cp -a mkdirtest mkdirtest2
[root@oldboylinux ~]# ll mkdirtest2
total 24
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 bin
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 config
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 info
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib32
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 sbin
[root@oldboylinux ~]# ll mkdirtest
total 24
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 bin
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 config
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 info
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib32
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 sbin

  目標目錄已存在時

[root@oldboylinux ~]# mkdir mkdirtest3
[root@oldboylinux ~]# ll mkdirtest3
total 0
[root@oldboylinux ~]# cp -a mkdirtest mkdirtest3
[root@oldboylinux ~]# ll mkdirtest3
total 4
drwxr-xr-x. 8 root root 4096 Jun 29 02:38 mkdirtest
[root@oldboylinux ~]#

說明:在複製目錄時,當目標目錄不存在時,複製時會先建立目標目錄,而後將源目錄內的內容複製到目標目錄;當目標目錄存在時,會直接將源目錄複製到已存在的目標目錄下。

相關文章
相關標籤/搜索