4-1 文件管理

文件管理

touch命令

touch:-m,-c,-anode

  1. 文件不存在建立空文件
  2. 文件存在刷新時間戳
touch -a        #僅改變atime和ctime
touch -m        #僅改變mtime和ctime
touch -t        #[[CC]YY]MMDDhhmm[.ss]指定atime和mitme的時間戳
touch -c        #若是文件不存在,則不予建立

查看shell:cat /etc/shells
查看當前shell:echo $SHELLshell

  • 建立空文件:>,>>,touch
  • 某些狀況使用>建立控股文件是失效的好比csh,不過能夠cat /dev/null>FILE來建立
  • 這種是追加的方式>>
  • touch 建立空文件更加廣泛
  • cat /dev/null >FILE清空文件更加方便

cp命令

root用戶的cp是別名,使用了cp -i命令
不加選項的cp是會改變文件屬性的,好比時間屬性,好比屬主屬組屬性,用法:bash

cp /PATH/TO/FILE /DIR                   #直接複製
cp /PATH/TO/FILE1 /PATH/TO/FILE2 DEST   #多個文件複製到一個文件夾
cp -t DEST /PATH/TO/FILE1...            #將目的和源位置呼喚
cp -r /PATH/TO/DIR /DIR/                #將前一個目錄複製到後一個目錄
cp -r /PATH/OT/DIR /DIR/DIR1            #若是DIR1不存在會將DIR更名爲DIR1,若是存在會進入目錄在DIR1下創建DIR目錄複製
源\目標 不存在 存在且爲文件 存在且爲目錄
一個文件 新建DEST,並將SRC的內容填充至DEST中 將SRC中的內容覆蓋至DEST中 在DEST下新建與源文件同名的文件,並將SRC中內容填充至新文件中
多個文件 提示錯誤 提示錯誤 在DEST下新建與源文件同名的文件,並將源文件內容複製到目錄中
目錄(須使用-r選項) 建立指定的DEST同名目錄,複製SRC目錄中全部文件至DEST下 提示錯誤 在DEST下新建與源目錄同名的目錄,並將SRC中內容複製至新目錄中
-i                          #覆蓋前提示
-n                          #不覆蓋
-R                          #等於-r遞歸複製目錄及內部全部內容
-d                          #--no-dereference --preserv=links 不復制原文件,只複製連接名
-p                          #等同--preserv=mode,ownership,timestmp
-preserv=ownership          #做用與保留屬性,保留屬組屬主
    mode:權限
    ownership:屬組屬主
    timestamp:時間戳
    links:連接
    xattr:文件擴展屬性
    context:
    all:全部
-f                          #等同--force若是文件存在且不能被打開,將文件刪除後嘗試複製
-a                          #至關於-dR --preserv=all既能夠保留屬性,還能夠保留連接和整個目錄
-u                          #等同--update只複製源比目標更新文件或目標不存在的文件
-b                          #目標存在,覆蓋錢先備份,形式爲FILENAME~,能治保留一份
--backup=numbered           #目標存在,覆蓋前先備份加數字後綴
-v                          #--verbose顯示覆制詳細信息

mv命令

mv:移動文件或者更改文件名稱指針

mv SRC DEST
mv SRC... DEST
mv -t DEST SRC...
#經常使用選項
-i:                    #交互式
-f:                    #強制
-b:                    #目標存在,覆蓋先前備份

在分區內移動文件時很快,由於並無真正複製,而是將索引更改了一下而已,刪除也是同樣,將索引刪除code

rm命令

rm:刪除文件或文件夾blog

-i                      #交互式
-r                      #遞歸刪除文件
-f                      #不詢問也不報錯

rm -rf命令太過危險,在重要環境中應該使用別名,將rm改成mv移動至其餘文件夾中rm='mv -t /tmp/trash'遞歸

有特殊文件名的狀況下使用絕對路徑或者相對路徑刪除索引

刪除大文件時,正在使用的文件不會釋放空間,必要時可使用>將文件清楚並刪除,就會釋放空間(文件描述符被佔用)ip

rename命令

rename:批量修改文件名稱it

rename txt txt.bak f*       #將f開頭的全部txt文件改成txt.bak爲後綴的名稱

tree命令

tree:列出目錄的梳妝結構
-d:只顯示目錄
-L:指定顯示的層級數目
-P pattern:只顯示由指定wild-card 通配符匹配到的路徑

