日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

复制、移动和删除:cp, rm, mv

發(fā)布時間:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复制、移动和删除:cp, rm, mv 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  要復制文件,請使用cp(copy)命令。不過,cp命令的用途很多。除了單純的復制之外,還可以建立連接文件(就是快捷方式),比較兩個文件的新舊而予以更新,以及復制整個目錄等等。至于移動目錄與文件,則使用mv(move),這個命令也可以直接用來重命名(rename)。刪除使用rm(remove)命令。下面我們就來看一看。

cp(復制文件或目錄)

[root@linux ~]# cp [-adfilprsu] 來源文件(source) 目標文件(destination)
[root@linux ~]# cp [options] source1 source2 source3 .... directory
參數(shù):
-a : 相當于 -pdr 的意思。
-d : 若來源文件為連接文件的屬性(link file),則復制連接文件屬性而非文件本身。
-f : 強制(force)的意思,若有重復或其他疑問時,不會詢問用戶,而強制復制。
-i : 若目標文件(destination)已經(jīng)存在,在覆蓋時會先詢問是否真的操作。
-l : 建立硬連接(hard link)的連接文件,而非復制文件本身。
-p : 連同文件的屬性一起復制,而非使用默認屬性。
-r : 遞歸持續(xù)復制,用于目錄的復制行為。
-s : 復制成為符號連接文件(symbolic link),即“快捷方式”文件。
-u : 若目標文件比來源文件舊,才更新目標文件。
最后,需要注意,如果來源文件有兩個以上,則最后一個目的文件一定是“目錄”。
范例:
范例一:將家目錄下的 .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下面已經(jīng)存在bashrc了,加上 -i參數(shù),
# 在覆蓋前會讓用戶確認。可以按下n或者y。
# 但是,反過來說,如果不想詢問,則加上 -f參數(shù)來強制直接覆蓋。

范例二:將 /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
# 注意到了嗎?在不加任何參數(shù)的情況下,文件的擁有者會改變,連權(quán)限也跟著改變了。
# 這是個很重要的特性。要注意。還有,文件建立時間也不一樣了。
# 如果想要將文件的所有屬性都一起復制,可以加上 -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/ 目錄下的所有內(nèi)容復制到 /tmp。
[root@linux tmp]# cp /etc/ /tmp
cp: omitting directory `/etc'?? <== 如果是目錄,不能直接復制,要加上 -r參數(shù)
[root@linux tmp]# cp -r /etc/ /tmp
# 再次強調(diào)。-r可以復制目錄,但是,文件與目錄的權(quán)限會被改變。
# 所以,也可以利用cp -a /etc /tmp來執(zhí)行命令。

范例四:將范例一復制的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的參數(shù)造成的,建立的是一個“快捷方式”,
# 所以會看到在文件的最右邊,會顯示這個文件是“連接”到哪里的。
# 至于bashrc_hlink。建立了這個文件之后,bashrc與bashrc_hlink
# 所有的參數(shù)都一樣,只是,第二列的link數(shù)改變成為2了。而不是原本的1。
# 這兩種連接方式的異同,我們會在下一章介紹。

范例五:若 ~/.bashrc比 /tmp/bashrc新,則復制。
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc
# -u的作用是,在目標文件與來源文件有差異時,才會復制。
# 所以,比較常用于“備份”。

范例6:將范例四生成的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
# 這個例子也很有趣。原本復制的是連接文件,卻將連接文件的實際文件復制過來了。
# 也就是說,如果沒有加上任何參數(shù),復制的是來源文件,而非連接文件的屬性。
# 若要復制連接文件的屬性,就要使用 -d或者 -a參數(shù)。

范例7:將家目錄的 .bashrc及 .bash_history復制到 /tmp下面。
[root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 將多個數(shù)據(jù)一次復制到同一個目錄。

cp的功能很多,由于我們常常進行一些數(shù)據(jù)的復制,所以也會常常用到這個命令。一般來說,如果去復制別人的數(shù)據(jù)(當然,該文件必須要有read的權(quán)限),總是希望復制到的數(shù)據(jù)最后是我們自己的,所以,在默認條件中,cp的來源文件與目標文件的權(quán)限是不同的,目標文件的擁有者通常會是命令操作者本身。舉例來說,范例二中,由于我是root身份,因此復制過來的文件擁有者與用戶組就改變成為root所有了。
由于具有這個特性,在進行備份的時候,某些需要特別注意的特殊權(quán)限文件,例如密碼文件(/etc/shadow)以及一些設置文件,就不能直接以cp來復制,而必須要加上 -a或者是 -p,這些可以完整復制文件權(quán)限的參數(shù)。另外,如果想要復制文件給其他用戶,也必須要注意文件的權(quán)限(包含讀、寫、執(zhí)行以及文件擁有者),否則,其他人還是無法對你給的文件進行修改。特別要注意。
上面的第4個范例最有趣,使用 -l及 -s都會建立所謂的連接文件(link file),但是這兩種連接文件有不一樣的顯示。這是怎么一回事? -l就是所謂的硬連接(hard link), -s則是符號連接(symbolic link),筆者這里先不介紹,因為這涉及i-node的相關知識,我們還沒有介紹到,下一章再討論這個連接的問題。總之,由于cp有種種文件屬性與權(quán)限,所以,在復制時,必須要清楚地了解到:
??是否需要完整地保留來源文件的信息?
??來源文件是否為符號連接文件(symbolic link file)?
??來源文件是否為特殊的文件,例如FIFO、套接字等?
??來源文件是否為目錄?
rm(刪除文件或目錄)

[root@linux ~]# rm [-fir] 文件或目錄
參數(shù):
-f :就是 force 的意思,強制刪除。
-i :交互模式,在刪除前會詢問用戶是否動作
-r :遞歸刪除。常用在目錄的刪除
范例:
范例一:建立一個文件后予以刪除
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
# 如果加上 -i參數(shù)就會主動詢問。如果不需要詢問就加 -f參數(shù)。

范例二:刪除一個不為空的目錄。
[root@linux tmp]# mkdir test
[root@linux tmp]# cp ~/.bashrc test/ <== 將文件復制到此目錄去,就不是空的目錄了
[root@linux tmp]# rmdir test
rmdir: `test': Directory not empty <== 刪不掉。因為這不是空的目錄。
[root@linux tmp]# rm -rf test


