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表結構


????????數(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重定向到文件
? ? ? ? ? ? ? ?&>:將所有輸出重定向到文件
????????????????>>:在原有內容基礎上,追加內容
????????????????( ):合并多個命令進行重定向,例如(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結尾的文件或目錄

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

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


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