mkdir命令

mkdir:創建文件夾
-p:沒有路徑上的文件夾時創建文件夾
-v:顯示詳細信息
-m:建立目錄時直接指定權限

rmdir命令

rmdir:刪除空目錄
-p:刪除掉目標目錄後若是父目錄爲空,刪除,依次類推
-v:顯示詳細信息

df

df:查看磁盤使用信息
-h:使用k,M,G的方式顯示大小
-t:指定查看某個文件系統的分區
-i:查看分區節點編號的使用狀況

索引節點編號:inode

Inode:節點編號,爲文件的惟一標識
節點編號也是文件的元數據之一

元數據:metadata
存放了節點編號,權限大小,文件位置。屬組屬主信息等
stat命令能夠查看節點編號
ll -i也能夠查看節點編號

df -i查看inode號使用狀況,因爲在inode號用光後也會提示設備沒有空間,因此當空間還有,卻提示沒有剩餘空間,這就是節點編號用完

inode表結構
圖中左邊是元數據信息,而其中的指針信息爲標識文件存放位置的地方,假設一個數據塊存放爲4k大小,那麼直接指針能夠直接指向數據塊,ext4系列中有12個直接指針,12x4k爲48k大小,因此直接指針存放的文件最多爲48k大小,大於48k時須要雙重間接指針,一級指針指的是指針數據塊,二級指針指的纔是文件數據,依次類推,不一樣的文件系統細節不一樣

一個目錄是目錄下的文件名和inode號之間的映射
通常inode表會佔用文件系統磁盤空間的1%

cp命令執行過程:分配一個空閒的inode號,在inode表中生成新條目,在目錄中建立一個目錄項,將名稱與inode編號關聯拷貝數據生成新的文件

rm命令執行過程:連接數遞減,釋放的inode號能夠被重用,把數據塊放在空閒列表中,刪除目錄項,數據實際上不會被立刻刪除,但當另外一個文件使用數據塊時將被覆蓋

ln命令

ln FILE1 FILE2:建立的文件inode號是徹底同樣的,因此指的是同一個文件,這屬於硬連接

ln命令執行過程:在目錄中建立一個目錄項,將名稱與inode號關聯

連接數:有幾個硬連接,當硬連接爲1時刪除文件將會刪除文件,不然只會刪除一個目錄項
ll能夠查看連接數

因爲硬連接是同一個文件,因此不能跨分區
且硬連接不能夠連接文件夾,文件夾的硬連接數是能夠增加的,多一個子文件夾就能夠增長一個鏈接數,由於子目錄的..目錄就是此目錄

ln -s軟連接

ln -s就是創建軟鏈接,經過一個文件指向另外一個文件

ln -s f1.txt f1.txt.link            #建立了f1.txt的軟連接,軟鏈接是根據文件名的,且軟鏈接能夠跨設備,也能夠連接文件夾。軟鏈接創捷的時候的相對路徑有些奇特,軟鏈接的相對路徑必須相對於軟鏈接的路徑,例如:
ln -s ../f1.txt f11.txt.link

#軟連接不識別inode號,只根據文件名判斷,因此當原文件被刪除時,軟連接不會被刪除,在創建與原文件名同名的文件,軟鏈接便可回覆使用

#刪除時,rm -rf /data/dir11/ 會刪除dir1下的內容,而rm -rf /data/dir11 會刪除dir11這個軟鏈接  
dir1 
dir11 -> dir1

軟硬連接區別:

  1. 本質:
    硬:本質是一個文件
    軟:本質不是同一個文件
  2. 跨分區
  3. inode
  4. 連接數
  5. 文件夾
  6. 相對路徑
  7. 刪除原文件
  8. 文件類型,顏色

shared命令

shared:清理數據
可使用隨機數或者1,0從新覆蓋數據區域,能夠應付通常的數據清理場景

file命令

file:識別文件類型

file FILE
-b:                #只顯示結果不顯示文件名
-f:                #列出文件列表中的文件名的文件類型,將文件目錄放進一個文件中
-F:                #輸出指定分隔符,默認是:
-L:                #查看對應軟鏈接類型

magic number:文件類型的標識
readelf 查看二進制頭便可看到magic

/dev/zero不能隨意cp若是要複製-a保留屬性

相關文章
相關標籤/搜索