ubuntu copy命令
cp(copy)命令
該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中。
語法: cp [選項] 源文件或目錄 目標文件或目錄
說明:該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。
該命令的各選項含義如下:
- a 該選項通常在拷貝目錄時使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用等于dpR選項的組合。
- d 拷貝時保留鏈接。
- f 刪除已經存在的目標文件而不提示。
- i 和f選項相反,在覆蓋目標文件之前將給出提示要求用戶確認。回答y時目標文件將被覆蓋,是交互式拷貝。
- p 此時cp除復制源文件的內容外,還將把其修改時間和訪問權限也復制到新文件中。
- r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名。
- l 不作拷貝,只是鏈接文件。
需要說明的是,為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp命令拷貝文件后,這個文件就會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用i選項。
?
例如:將/home/wally/test中 test.c 的文件復制到/local/arm 中,命令為:
cd /wally/test
ls
sudo cp -i test.c /local/arm
?
補充:
-a :相當于 -pdr 的意思;?
-d :若來源檔為連結檔的屬性(link file),則復制連結檔屬性而非檔案本身;?
-f :為強制 (force) 的意思,若有重復或其他疑問時,不會詢問使用者,而強制復制;?
-i :若目的檔(destination)已經存在時,在覆蓋時會先詢問是否真的動作!?
-l :進行硬式連結 (hard link) 的連結檔建立,而非復制檔案本身;?
-p :連同檔案的屬性一起復制過去,而非使用預設屬性;?
-r :遞回持續復制,用于目錄的復制行為;?
-s :復制成為符號連結檔 (symbolic link),亦即‘捷徑’檔案;?
-u :若 destination 比 source 舊才更新 destination !?
最后需要注意的,如果來源檔有兩個以上,則最后一個目的檔一定要是‘目錄’才行!?
范例:?
范例一:將家目錄下的 .bashrc 復制到 /tmp 下,并更名為 bashrc?
[root@linux ~]# cd /tmp?
[root@linux tmp]# cp ~/.bashrc bashrc?
[root@linux tmp]# cp -i ~/.bashrc bashrc?
cp: overwrite `basrhc'? n?
# 重復作兩次動作,由于 /tmp 底下已經存在 bashrc 了,加上 -i 參數,?
# 則在覆蓋前會詢問使用者是否確定!可以按下 n 或者 y 呢!?
# 但是,反過來說,如果不想要詢問時,則加上 -f 這個參數來強制直接覆蓋!?
范例二:將 /var/log/wtmp 復制到 /tmp 底下?
[root@linux tmp]# cp /var/log/wtmp . <==想要復制到目前的目錄,最后的 . 不要忘?
[root@linux tmp]# ls -l /var/log/wtmp wtmp?
-rw-rw-r-- 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp?
-rw-r--r-- 1 root root 71808 Jul 18 21:58 wtmp?
# 注意到了嗎?!在不加任何參數的情況下,檔案的所屬者會改變,連權限也跟著改變了~?
# 這是個很重要的特性!要注意喔!還有,連檔案建立的時間也不一樣了!?
# 如果您想要將檔案的所有特性都一起復制過來,可以加上 -a 喔!?
[root@linux tmp]# cp -a /var/log/wtmp wtmp_2?
[root@linux tmp]# ls -l /var/log/wtmp wtmp_2?
-rw-rw-r-- 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp?
-rw-rw-r-- 1 root utmp 71808 Jul 18 12:46 wtmp_2?
# 了了吧!整個資料特性完全一模一樣ㄟ!真是不賴~這就是 -a 的特性!?
范例三:復制 /etc/ 這個目錄下的所有內容到 /tmp 底下?
[root@linux tmp]# cp /etc/ /tmp?
cp: omitting directory `/etc' <== 如果是目錄,不能直接復制,要加上 -r 的參數?
[root@linux tmp]# cp -r /etc/ /tmp?
# 還是要再次的強調喔! -r 是可以復制目錄,但是,檔案與目錄的權限會被改變~?
# 所以,也可以利用 cp -a /etc /tmp 來下達指令喔!?
范例四:將范例一復制的 bashrc 建立一個連結檔 (symbolic link)?
[root@linux tmp]# ls -l bashrc?
-rw-r--r-- 1 root root 395 Jul 18 22:08 bashrc?
[root@linux tmp]# cp -s bashrc bashrc_slink?
[root@linux tmp]# cp -l bashrc bashrc_hlink?
[root@linux tmp]# ls -l bashrc*?
-rw-r--r-- 2 root root 395 Jul 18 22:08 bashrc?
-rw-r--r-- 2 root root 395 Jul 18 22:08 bashrc_hlink?
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc?
# 那個 bashrc_slink 是由 -s 的參數造成的,建立的是一個‘捷徑’,?
# 所以您會看到在檔案的最右邊,會顯示這個檔案是‘連結’到哪里去的!?
# 至于那個 bashrc_hlink 有趣了!建立了這個檔案之后, bashrc 與 bashrc_hlink?
# 所有的參數都一樣,只是,第二欄的 link 數改變成為 2 了~而不是原本的 1 喔!?
# 這兩種連結的方式的異同,我們會在下一章里面進行介紹的!?
范例五:若 ~/.bashrc 比 /tmp/bashrc 才復制過來?
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc?
# 這個 -u 的特性,是在目標檔案與來源檔案有差異時,才會復制的。?
# 所以,比較常被用于‘備份’的工作當中喔! ^_^?
范例六:將范例四造成的 bashrc_slink 復制成為 bashrc_slink_2?
[root@linux tmp]# cp bashrc_slink bashrc_slink_2?
[root@linux tmp]# ls -l bashrc_slink*?
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc?
-rw-r--r-- 1 root root 395 Jul 18 22:48 bashrc_slink_2?
# 這個例子也是很有趣喔!原本復制的是連結檔,但是卻將連結檔的實際檔案復制過來了?
# 也就是說,如果沒有加上任何參數時,復制的是原始檔案,而非連結檔的屬性!?
# 若要復制連結檔的屬性,就得要使用 -d 或者 -a 的參數了!?
范例七:將家目錄的 .bashrc 及 .bash_history 復制到 /tmp 底下?
[root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp?
# 可以將多個資料一次復制到同一個目錄去!
總結
以上是生活随笔為你收集整理的ubuntu copy命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu12.04 root用户登录
- 下一篇: 解决root用户登录Ubuntu12.0