1. 命令功能
cp --copy files and directories。復制文件或目錄。
2. 語法格式
cp [option] source des
cp [option] source directory
cp [option] -t directory source
參數 |
參數說明 |
-a |
--archive 相當於drp結合使用 |
-d |
如果文件為鏈接文件,復制鏈接文件的源文件而非鏈接文件 |
-r |
遞歸復制目錄(包含目錄下的多級子目錄) |
-p |
連同文件的屬性一起復制過去,而非預設屬性 |
-f |
force強制復制,若有重復或其他問題,不詢問使用者,而強制復制 |
-i |
當目的文件已存在,在覆蓋前會先詢問是否真的復制 |
-s |
復制成為符號鏈接文件,即“快捷方式”文件 |
-u |
若destination比source舊才更新destination |
-t |
默認情況下命令格式為cp 源文件 目標文件,使用-t 可以顛倒順序 格式為 cp –t 目標文件 源文件 |
說明:當來源文件有兩個以上,則最后一個目的文件一定要是目錄才行。
3. 使用范例
基礎范例
范例1 cp –a,把源文件的全部屬性復制到目標目錄,不帶參數和代參數-a的比較。
[root@localhost home]# pwd
/home
[root@localhost home]# ls -l /home/cxf/test_cxf
-rw-rw-r--. 1 cxf cxf 12 Mar 13 18:05 /home/cxf/test_cxf
[root@localhost home]#
[root@localhost home]# cp /home/cxf/test_cxf /home/DIR/
[root@localhost home]# ls -l /home/DIR/test_cxf
-rw-r--r--. 1 root root 12 Mar 13 18:07 /home/DIR/test_cxf #文件屬組發生了變化
[root@localhost DIR]# cp -a /home/cxf/test_cxf /home/DIR/
[root@localhost DIR]# ls -l test_cxf
-rw-rw-r--. 1 cxf cxf 12 Mar 13 18:05 test_cxf #帶 –a參數 復制文件屬性
通過帶參數和不帶參數比較文件修改時間屬性:
[root@localhost DIR]# ls -lh /home/cxf/test_cxf
-rw-rw-r--. 1 cxf cxf 12 Mar 13 18:05 /home/cxf/test_cxf #源文件修改時間屬性
[root@localhost DIR]# cp /home/cxf/test_cxf .
[root@localhost DIR]# ls -lh test_cxf
-rw-r--r--. 1 root root 12 Mar 13 22:27 test_cxf #時間屬性發生變化、
[root@localhost DIR]# cp -p /home/cxf/test_cxf test_cxf_1 #復制文件並改名
[root@localhost DIR]# ls -lh test_cxf_1
-rw-rw-r--. 1 cxf cxf 12 Mar 13 18:05 test_cxf_1 #時間屬性沒有改變,故-a選項會連同文件屬性,時間屬性一同復制。
范例2 :-i參數實例
[root@localhost DIR]# cp -i /home/cxf/test_cxf .
cp: overwrite `./test_cxf'? y
[root@localhost DIR]# cp /home/cxf/test_cxf . #為什么不帶-i,也提示?
cp: overwrite `./test_cxf'? y #由於centos默認為cp設置了別名在,
增加了-i的參數。
[root@localhost DIR]# alias cp
alias cp='cp -i'
在shell腳本中執行cp時,若沒有-i參數,則不會詢問是否覆蓋,由於命令行和shell腳本執行時的環境變量不同,在腳本中一般使用命令的全路徑。
范例3 使用-r參數復制目錄
[root@localhost home]# cp /root DIR/
cp: omitting directory `/root' #復制root到DIR,提示會跳過目錄/root,復制不成功。
[root@localhost home]# cp /root DIR/ -r #把root目錄復制到DIR目錄中
[root@localhost home]# ls -l DIR/
total 12
dr-xr-x---. 4 root root 4096 Mar 13 22:41 root #復制root目錄成功
-rw-r--r--. 1 root root 12 Mar 13 22:34 test_cxf
-rw-rw-r--. 1 cxf cxf 12 Mar 13 18:05 test_cxf_1
2. 技巧性范例
范例4 cp覆蓋文件前不提示是否覆蓋的幾種方法。
第一種:使用命令全路徑。
[root@localhost DIR]# cp /home/cxf/test_cxf .
cp: overwrite `./test_cxf'? y
[root@localhost DIR]# /bin/cp /home/cxf/test_cxf .
[root@localhost DIR]#
第二種:取消cp別名 unalias cp 重啟后失效
第三種:命令開頭使用反斜線(\)
[root@localhost DIR]# \cp /home/cxf/test_cxf . #使用反斜線屏蔽系統別名。
[root@localhost DIR]#