成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在不使用mv命令的情況下移動文件

系統(tǒng) Linux
不起眼的 mv 命令是在你見過的每個 POSIX 系統(tǒng)中都能找到的有用工具之一。它的作用是明確定義的,并且做得很好:將文件從文件系統(tǒng)中的一個位置移動到另一個位置。但是 Linux 非常靈活,還有其他移動文件的辦法。使用不同的工具可以完美匹配一些特殊用例,這算一個小優(yōu)勢。

[[276196]]

有時當你需要移動一個文件時,mv 命令似乎不是最佳選項,那么你會如何做呢?

不起眼的 mv 命令是在你見過的每個 POSIX 系統(tǒng)中都能找到的有用工具之一。它的作用是明確定義的,并且做得很好:將文件從文件系統(tǒng)中的一個位置移動到另一個位置。但是 Linux 非常靈活,還有其他移動文件的辦法。使用不同的工具可以完美匹配一些特殊用例,這算一個小優(yōu)勢。

在遠離 mv 之前,先看看這個命令的默認結果。首先,創(chuàng)建一個目錄并生成一些權限為 777 的文件:

  1. $ mkdir example
  2. $ touch example/{foo,bar,baz}
  3. $ for i in example/*; do ls /bin > "${i}"; done
  4. $ chmod 777 example/*

你可能不會這么認為,但是文件在一個文件系統(tǒng)中作為條目存在,稱為索引節(jié)點(通常稱為 inode),你可以使用 ls 命令及其 --inode 選項查看一個文件占用的 inode:

  1. $ ls --inode example/foo
  2. 7476868 example/foo

作為測試,將文件從示例目錄移動到當前目錄,然后查看文件的屬性:

  1. $ mv example/foo .
  2. $ ls -l -G -g --inode
  3. 7476868 -rwxrwxrwx. 1 29545 Aug  2 07:28 foo

如你所見,原始文件及權限已經(jīng)被“移動”,但它的 inode 沒有變化。

這就是 mv 工具用來移動的方式:保持 inode 不變(除非文件被移動到不同的文件系統(tǒng)),并保留其所有權和權限。

其他工具提供了不同的選項。

復制和刪除

在某些系統(tǒng)上,移動操作是真的在做移動:比特從文件系統(tǒng)中的某個位置刪除并重新分配給另一個位置。這種行為在很大程度上已經(jīng)失寵。現(xiàn)在,移動操作要么是屬性重新分配(inode 現(xiàn)在指向文件組織中的不同位置),要么是復制和刪除操作的組合。這種設計的哲學意圖是確保在移動失敗時,文件不會碎片化。

mv 不同,cp 命令會在文件系統(tǒng)中創(chuàng)建一個全新的數(shù)據(jù)對象,它有一個新的 inode 位置,并取決于 umask。你可以使用 cprm(如果有的話,或者 trash —— LCTT 譯注:它是一個命令行回收站工具)命令來模仿 mv 命令。

  1. $ cp example/foo .
  2. $ ls -l -G -g --inode
  3. 7476869 -rwxrwxr-x. 29545 Aug  2 11:58 foo
  4. $ trash example/foo

示例中的新 foo 文件獲得了 755 權限,因為此處的 umask 明確排除了寫入權限。

  1. $ umask
  2. 0002

有關 umask 的更多信息,閱讀 Alex Juarez 這篇關于文件權限的文章。

查看和刪除

與復制和刪除類似,使用 cat(或 tac)命令在創(chuàng)建“移動”文件時分配不同的權限。假設當前目錄中是一個沒有 foo 的新測試環(huán)境:

  1. $ cat example/foo > foo
  2. $ ls -l -G -g --inode
  3. 7476869 -rw-rw-r--. 29545 Aug 8 12:21 foo
  4. $ trash example/foo

這次,創(chuàng)建了一個沒有事先設置權限的新文件,所以文件最終權限完全取決于 umask 設置,它不會阻止用戶和組的權限位(無論 umask 是什么,都不會為新文件授予可執(zhí)行權限),但它會阻止其他人的寫入(值為 2)。所以結果是一個權限是 664 的文件。

Rsync

rsync 命令是一個強大的多功能工具,用于在主機和文件系統(tǒng)位置之間發(fā)送文件。此命令有許多可用選項,包括使其目標鏡像成為源。

你可以使用帶有 --remove-source-files 選項的 rsync 復制,然后刪除文件,并可以帶上你選擇執(zhí)行同步的任何其他選項(常見的通用選項是 --archive):

  1. $ rsync --archive --remove-source-files example/foo .
  2. $ ls example
  3. bar  baz
  4. $ ls -lGgi
  5. 7476870 -rwxrwxrwx. 1 seth users 29545 Aug 8 12:23 foo

在這里,你可以看到保留了文件權限和所有權,只是更新了時間戳,并刪除了源文件。

警告:不要將此選項與 --delete 混淆,后者會從目標目錄中刪除(源目錄中不存在的)文件。誤用 --delete 會清除很多數(shù)據(jù),建議你不要使用此選項,除非是在測試環(huán)境中。

你可以覆蓋其中一些默認值,更改權限和修改設置:

  1. $ rsync --chmod=666 --times \
  2. --remove-source-files example/foo .
  3. $ ls example
  4. bar  baz
  5. $ ls -lGgi
  6. 7476871 -rw-rw-r--. 1 seth users 29545 Aug 8 12:55 foo

這里,目標的 umask 會生效,因此 --chmod=666 選項會產(chǎn)生一個權限為 644 的文件。

好處不僅僅是權限,與簡單的 mv 命令相比,rsync 命令有很多有用的選項(其中最重要的是 --exclude 選項,這樣你可以在一個大型移動操作中排除某些項目),這使它成為一個更強大的工具。例如,要在移動文件集合時排除所有備份文件:

  1. $ rsync --chmod=666 --times \
  2. --exclude '*~' \
  3. --remove-source-files example/foo .

使用 install 設置權限

install 命令是一個專門面向開發(fā)人員的復制命令,主要是作為軟件編譯安裝例程的一部分調(diào)用。它并不為用戶所知(我經(jīng)常想知道為什么它有這么一個直觀的名字,而剩下的包管理器卻只能使用縮寫和昵稱),但是 install 實際上是一種將文件放在你想要地方的有用方法。

install 命令有很多選項,包括 --backup--compare 命令(以避免更新文件的新副本)。

cpcat 命令不同,但與 mv 完全相同,install 命令可以在復制文件的同時而保留其時間戳:

  1. $ install --preserve-timestamp example/foo .
  2. $ ls -l -G -g --inode
  3. 7476869 -rwxr-xr-x. 1 29545 Aug  2 07:28 foo
  4. $ trash example/foo

在這里,文件被復制到一個新的 inode,但它的 mtime(修改時間)沒有改變。但權限被設置為 install 的默認值 755

你可以使用 install 來設置文件的權限,所有者和組:

  1. $ install --preserve-timestamp \
  2. --owner=skenlon \
  3. --group=dialout \
  4. --mode=666 example/foo .
  5. $ ls -li
  6. 7476869 -rw-rw-rw-. 1 skenlon dialout 29545 Aug  2 07:28 foo
  7. $ trash example/foo

移動、復制和刪除

文件包含數(shù)據(jù),而真正重要的文件包含你的數(shù)據(jù)。學會聰明地管理它們是很重要的,現(xiàn)在你有了確保以你想要的方式來處理數(shù)據(jù)的工具包。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-12-07 11:15:20

設置Windows 10命令

2018-04-09 11:10:04

PHP前端控制器自動加載

2010-06-30 10:55:13

SQL Server日

2020-11-18 09:26:52

@property裝飾器代碼

2019-02-27 12:00:09

開源Org模式Emacs

2009-04-28 18:59:56

LinuxWindows體驗

2023-03-27 13:00:13

Javascript前端

2022-07-31 23:55:23

區(qū)塊鏈加密貨幣代幣

2019-07-29 10:56:32

Linuxuseradd命令創(chuàng)建用戶賬號

2021-09-17 10:51:01

Linuxlspci命令

2020-08-15 07:30:58

Linux命令匯總

2020-06-12 10:03:01

線程安全多線程

2021-10-26 15:59:18

WiFi 6WiFi 5通信網(wǎng)絡

2019-12-12 15:32:48

ITvCenterVMware

2016-12-01 18:57:39

火狐瀏覽器Firefox

2024-01-09 11:39:47

數(shù)字化轉(zhuǎn)型數(shù)字優(yōu)先企業(yè)

2015-06-01 06:39:18

JavaJava比C++

2013-07-29 14:50:43

API

2009-12-01 11:39:39

配置路由器IP

2022-07-05 08:41:56

數(shù)據(jù)安全工具安全備份
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人澡人人爱 | 成年人在线视频 | 成人免费视频在线观看 | 奇米四色影视 | 亚洲精品久久久蜜桃网站 | 亚洲午夜视频在线观看 | 国内精品久久久久久影视8 最新黄色在线观看 | 精品欧美一区二区三区久久久小说 | 91污在线| 欧美日韩不卡 | 99久久精品国产麻豆演员表 | 亚洲一区二区中文字幕 | 精品国产乱码久久久久久老虎 | 国产目拍亚洲精品99久久精品 | 日本久久精品视频 | 欧美精品一区在线 | 天堂色网| 国产成人小视频 | 亚洲精品天堂 | 一区二区三区四区av | 激情五月综合 | 久久成人av电影 | 欧美在线一区二区三区 | av看看| 日韩精品免费在线 | 亚洲第一成年免费网站 | 新91视频网 | jizz18国产| 艹逼网 | 日日干日日色 | 日韩电影a| 国产精品高清在线 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 日韩欧美国产精品一区二区三区 | 久久久成人动漫 | 欧美影院 | 国产一区二区小视频 | 欧美男人天堂 | 国产成人精品免费视频大全最热 | 国产精品日韩欧美一区二区三区 | 欧美a∨|