Linux文件系統(tǒng)

Linux文件系統(tǒng)目錄結構


Linux文件系統(tǒng)目錄結構

根目錄:“/”,文件系統(tǒng)開始

一級目錄:

?????? /boot:存放系統(tǒng)相關的內容,如內核文件(Vmlinuz),引導加載器(grub)等

?????? /dev:存放設備相關內容

????????????? /dev/sda(/dev/sr0):硬盤光盤等塊設備(b,block)

????????????? /dev/zero:字符設備(c,character),是一個邏輯概念

????????????? /dev/null:空值,“黑洞”

????????????? /dev/random:生成隨機數(shù)

?????? /etc:存放linux相關設置,等同于windows注冊表,系統(tǒng)配置文件

?????? /home:存放用戶數(shù)據(jù),各用戶的家目錄

?????? /root:系統(tǒng)管理員root家目錄

? ? ? ?/run:存放系統(tǒng)運行中產(chǎn)生的相關數(shù)據(jù)

? ? ? ?/bin:二進制binary,存放用戶可執(zhí)行的二進制程序

? ? ? ?/sbin:s代表系統(tǒng)管理,存放系統(tǒng)管理員root可執(zhí)行的二進制程序

? ? ? ?/tmp:存放臨時數(shù)據(jù)

? ? ? ?/usr:操作系統(tǒng)中的絕大部分數(shù)據(jù)

? ? ? ?/var:可變內容,如日志、緩存數(shù)據(jù)等

? ? ? ?/proc:進程(不存放在硬盤上),存放于內存中

Linux文件系統(tǒng)特點:

????????大小寫敏感是針對于文件系統(tǒng)(ext4,xfs敏感;fat,ntfs不敏感)而非操作系統(tǒng)

????????*例如Linux系統(tǒng)使用fat文件系統(tǒng)時大小寫不敏感

????????文件數(shù)據(jù):包括元數(shù)據(jù)metadata(文件屬性)和數(shù)據(jù)data(文件內容)

????????Linux文件系統(tǒng)分層結構基于LSB(Linux Standard Base),官方規(guī)范標準FHS(FilesystemHierarchy Standard)

????????文件名最長255個字節(jié),包括路徑在內文件名稱最長4095個字節(jié)

????????顏色:藍色->目錄,綠色->可執(zhí)行程序,紅色->壓縮文件,淺藍色->軟連接(類似于windows中快捷方式),灰色->其他文件(顏色可通過/etc/DIR_COLORS文件進行配置)

????????類型:- 普通文件,d 目錄文件,b 塊設備,c 字符設備,l 符號鏈接文件,p 管道文件pipe,s 套接字文件socket

Linux文件系統(tǒng)相關命令

????????*絕對路徑:完整的文件為路徑

????????*相對路徑:相對于當前工作目錄或某目錄的位置

????????basename:顯示路徑基名

????????dirname:顯示路徑目錄名

????????pwd:顯示當前工作目錄(CWD:Current Working Directory)的絕對路徑

?????? ????????-L顯示鏈接路徑(默認)

?????????????? -P顯示真實物理路徑

?????? ????????[cf]進入/bin路徑下分別輸入pwd –L和pwd–P

????????ls:列出目錄內容

?????? ????????-a包含隱藏文件

?????????????? -l顯示額外信息

?????? ????????-R目錄遞歸通過

?????????????? -ld目錄和符號鏈接信息

?????? ????????-1文件分行顯示

?????? ????????-S按從大到小排序

?????? ????????-t按mtime排序(--time=ctime|atime)

?????? ????????-X按文件后綴排序

????????cd:進入文件目錄(changedirectory)

????????文件時間:

?????? ????????mtime:文件修改時間(modify)

?????? ????????atime:文件訪問時間(access)

?????? ????????ctime:文件屬性變更時間(change)

?????? ????????*可用stat命令查看,touch命令可用來更新文件時間

????????cp:復制文件和目錄

?????????????? cp[OPTION] [-T] SOURCE DEST

?????? ????????cp[OPTION] SOURCE… DIRECTORY

?????? ????????cp[OPTION] -t DIRECTORY SOURCE…

?????? ????????*root用戶cp命令使用了重命名alias cp=‘cp -i’

?????????????? *cp-a:歸檔,常用于備份?(等同于-dR)

????????mv:移動和重命名文件

?????? ????????mv [OPTION] [-T]SOURCE DEST

?????? ????????mv[OPTION] SOURCE… DIRECTORY

?????? ????????mv[OPTION] -t DIRECTORY SOURCE…

?????? ????????常用選項:

?????? ?????? ????????-i:交互式