刪除命令(remove)相當于DOS下的del命令。這里要注意的是,通常,在Linux系統(tǒng)中,為了怕文件被誤刪,很多版本默認有 -i參數(shù),-i指每個文件被刪除之前都會讓用戶確認一次,以防誤刪文件。如果要連目錄下的內(nèi)容都一起刪除,例如子目錄里面還有子目錄,就要使用 -rf參數(shù)。不過,使用“rm -rf”命令之前,請千萬注意,因為該目錄或文件“肯定”會被root刪除。因為系統(tǒng)不會再次詢問是否要刪除。所以這是非常重要的命令,需要特別注意。不過,如果確定該目錄不要了,使用rm -rf來循環(huán)刪除是不錯的方式。
mv(移動文件與目錄,或重命名)

[root@linux ~]# mv [-fiv] source destination
[root@linux ~]# mv [options] source1 source2 source3 .... directory
參數(shù):
-f :force,強制的意思,強制直接移動而不詢問。
-i :若目標文件(destination)已經(jīng)存在,就會詢問是否覆蓋。
-u :若目標文件已經(jīng)存在,且來源文件比較新,才會更新(update)
范例:
范例一:復制一個文件,建立一個目錄,將文件移動到目錄中。
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# mkdir mvtest
[root@linux tmp]# mv bashrc mvtest
# 將某個文件移動到某個目錄去,就是這樣做。

范例二:將剛剛的目錄名重命名為 mvtest2。
[root@linux tmp]# mv mvtest mvtest2 <== 這樣就重命名了。
# 其實,在Linux下還有個有趣的命令,名為rename,
# 該命令專門進行文件的重命名。用途不少。可以參閱man rename。

范例三:再建立兩個文件,再全部移動到 /tmp/mvtest2中。
[root@linux tmp]# cp ~/.bashrc bashrc1
[root@linux tmp]# cp ~/.bashrc bashrc2
[root@linux tmp]# mv bashrc1 bashrc2 mvtest2
# 注意,如果有多個來源文件或目錄,則最后一個目標文件一定是“目錄”。
# 意思是,將所有數(shù)據(jù)移動到該目錄。

這是移動(move)的意思。要移動文件或目錄,這個命令就很重要。同樣,也可以使用 -u(update)來測試新舊文件,看看是否需要移動。另外一個用途就是“更改文件名”。我們可以很輕松地使用mv來更改文件名。不過,Linux的rename命令,可以用來更改大量文件的文件名,你可以利用man rename查看一下。

轉(zhuǎn)載于:https://www.cnblogs.com/benio/archive/2010/07/27/1785929.html

總結(jié)

以上是生活随笔為你收集整理的复制、移动和删除:cp, rm, mv的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。