touch:-m,-c,-anode
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
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 SRC DEST mv SRC... DEST mv -t DEST SRC... #經常使用選項 -i: #交互式 -f: #強制 -b: #目標存在,覆蓋先前備份
在分區內移動文件時很快,由於並無真正複製,而是將索引更改了一下而已,刪除也是同樣,將索引刪除code
rm:刪除文件或文件夾blog
-i #交互式 -r #遞歸刪除文件 -f #不詢問也不報錯
rm -rf命令太過危險,在重要環境中應該使用別名,將rm改成mv移動至其餘文件夾中rm='mv -t /tmp/trash'遞歸
有特殊文件名的狀況下使用絕對路徑或者相對路徑刪除索引
刪除大文件時,正在使用的文件不會釋放空間,必要時可使用>將文件清楚並刪除,就會釋放空間(文件描述符被佔用)ip
rename:批量修改文件名稱it
rename txt txt.bak f* #將f開頭的全部txt文件改成txt.bak爲後綴的名稱
tree:列出目錄的梳妝結構
-d:只顯示目錄
-L:指定顯示的層級數目
-P pattern:只顯示由指定wild-card 通配符匹配到的路徑
mkdir:創建文件夾
-p:沒有路徑上的文件夾時創建文件夾
-v:顯示詳細信息
-m:建立目錄時直接指定權限
rmdir:刪除空目錄
-p:刪除掉目標目錄後若是父目錄爲空,刪除,依次類推
-v:顯示詳細信息
df:查看磁盤使用信息
-h:使用k,M,G的方式顯示大小
-t:指定查看某個文件系統的分區
-i:查看分區節點編號的使用狀況
Inode:節點編號,爲文件的惟一標識
節點編號也是文件的元數據之一
元數據:metadata
存放了節點編號,權限大小,文件位置。屬組屬主信息等
stat命令能夠查看節點編號
ll -i也能夠查看節點編號
df -i查看inode號使用狀況,因爲在inode號用光後也會提示設備沒有空間,因此當空間還有,卻提示沒有剩餘空間,這就是節點編號用完
圖中左邊是元數據信息,而其中的指針信息爲標識文件存放位置的地方,假設一個數據塊存放爲4k大小,那麼直接指針能夠直接指向數據塊,ext4系列中有12個直接指針,12x4k爲48k大小,因此直接指針存放的文件最多爲48k大小,大於48k時須要雙重間接指針,一級指針指的是指針數據塊,二級指針指的纔是文件數據,依次類推,不一樣的文件系統細節不一樣
一個目錄是目錄下的文件名和inode號之間的映射
通常inode表會佔用文件系統磁盤空間的1%
cp命令執行過程:分配一個空閒的inode號,在inode表中生成新條目,在目錄中建立一個目錄項,將名稱與inode編號關聯拷貝數據生成新的文件
rm命令執行過程:連接數遞減,釋放的inode號能夠被重用,把數據塊放在空閒列表中,刪除目錄項,數據實際上不會被立刻刪除,但當另外一個文件使用數據塊時將被覆蓋
ln FILE1 FILE2:建立的文件inode號是徹底同樣的,因此指的是同一個文件,這屬於硬連接
ln命令執行過程:在目錄中建立一個目錄項,將名稱與inode號關聯
連接數:有幾個硬連接,當硬連接爲1時刪除文件將會刪除文件,不然只會刪除一個目錄項
ll能夠查看連接數
因爲硬連接是同一個文件,因此不能跨分區
且硬連接不能夠連接文件夾,文件夾的硬連接數是能夠增加的,多一個子文件夾就能夠增長一個鏈接數,由於子目錄的..目錄就是此目錄
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
軟硬連接區別:
shared:清理數據
可使用隨機數或者1,0從新覆蓋數據區域,能夠應付通常的數據清理場景
file:識別文件類型
file FILE -b: #只顯示結果不顯示文件名 -f: #列出文件列表中的文件名的文件類型,將文件目錄放進一個文件中 -F: #輸出指定分隔符,默認是: -L: #查看對應軟鏈接類型
magic number:文件類型的標識
readelf 查看二進制頭便可看到magic
/dev/zero不能隨意cp若是要複製-a保留屬性