這篇文章主要介紹“不用mv命令的情況下怎么移動(dòng)文件”,在日常操作中,相信很多人在不用mv命令的情況下怎么移動(dòng)文件問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”不用mv命令的情況下怎么移動(dòng)文件”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
在遠(yuǎn)離 mv 之前,先看看這個(gè)命令的默認(rèn)結(jié)果。首先,創(chuàng)建一個(gè)目錄并生成一些權(quán)限為 777 的文件:不起眼的 mv 命令是在你見(jiàn)過(guò)的每個(gè) POSIX 系統(tǒng)中都能找到的有用工具之一。它的作用是明確定義的,并且做得很好:將文件從文件系統(tǒng)中的一個(gè)位置移動(dòng)到另一個(gè)位置。但是 Linux 非常靈活,還有其他移動(dòng)文件的辦法。使用不同的工具可以完美匹配一些特殊用例,這算一個(gè)小優(yōu)勢(shì)。
$ mkdir example $ touch example/{foo,bar,baz} $ for i in example/*; do ls /bin > "${i}"; done $ chmod 777 example/*
你可能不會(huì)這么認(rèn)為,但是文件在一個(gè)文件系統(tǒng)中作為條目存在,稱(chēng)為索引節(jié)點(diǎn)(通常稱(chēng)為 inode),你可以使用 ls 命令及其 --inode 選項(xiàng)查看一個(gè)文件占用的 inode:
$ ls --inode example/foo 7476868 example/foo
作為測(cè)試,將文件從示例目錄移動(dòng)到當(dāng)前目錄,然后查看文件的屬性:
$ mv example/foo . $ ls -l -G -g --inode 7476868 -rwxrwxrwx. 1 29545 Aug 2 07:28 foo
如你所見(jiàn),原始文件及權(quán)限已經(jīng)被“移動(dòng)”,但它的 inode 沒(méi)有變化。
這就是 mv 工具用來(lái)移動(dòng)的方式:保持 inode 不變(除非文件被移動(dòng)到不同的文件系統(tǒng)),并保留其所有權(quán)和權(quán)限。
其他工具提供了不同的選項(xiàng)。
復(fù)制和刪除
在某些系統(tǒng)上,移動(dòng)操作是真的在做移動(dòng):比特從文件系統(tǒng)中的某個(gè)位置刪除并重新分配給另一個(gè)位置。這種行為在很大程度上已經(jīng)失寵。現(xiàn)在,移動(dòng)操作要么是屬性重新分配(inode 現(xiàn)在指向文件組織中的不同位置),要么是復(fù)制和刪除操作的組合。這種設(shè)計(jì)的哲學(xué)意圖是確保在移動(dòng)失敗時(shí),文件不會(huì)碎片化。
與 mv 不同,cp 命令會(huì)在文件系統(tǒng)中創(chuàng)建一個(gè)全新的數(shù)據(jù)對(duì)象,它有一個(gè)新的 inode 位置,并取決于 umask。你可以使用 cp 和 rm(如果有的話(huà),或者 trash —— LCTT 譯注:它是一個(gè)命令行回收站工具)命令來(lái)模仿 mv 命令。
$ cp example/foo . $ ls -l -G -g --inode 7476869 -rwxrwxr-x. 29545 Aug 2 11:58 foo $ trash example/foo
示例中的新 foo 文件獲得了 755 權(quán)限,因?yàn)榇颂幍?umask 明確排除了寫(xiě)入權(quán)限。
$ umask 0002
有關(guān) umask 的更多信息,閱讀 Alex Juarez 這篇關(guān)于文件權(quán)限的文章。
查看和刪除
與復(fù)制和刪除類(lèi)似,使用 cat(或 tac)命令在創(chuàng)建“移動(dòng)”文件時(shí)分配不同的權(quán)限。假設(shè)當(dāng)前目錄中是一個(gè)沒(méi)有 foo 的新測(cè)試環(huán)境:
$ cat example/foo > foo $ ls -l -G -g --inode 7476869 -rw-rw-r--. 29545 Aug 8 12:21 foo $ trash example/foo
這次,創(chuàng)建了一個(gè)沒(méi)有事先設(shè)置權(quán)限的新文件,所以文件最終權(quán)限完全取決于 umask 設(shè)置,它不會(huì)阻止用戶(hù)和組的權(quán)限位(無(wú)論 umask 是什么,都不會(huì)為新文件授予可執(zhí)行權(quán)限),但它會(huì)阻止其他人的寫(xiě)入(值為 2)。所以結(jié)果是一個(gè)權(quán)限是 664 的文件。
Rsync
rsync 命令是一個(gè)強(qiáng)大的多功能工具,用于在主機(jī)和文件系統(tǒng)位置之間發(fā)送文件。此命令有許多可用選項(xiàng),包括使其目標(biāo)鏡像成為源。
你可以使用帶有 --remove-source-files 選項(xiàng)的 rsync 復(fù)制,然后刪除文件,并可以帶上你選擇執(zhí)行同步的任何其他選項(xiàng)(常見(jiàn)的通用選項(xiàng)是 --archive):
$ rsync --archive --remove-source-files example/foo . $ ls example bar baz $ ls -lGgi 7476870 -rwxrwxrwx. 1 seth users 29545 Aug 8 12:23 foo
在這里,你可以看到保留了文件權(quán)限和所有權(quán),只是更新了時(shí)間戳,并刪除了源文件。
警告:不要將此選項(xiàng)與 --delete 混淆,后者會(huì)從目標(biāo)目錄中刪除(源目錄中不存在的)文件。誤用 --delete 會(huì)清除很多數(shù)據(jù),建議你不要使用此選項(xiàng),除非是在測(cè)試環(huán)境中。
你可以覆蓋其中一些默認(rèn)值,更改權(quán)限和修改設(shè)置:
$ rsync --chmod=666 --times \ --remove-source-files example/foo . $ ls example bar baz $ ls -lGgi 7476871 -rw-rw-r--. 1 seth users 29545 Aug 8 12:55 foo
這里,目標(biāo)的 umask 會(huì)生效,因此 --chmod=666 選項(xiàng)會(huì)產(chǎn)生一個(gè)權(quán)限為 644 的文件。
好處不僅僅是權(quán)限,與簡(jiǎn)單的 mv 命令相比,rsync 命令有很多有用的選項(xiàng)(其中最重要的是 --exclude 選項(xiàng),這樣你可以在一個(gè)大型移動(dòng)操作中排除某些項(xiàng)目),這使它成為一個(gè)更強(qiáng)大的工具。例如,要在移動(dòng)文件集合時(shí)排除所有備份文件:
$ rsync --chmod=666 --times \ --exclude '*~' \ --remove-source-files example/foo .
使用 install 設(shè)置權(quán)限
install 命令是一個(gè)專(zhuān)門(mén)面向開(kāi)發(fā)人員的復(fù)制命令,主要是作為軟件編譯安裝例程的一部分調(diào)用。它并不為用戶(hù)所知(我經(jīng)常想知道為什么它有這么一個(gè)直觀的名字,而剩下的包管理器卻只能使用縮寫(xiě)和昵稱(chēng)),但是 install 實(shí)際上是一種將文件放在你想要地方的有用方法。
install 命令有很多選項(xiàng),包括 --backup 和 --compare 命令(以避免更新文件的新副本)。
與 cp 和 cat 命令不同,但與 mv 完全相同,install 命令可以在復(fù)制文件的同時(shí)而保留其時(shí)間戳:
$ install --preserve-timestamp example/foo . $ ls -l -G -g --inode 7476869 -rwxr-xr-x. 1 29545 Aug 2 07:28 foo $ trash example/foo
在這里,文件被復(fù)制到一個(gè)新的 inode,但它的 mtime(修改時(shí)間)沒(méi)有改變。但權(quán)限被設(shè)置為 install 的默認(rèn)值 755。
你可以使用 install 來(lái)設(shè)置文件的權(quán)限,所有者和組:
$ install --preserve-timestamp \ --owner=skenlon \ --group=dialout \ --mode=666 example/foo . $ ls -li 7476869 -rw-rw-rw-. 1 skenlon dialout 29545 Aug 2 07:28 foo $ trash example/foo
移動(dòng)、復(fù)制和刪除
文件包含數(shù)據(jù),而真正重要的文件包含你的數(shù)據(jù)。學(xué)會(huì)聰明地管理它們是很重要的,現(xiàn)在你有了確保以你想要的方式來(lái)處理數(shù)據(jù)的工具包。
到此,關(guān)于“不用mv命令的情況下怎么移動(dòng)文件”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
本文名稱(chēng):不用mv命令的情況下怎么移動(dòng)文件-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article40/cdpdho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容