生活随笔
收集整理的這篇文章主要介紹了
复制、移动和删除:cp, rm, mv
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
要復(fù)制文件,請(qǐng)使用cp(copy)命令。不過(guò),cp命令的用途很多。除了單純的復(fù)制之外,還可以建立連接文件(就是快捷方式),比較兩個(gè)文件的新舊而予以更新,以及復(fù)制整個(gè)目錄等等。至于移動(dòng)目錄與文件,則使用mv(move),這個(gè)命令也可以直接用來(lái)重命名(rename)。刪除使用rm(remove)命令。下面我們就來(lái)看一看。
cp(復(fù)制文件或目錄)
[root@linux ~]# cp [-adfilprsu] 來(lái)源文件(source) 目標(biāo)文件(destination) [root@linux ~]# cp [options] source1 source2 source3 .... directory 參數(shù): -a : 相當(dāng)于 -pdr 的意思。 -d : 若來(lái)源文件為連接文件的屬性(link file),則復(fù)制連接文件屬性而非文件本身。 -f : 強(qiáng)制(force)的意思,若有重復(fù)或其他疑問(wèn)時(shí),不會(huì)詢問(wèn)用戶,而強(qiáng)制復(fù)制。 -i : 若目標(biāo)文件(destination)已經(jīng)存在,在覆蓋時(shí)會(huì)先詢問(wèn)是否真的操作。 -l : 建立硬連接(hard link)的連接文件,而非復(fù)制文件本身。 -p : 連同文件的屬性一起復(fù)制,而非使用默認(rèn)屬性。 -r : 遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為。 -s : 復(fù)制成為符號(hào)連接文件(symbolic link),即“快捷方式”文件。 -u : 若目標(biāo)文件比來(lái)源文件舊,才更新目標(biāo)文件。 最后,需要注意,如果來(lái)源文件有兩個(gè)以上,則最后一個(gè)目的文件一定是“目錄”。 范例: 范例一:將家目錄下的 .bashrc復(fù)制到 /tmp下,并重命名為bashrc。 [root@linux ~]# cd /tmp [root@linux tmp]# cp ~/.bashrc bashrc [root@linux tmp]# cp -i ~/.bashrc bashrc cp: overwrite `basrhc'? n # 重復(fù)做兩次動(dòng)作,由于 /tmp下面已經(jīng)存在bashrc了,加上 -i參數(shù), # 在覆蓋前會(huì)讓用戶確認(rèn)??梢园聪耼或者y。 # 但是,反過(guò)來(lái)說(shuō),如果不想詢問(wèn),則加上 -f參數(shù)來(lái)強(qiáng)制直接覆蓋。 范例二:將 /var/log/wtmp復(fù)制到 /tmp下。 [root@linux tmp]# cp /var/log/wtmp . <==想要復(fù)制到當(dāng)前目錄,最后的 . 不要忘 [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ù)的情況下,文件的擁有者會(huì)改變,連權(quán)限也跟著改變了。 # 這是個(gè)很重要的特性。要注意。還有,文件建立時(shí)間也不一樣了。 # 如果想要將文件的所有屬性都一起復(fù)制,可以加上 -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 # 整個(gè)屬性完全一模一樣。這就是 -a的作用。 范例三:將 /etc/ 目錄下的所有內(nèi)容復(fù)制到 /tmp。 [root@linux tmp]# cp /etc/ /tmp cp: omitting directory `/etc'?? <== 如果是目錄,不能直接復(fù)制,要加上 -r參數(shù) [root@linux tmp]# cp -r /etc/ /tmp # 再次強(qiáng)調(diào)。-r可以復(fù)制目錄,但是,文件與目錄的權(quán)限會(huì)被改變。 # 所以,也可以利用cp -a /etc /tmp來(lái)執(zhí)行命令。 范例四:將范例一復(fù)制的bashrc建立一個(gè)符號(hào)連接文件(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ù)造成的,建立的是一個(gè)“快捷方式”, # 所以會(huì)看到在文件的最右邊,會(huì)顯示這個(gè)文件是“連接”到哪里的。 # 至于bashrc_hlink。建立了這個(gè)文件之后,bashrc與bashrc_hlink # 所有的參數(shù)都一樣,只是,第二列的link數(shù)改變成為2了。而不是原本的1。 # 這兩種連接方式的異同,我們會(huì)在下一章介紹。 范例五:若 ~/.bashrc比 /tmp/bashrc新,則復(fù)制。 [root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc # -u的作用是,在目標(biāo)文件與來(lái)源文件有差異時(shí),才會(huì)復(fù)制。 # 所以,比較常用于“備份”。 范例6:將范例四生成的bashrc_slink復(fù)制成為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 # 這個(gè)例子也很有趣。原本復(fù)制的是連接文件,卻將連接文件的實(shí)際文件復(fù)制過(guò)來(lái)了。 # 也就是說(shuō),如果沒(méi)有加上任何參數(shù),復(fù)制的是來(lái)源文件,而非連接文件的屬性。 # 若要復(fù)制連接文件的屬性,就要使用 -d或者 -a參數(shù)。 范例7:將家目錄的 .bashrc及 .bash_history復(fù)制到 /tmp下面。 [root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp # 將多個(gè)數(shù)據(jù)一次復(fù)制到同一個(gè)目錄。 |
cp的功能很多,由于我們常常進(jìn)行一些數(shù)據(jù)的復(fù)制,所以也會(huì)常常用到這個(gè)命令。一般來(lái)說(shuō),如果去復(fù)制別人的數(shù)據(jù)(當(dāng)然,該文件必須要有read的權(quán)限),總是希望復(fù)制到的數(shù)據(jù)最后是我們自己的,所以,在默認(rèn)條件中,cp的來(lái)源文件與目標(biāo)文件的權(quán)限是不同的,目標(biāo)文件的擁有者通常會(huì)是命令操作者本身。舉例來(lái)說(shuō),范例二中,由于我是root身份,因此復(fù)制過(guò)來(lái)的文件擁有者與用戶組就改變成為root所有了。
由于具有這個(gè)特性,在進(jìn)行備份的時(shí)候,某些需要特別注意的特殊權(quán)限文件,例如密碼文件(/etc/shadow)以及一些設(shè)置文件,就不能直接以cp來(lái)復(fù)制,而必須要加上 -a或者是 -p,這些可以完整復(fù)制文件權(quán)限的參數(shù)。另外,如果想要復(fù)制文件給其他用戶,也必須要注意文件的權(quán)限(包含讀、寫、執(zhí)行以及文件擁有者),否則,其他人還是無(wú)法對(duì)你給的文件進(jìn)行修改。特別要注意。
上面的第4個(gè)范例最有趣,使用 -l及 -s都會(huì)建立所謂的連接文件(link file),但是這兩種連接文件有不一樣的顯示。這是怎么一回事? -l就是所謂的硬連接(hard link), -s則是符號(hào)連接(symbolic link),筆者這里先不介紹,因?yàn)檫@涉及i-node的相關(guān)知識(shí),我們還沒(méi)有介紹到,下一章再討論這個(gè)連接的問(wèn)題。總之,由于cp有種種文件屬性與權(quán)限,所以,在復(fù)制時(shí),必須要清楚地了解到:
??是否需要完整地保留來(lái)源文件的信息?
??來(lái)源文件是否為符號(hào)連接文件(symbolic link file)?
??來(lái)源文件是否為特殊的文件,例如FIFO、套接字等?
??來(lái)源文件是否為目錄?
rm(刪除文件或目錄)
[root@linux ~]# rm [-fir] 文件或目錄 參數(shù): -f :就是 force 的意思,強(qiáng)制刪除。 -i :交互模式,在刪除前會(huì)詢問(wèn)用戶是否動(dòng)作 -r :遞歸刪除。常用在目錄的刪除 范例: 范例一:建立一個(gè)文件后予以刪除 [root@linux ~]# cd /tmp [root@linux tmp]# cp ~/.bashrc bashrc [root@linux tmp]# rm -i bashrc rm: remove regular file `bashrc'? y # 如果加上 -i參數(shù)就會(huì)主動(dòng)詢問(wèn)。如果不需要詢問(wèn)就加 -f參數(shù)。 范例二:刪除一個(gè)不為空的目錄。 [root@linux tmp]# mkdir test [root@linux tmp]# cp ~/.bashrc test/ <== 將文件復(fù)制到此目錄去,就不是空的目錄了 [root@linux tmp]# rmdir test rmdir: `test': Directory not empty <== 刪不掉。因?yàn)檫@不是空的目錄。 [root@linux tmp]# rm -rf test |
刪除命令(remove)相當(dāng)于DOS下的del命令。這里要注意的是,通常,在Linux系統(tǒng)中,為了怕文件被誤刪,很多版本默認(rèn)有 -i參數(shù),-i指每個(gè)文件被刪除之前都會(huì)讓用戶確認(rèn)一次,以防誤刪文件。如果要連目錄下的內(nèi)容都一起刪除,例如子目錄里面還有子目錄,就要使用 -rf參數(shù)。不過(guò),使用“rm -rf”命令之前,請(qǐng)千萬(wàn)注意,因?yàn)樵撃夸浕蛭募翱隙ā睍?huì)被root刪除。因?yàn)橄到y(tǒng)不會(huì)再次詢問(wèn)是否要?jiǎng)h除。所以這是非常重要的命令,需要特別注意。不過(guò),如果確定該目錄不要了,使用rm -rf來(lái)循環(huán)刪除是不錯(cuò)的方式。
mv(移動(dòng)文件與目錄,或重命名) [root@linux ~]# mv [-fiv] source destination [root@linux ~]# mv [options] source1 source2 source3 .... directory 參數(shù): -f :force,強(qiáng)制的意思,強(qiáng)制直接移動(dòng)而不詢問(wèn)。 -i :若目標(biāo)文件(destination)已經(jīng)存在,就會(huì)詢問(wèn)是否覆蓋。 -u :若目標(biāo)文件已經(jīng)存在,且來(lái)源文件比較新,才會(huì)更新(update) 范例: 范例一:復(fù)制一個(gè)文件,建立一個(gè)目錄,將文件移動(dòng)到目錄中。 [root@linux ~]# cd /tmp [root@linux tmp]# cp ~/.bashrc bashrc [root@linux tmp]# mkdir mvtest [root@linux tmp]# mv bashrc mvtest # 將某個(gè)文件移動(dòng)到某個(gè)目錄去,就是這樣做。 范例二:將剛剛的目錄名重命名為 mvtest2。 [root@linux tmp]# mv mvtest mvtest2 <== 這樣就重命名了。 # 其實(shí),在Linux下還有個(gè)有趣的命令,名為rename, # 該命令專門進(jìn)行文件的重命名。用途不少??梢詤㈤唌an rename。 范例三:再建立兩個(gè)文件,再全部移動(dòng)到 /tmp/mvtest2中。 [root@linux tmp]# cp ~/.bashrc bashrc1 [root@linux tmp]# cp ~/.bashrc bashrc2 [root@linux tmp]# mv bashrc1 bashrc2 mvtest2 # 注意,如果有多個(gè)來(lái)源文件或目錄,則最后一個(gè)目標(biāo)文件一定是“目錄”。 # 意思是,將所有數(shù)據(jù)移動(dòng)到該目錄。 |
這是移動(dòng)(move)的意思。要移動(dòng)文件或目錄,這個(gè)命令就很重要。同樣,也可以使用 -u(update)來(lái)測(cè)試新舊文件,看看是否需要移動(dòng)。另外一個(gè)用途就是“更改文件名”。我們可以很輕松地使用mv來(lái)更改文件名。不過(guò),Linux的rename命令,可以用來(lái)更改大量文件的文件名,你可以利用man rename查看一下。
轉(zhuǎn)載于:https://www.cnblogs.com/benio/archive/2010/07/27/1785929.html
總結(jié)
以上是生活随笔為你收集整理的复制、移动和删除:cp, rm, mv的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。