一、文件系統
文件系統特徵
* 文件和目錄被組織成一個單根倒置樹結構
* 文件系統從根目錄下開始,用“/” 表示
* 根文件系統(rootfs): root filesystem
* 文件名稱:區分大小寫
* 以.開頭的文件爲隱藏文件
* 路徑分隔的 /
* 文件有兩類數據:
*
* 元數據: metadata
* 數據: data
*
元數據內容包括
*
* 文件名
* 文件大小
* 文件所在數據塊
* 數據塊的大小
* 文件類型
* 文件所在的Inode
* 硬鏈接次數
* 權限
* 屬主id
* 屬組id
* 最近一次訪問時間戳
* 最近一次更改文件內容的時間戳
* 最近一次更改文件元數據的時間戳
*
* 文件系統分層結構: LSB(Linux Standard Base)
FHS: (Filesystem Hierarchy Standard)
http://www.pathname.com/fhs/
文件命名規則
* 文件名最長255個字節
* 包括路徑在內文件名稱最長4095個字節
* 在系統中默認顯示:
藍色-->目錄
綠色-->可執行文件
紅色-->壓縮文件
淺藍色-->鏈接文件
灰色-->其他文件
* 除了 斜槓和NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用,某些字符需要用引號來引用
* 標準Linux文件系統(如ext4),文件名稱大小寫敏感
例如: MAIL, Mail, mail, mAiL
注:大小寫敏感與否與文件系統格式有關,如windows系統掛載到Linux中,大小寫不敏感
二、目錄結構
* /boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
* /bin:所有用戶使用的基本命令;不能關聯至獨立分區, OS啓動即會用到的程序(另:該“目錄”是一個鏈接文件,鏈接至/usr/bin)
* /sbin:管理類的基本命令;不能關聯至獨立分區, OS啓動即會用到的程序(另:該“目錄”是一個鏈接文件,鏈接至/usr/sbin)
* /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: 保證系統擁有完整功能而提供的應用程序,參考/bin
* sbin: 參考/sbin
* tmp:
* 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文件類型
* - 普通文件
* d 目錄文件
* b 塊設備
* c 字符設備
* l 符號鏈接文件
* p 管道文件pipe
* s 套接字文件socket
四、絕對路徑及相對路徑
絕對路徑
* 以正斜槓開始
* 完整的文件位置路徑
* 可用於指定任何一個文件名
相對路徑
* 不以斜線開始
* 指定相對於當前工作目錄或某目錄的位置
* 可以作爲一個簡短的形式指定一個文件名
五、文件通配符
-
匹配零個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~username 用戶家目錄
~+ 當前工作目錄
~- 前一個工作目錄
[0-9] 匹配數字範圍
[a-z] 字母
[A-Z] 字母
[wang] 匹配列表中的任何的一個字符
[^wang] 匹配列表中的所有字符以外的字符預定義的字符類:
可以使用命令查看:man 7 glob
[:digit:]:任意數字,相當於0-9
[:lower:]:任意小寫字母
[:alnum:]:任意數字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:標點符號
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:圖形字符
[:xdigit:]:十六進制字符
六、文件管理相關命令
pwd(print working directory):列出當前工作目錄
相關變量:
PWD:當前目錄路徑
OLDPWD:前一次目錄路徑
basename:獲取文件基名
dirname:獲取文件路徑名
cd:切換目錄
.. 切換至上一層目錄(父目錄)
~ 切換至當前用戶家目錄(只用cd也可切換至用戶家目錄)
- 切換至前上次所在目錄
ls:列出當前路徑下內容
-a 包含隱藏文件
-l 顯示額外的信息(= ll)
-R 目錄遞歸顯示
-ld 目錄和符號鏈接信息
-1 文件分行顯示
–S 按從大到小排序
–t 按mtime(內容修改時間)排序
–u 配合-t選項,顯示並按atime(文件訪問時間)從新到舊排序
–U 按目錄存放順序顯示
–X 按文件後綴排序
stat:display file or file system status(顯示文件及文件系統狀態)
touch:change file timestamps(修改文件時間戳,創建新文本文件)
-c:如果文件不存在,不創建文件;如果存在則更新時間戳
-a:change only the access time(只更改訪問時間)
-m:change only the modification time(只更改內容時間)
注:無論使用 -a or -m ,Change time都會跟着變化
-t STAMP:指定atime 和 mtime時間戳
use [[CC]YY]MMDDhhmm[.ss] instead of current time
cp:copy files and directories(複製文件及目錄)
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
-a:--archive,same as -dR --preserve=all(做備份時使用)
-u:--update,只複製發生改變及新增的文件及目錄(包含其下內容),個人理解爲“增量備份”
-i:交互式複製,覆蓋前提示(默認情況下,cp被系統alias爲cp -i)
-n:不覆蓋,與-i連用,使用時注意兩者順序(-i -n)
-r = -R:遞歸複製目錄及內部的所有內容
-d: --no-dereference --preserv=links 不復制原文件,只複製鏈接名
--preserv[=ATTR_LIST]
mode: 權限
ownership: 屬主屬組
timestamp:
links
xattr
context
all
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force,強制複製
-b: 目標存在,覆蓋前先備份
--backup=numbered 目標存在,覆蓋前先備份加數字後綴
mv:移動( 重命名)文件(目錄)
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
基本參數用法,參考cp命令
-i: 交互式
-f: 強制移動
-b: 目標存在,覆蓋前先備份
rm
rm [OPTION]... FILE...
基本參數用法,參考cp命令
-i 交互式
-f 強制刪除
-r 遞歸;
rm -r 遞歸刪除目錄樹
--no-preserve-root 刪除 / 目錄
tree:顯示目錄樹
-d: 只顯示目錄
-L level:指定顯示的層級數目
-P pattern: 只顯示由指定pattern匹配到的路徑
mkdir:創建目錄
-p: 存在也不報錯,且可自動創建所需的各目錄
-v: 顯示詳細信息
-m MODE: 創建目錄時直接指定權限
rmdir:刪除空目錄
-p: 遞歸刪除父空目錄
-v: 顯示詳細信息
file:determine file type(確定文件類型)
ln:創建鏈接文件
硬鏈接:一個文件分配多個名字
ln source dest
1. 創建硬鏈接會增加額外的記錄項以引用文件
2. 對應於同一文件系統上一個物理文件
3. 每個文件引用相同的inode號
4. 不能跨越驅動器或分區
5. 鏈接數:
創建時鏈接數遞增
刪除文件時:rm命令遞減計數的鏈接
文件要存在,至少有一個鏈接數
當鏈接數爲零時,該文件被刪除
軟鏈接:相當於Windows下的快捷方式
ln -s source dest
1. 一個符號鏈接指向另一個文件
2. ls - l 可以顯示鏈接的名稱和引用的文件
3. 一個符號鏈接的內容是它引用文件的名稱
4. 可以對目錄進行軟鏈接
5. 可以跨分區進行軟鏈接
6. 指向的是另一個文件的路徑;
7. 其大小爲指向的路徑字符串的長度;
8. 不增加或減少目標文件inode的引用計數