一、文件系統的基本結構
?
1、文件和目錄被組成一個單根倒置樹目錄結構
2、文件系統從根目錄下開始,用“/”表示
3、根文件系統(rootfs):root filesystem文件名區分大小寫
4、以 . 開頭的文件為隱藏文件
5、路徑用/隔離
6文件有兩類數據:元數據和數據本身
7、文件名規則
- 文件名最多255個字節包括路徑在內文件名稱最長4095個字節
- 藍色-->目錄 綠色-->可執行文件 紅色-->壓縮文件 淺藍色-->鏈接文件 灰色-->其他文件?
- 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用,有些字符需要用引號來引用它們
- 標準Linux文件系統(如ext4),文件名稱大小寫敏感例如:MAIL, Mail, mail, mAiL,部分文件系統大小寫不敏感,文件大小寫敏感與否取決于文件系統而不是操作系統
8、文件系統結構
- /boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放于此目錄?
- /bin:所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序?
- /sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序?
- /lib:啟動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
- /lib64:專用于x86_64系統上的輔助共享庫文件存放位置?
- /etc:配置文件目錄?
- /home/USERNAME:普通用戶家目錄?
- /root:管理員的家目錄?
- /media:便攜式移動設備掛載點
- /mnt:臨時文件系統掛載點?
- /dev:設備文件及特殊文件存儲位置
- b: block device,隨機訪問
- c: character device,線性訪問
- /opt:第三方應用程序的安裝位置
- /srv:系統上運行的服務用到的數據
- /tmp:臨時文件存儲位置
- /usr: universal shared, read-only data
- bin: 保證系統擁有完整功能而提供的應用程序
- sbin:
- lib:32位使用
- lib64:只存在64位系統
- include: C程序的頭文件(header files)
- share:結構化獨立的數據,例如doc, man等
- local:第三方應用程序的安裝位置
- bin, sbin, lib, lib64, etc, share?
- /var: variable data files
- cache: 應用程序緩存數據目錄
- lib: 應用程序狀態信息數據
- local:專用于為/usr/local下的應用程序存儲可變數據
- lock: 鎖文件
- log: 日志目錄及文件
- opt: 專用于為/opt下的應用程序存儲可變數據
- run: 運行中的進程相關數據,通常用于存儲進程pid文件
- spool: 應用程序數據池
- tmp: 保存系統兩次重啟之間產生的臨時數據
- /proc: 用于輸出內核與進程信息相關的虛擬文件系統
- /sys:用于輸出當前系統上硬件設備相關信息虛擬文件系統?
- /selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置
二、linux應用程序的組成部分以及文件的類型
1、linux文件的組成部分
- 二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
- 庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64?
- 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc?
- 幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man,/usr/local/share/doc
2、文件類型
- - 普通文件?
- d 目錄文件?
- b 塊設備?
- c 字符設備?
- l 符號鏈接文件?
- p 管道文件pipe?
- s 套接字文件socket
三、文件常用的命令
ls
列出當前目錄的內容或指定目錄
用法:ls [options] [files_or_dirs]
示例
ls -a 包含隱藏文件
ls -l 顯示額外的信息
ls -R 目錄遞歸
ls -ld 目錄和符號鏈接信息
ls -1 文件分行顯示
ls –S 按從大到小排序
ls –t 按mtime排序
ls –u 配合-t選項,顯示并按atime從新到舊排序
ls –U 按目錄存放順序顯示
ls –X 按文件后綴排序
stat
文件:metadata, data
三個時間戳:
access time 訪問時間,atime,讀取文件內容
modify time 修改時間, mtime,改變文件內容(數據)
change time 改變
時間, ctime,元數據發生改變
touch
-a 僅改變 atime和ctime
-m 僅改變 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的時間戳
-c 如果文件不存在,則不予創建
cp
SRC是文件:
如果目標不存在:新建DEST,并將SRC中內容填充至DEST中
如果目標存在:
如果DEST是文件:將SRC中的內容覆蓋至DEST中
基于安全,建議為cp命令使用-i選項
如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中
-i 覆蓋前提示
-n 不覆蓋,注意兩者順序
-r, -R 遞歸復制目錄及內部的所有內容
-a 歸檔,相當于-dR --preserv=all
-d --no-dereference --preserv=links 不復制原文件,只復制鏈接名?
--preserv[=ATTR_LIST]
mode: 權限
ownership: 屬主屬組
timestamp:
links
xattr
context
all
-p 等同--preserv=mode,ownership,timestamp
-v --verbose 顯示復制過程
-f --force 強制
-u --update 只復制源比目標更新文件或目標不存在的文件
-b 目標存在,覆蓋前先備份,形式為 filename~
--backu
p=numbered 目標存在,覆蓋前先備份加數字后綴
mv
-i 交互式
-f 強制
-b 目標存在,覆蓋前先備份
tree
-d: 只顯示目錄
-L level:指定顯示的層級數目
-P pattern: 只顯示由指定pattern匹配到的路徑?
mkdir
-p: 存在于不報錯,且可自動創建所需的各目錄
-v: 顯示詳細信息
-m MODE: 創建目錄時直接指定權限
rmdir
-p: 遞歸刪除父空目錄
-v: 顯示詳細信息?
通配符
* 匹配零個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~mage 用戶mage家目錄
~+ 當前工作目錄
~- 前一個工作目錄
[0-9] 匹配數字范圍
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一個字符?
[:digit:]:任意數字,相當于0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:標點符號
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:圖形字符
[:xdigit:]:十六進制字符
四、硬鏈接
1、創建硬鏈接會增加額外的記錄項以引用文件
2、對應于同一文件系統上一個物理文件
3、每個目錄引用相同的inode號
4、創建時鏈接數遞增
5、刪除文件時:
6、rm命令遞減計數的鏈接
7、文件要存在,至少有一個鏈接數
8、當鏈接數為零時,該文件被刪除
9、不能跨越驅動器或分區
10、語法:ln filename [linkname ]
五、軟連接
一個符號鏈接指向另一個文件
1、ls - l的 顯示鏈接的名稱和引用的文件
2、一個符號鏈接的內容是它引用文件的名稱
3、可以對目錄進行
4、可以跨分區
5、指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數
6、語法:ln -s filename [linkname]
六、軟硬鏈接的區別
1、文件類型不同
2、軟連接可跨分區,硬鏈接不可以
3、硬鏈接的與原文件的inode號相同,軟連接不同
4、硬鏈接可以增加文件的鏈接數,軟連接不可以
5、主從關系。硬鏈接無主從關系,原文件刪除不會影響訪問,軟連接則會失效。