?????? ?????? ????????-f:強制

?????? ?????? ????????-b:目標存在,覆蓋前先備份

?????? ????????重命名可以使用rename命令(rename STD1 STD2 file:將file中的STD1修改為STD2)

????????rm:刪除文件或目錄

?????????????? *生產(chǎn)中建議禁用,或者使用alias重命名為mv

?????????????? rm[OPTION]… FILE…

?????????????? 常用選項:

????????????? ????????-i:交互式

????????????????????? -f:強制刪除

????????????? ????????-r:遞歸

????????????? ????????--no-preserve-root:刪除根目錄(也可以用rm -rf /*)

????????????? ????????*centos6之后rm -rf /命令無法執(zhí)行

????????文件通配符:

?????? ????????*:匹配零或多個字符

?????? ?????????:匹配任何單個字符

?????? ????????~:用戶家目錄

????????????? ~name:用戶name的家目錄

????????????? ~+:當前工作目錄

????????????? ~-:前一個工作目錄

?????? ????????[0-9]:匹配0-9之間的數(shù)字

?????? ????????[a-z]:匹配aAbBcC…yYz之間的數(shù)字

?????? ????????[A-Z]:匹配AbBcC…yYzZ之間的數(shù)字

?????? ????????[abc]:匹配a,b,c之間的任一字符

?????? ????????[^abc]:匹配a,b,c之外的字符

?????? ????????預定義字符:可通過man 7 glob查看

????????????? ????????[:digit:]:任意數(shù)字,相當于0-9

????????????? ????????[:lower:]:任意小寫字母

????????????? ????????[:upper:]:任意大寫字母

????????????? ????????[:alpha:]:? 任意大小寫字母

????????????? ????????[:alnum:]:任意字母或數(shù)字

Linux目錄操作

????????tree:顯示目錄樹

?????????????? -d只顯示目錄

?????? ????????-Llevel:制定顯示的層級數(shù)(tree –L 2 /etc:表示顯示/etc目錄下兩層的樹結構)

?????? ????????-Ppattern:只顯示由指定pattern匹配到的路徑(tree–P /etc/rc*)

????????mkdir:創(chuàng)建目錄

?????? ????????-p 自動創(chuàng)建所需的各目錄

?????????????? -v顯示詳細信息

?????? ????????-mMODE創(chuàng)建目錄時直接指定權限

????????rmdir:刪除空目錄

?????? ????????-p遞歸刪除父空目錄

????????????????-v 顯示詳細信息

????????rm –r:遞歸刪除目錄樹

Linux索引節(jié)點

????????file = file name + file data + filemetadata + inode number

?????? ????????filename存放在目錄的數(shù)據(jù)內容中

?????? ????????filemetada和inode number存放在文件的inode table節(jié)點表中

????????inode:index node表中包含文件系統(tǒng)所有文件列表

?????? ????????一個節(jié)點(索引節(jié)點)是一個表項,包含相關文件的屬性信息(元數(shù)據(jù)),包括:

????????????? ????????文件類型,權限,UID,GID

????????????? ????????鏈接數(shù)(指向這個文件名的路徑名稱個數(shù))

????????????? ????????該文件大小和不同時間戳

????????????? ????????指向磁盤上文件的數(shù)據(jù)塊指針

????????????? ????????有關文件的其他數(shù)據(jù)

????????inode表結構


inode表結構


inode表結構

????????數(shù)據(jù)塊指針(以ext4為例)

?????? ????????直接指針:直接指向存儲的數(shù)據(jù)區(qū)域,前12個

?????? ????????間接指針:一級指針,二級指針,三級指針等

Linux鏈接

????????硬鏈接

?????? ????????格式:link filename [linkname]

? ? ? ? ? ? ? ?本質:針對一個文件,起多個文件名

????????????????創(chuàng)建硬鏈接會增加額外的記錄項以引用文件

????????????????對應于同一文件系統(tǒng)上的一個物理文件

????????????????每個目錄引用相同的inode號

????????????????創(chuàng)建時鏈接數(shù)遞增

????????????????刪除文件時:

?????? ????????????????rm命令遞減計數(shù)的鏈接

?????? ????????????????文件要存在,至少有一個鏈接數(shù)

? ? ? ? ? ? ? ? ? ? ? ? [eg]執(zhí)行l(wèi)n /data/f1

? ? ? ? ? ? ? ? */data/f1-link后盡管刪除/data/f1文件,還能訪問/data/f1-link????

? ? ? ? ????????不能跨驅動器或跨分區(qū)鏈接,不能對目錄進行鏈接

????????軟鏈接

?????? ????????格式:ln -s filename [linkname]

?????? ????????本質:指向軟連接所引用文件的名稱,又稱符號鏈接,

?????? ????????原始文件一般路徑用相對路徑,相對路徑是相對于軟鏈接文件的路徑,非當前工作路徑。

?????? ????????ls-l顯示鏈接的名稱和引用的文件

?????? ????????可以對目錄進行,可以跨分區(qū)進行

????????????????符號鏈接指向引用文件的路徑;其大小為指向路徑字符串的長度;不增加或減少目標文件的inode計數(shù)

????????????????區(qū)別:

?????? ????????????????同一個文件?

?????? ????????????????跨分區(qū)?

?????? ????????????????鏈接數(shù)增長?

?????? ????????????????inodeNumber相同?

?????? ????????????????刪除原始文件,鏈接文件可否訪問?

?????? ????????????????鏈接大小

?????? ????????????????支持目錄?

?????? ????????????????相對路徑寫法?

標準I/O和管道

????????三種I/O設備:

?????? ????????0:標準輸入(STDIN),默認接受來自鍵盤的輸入

?????? ????????1:標準輸出(STDOUT),默認輸出到終端窗口

?????? ????????2:標準輸出(STDERR),默認輸出到終端窗口

? ? ? ? ? ? ? ?*每打開一個文件linux系統(tǒng)都會生成一個文件描述符fd(file decriptor)

? ? ? ? I/O重定向:

? ? ? ? ? ? ? ?本質:改變默認的輸入輸出位置

?????? ????????>:將STDOUT重定向到文件

?????? ????????2>:將STDERR重定向到文件

? ? ? ? ? ? ? ?&>:將所有輸出重定向到文件

????????????????>>:在原有內容基礎上,追加內容

????????????????<:重定向STDIN

????????????????( ):合并多個命令進行重定向,例如(cal 2007;cal 2008) &> file

????????????????*在使用>命令時文件內容會被覆蓋:

?????? ????????set –C:禁止將內容覆蓋至已有文件,但可以追加

?????? ????????set +C:允許覆蓋

?????? ????????>| file強制覆蓋

????????tr:轉換和刪除字符

?????? ????????格式:tr [OPTION]SET1 [SET2]

?????????????? -c –C --complement:去字符集補集(取反)

?????? ????????-d --delete:刪除所有屬于第一字符集的字符

?????????????? -s --squeeze-repeats:將連續(xù)重復的字符單獨以一個字符表示

?????????????? -t --truncate-set1:將第一個字符集對應字符轉化為第二字符集對應字符(默認)

????????管道:

?????? ????????本質:用于連接命令,將一個命令的標準輸出做為另一個命令的標準輸入

?????? ????????格式:cmd1 | cmd2 | cmd3…

????????????? ????????[eg]ls | tr ‘a(chǎn)-z’ ‘A-Z’

?????? ????????注意:

????????????? ????????cmd1和cmd2一定是STDOUT

????????????? ????????STDERR默認無法通過管道轉發(fā),但可以通過2>&1或|&實現(xiàn)

????????????? ????????最后一個命令會在當前shell進程的子進程中進行

? ? ? ? ? ? ? ? ?-符號:例如tar –cvf - /home | tar –xvf –

? ? ? ? ? ? ? ? ? ? ? ? ? ? 將/home內的文件打包,但打包的數(shù)據(jù)不記錄到文件而是傳到STDOUT,經(jīng)過管道后傳給后面的tar –xvf,-代表前一個命令的STDOUT,因此不需要臨時文件file了

?????????????? tee:重定向到多個目標(可既在終端輸出,又重定向到文件,同時查看和記錄輸出)

????????????? ????????cmd1| tee [-a] file | cmd2

????????????? ????????將cmd1的STDOUT保存在file中,作為cmd2的輸入-a追加

相關練習

1.顯示/etc目錄下,所有以.d結尾的文件或目錄

命令:ls -d /etc/*.d

? ?2.顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

命令:ls -d /etc/[mnrp]*.conf

3.創(chuàng)建/app/rootdir目錄,并復制/root下所有文件到該目錄內,?要求保留原有權限

命令:mkdir -p /app/rootdir和cp -pr /root/* /app/rootdir


復制結果

4.使用命令行展開功能,創(chuàng)建/tmp/a1,?/tmp/a2,?/tmp/a1/a,?/tmp/a1/b,在/tmp目錄下創(chuàng)建目錄:x_y,?x_z,?q_y,?q_z

命令:mkdir -p /tmp/{a{1/{a,b},2},{x,q}_{y,z}}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容