文件系統結構元素
📮/boot 啓動
/dev 存放設備
b:block 塊設備 c:charactor 字符設備
🚿/etc 存放配置文件,等價於Windows內的註冊表
✉️/home 存放用戶數據
用戶登錄後默認進入自己的/home目錄.
🔍/run 存放運行中生成的數據
💉/bin 存放用戶可執行的二進制(binary)文件,存放普通用戶使用的工具,/sbin 存放系統管理員(即root)使用的工具
📒/tmp 存放臨時數據 /usr存放操作系統大部分文件 /var存放可變內容(如日誌/var/log,緩存數據,頁面)
文件和目錄被組織成一個單根倒置樹結構
文件系統從根目錄下開始,用"/"表示
跟文件系統(rootfs):root filesystem
文件名稱區分大小寫(需要在特定的Linux文件系統下)
以.開頭的文件爲隱藏文件
路徑分隔的 /
文件有兩類數據:
元數據:metadata
數據:data
文件系統分層結構:LSB Linux Standard Base
FHS:(Filesystem Hierarchy Standard)
虛擬機中觸發新分配的硬盤:
echo '---' > /sys/class/scsi_host/host0/scan
echo '---' > /sys/class/scsi_host/host2/scan
文件名規則
- 文件名最長255個字節
- 包括路徑在內文件名稱最長4095個字節
- 藍色–> 目錄 綠色–> 可執行文件 紅色–> 壓縮文件 淺藍色–> 鏈接文件 灰色–> 其他文件
文件字體顏色由以下配置文件決定:
- 除了斜槓和NUL,所有字符都有效。但使用特殊字符的目錄名和文件不推薦使用,有些字符需用引號來應用它們。
- 標準Linux文件系統(如ext4),文件名稱大小寫銘感。例如:MAIL,Mail,mail,mAil
- 如何創建一個帶"-"的文件
touch -- -a 或者 touch ./-a #(用絕對路徑或者相對路徑來創建文件)
touch "a b"
touch '$abc'
文件系統結構
/boot | 引導文件存放目錄,內核文件(vmlinuz) 、引導加載器(bootloader,grub)都存放於此目錄 |
---|---|
/bin | 所有用戶使用的基本命令;不能關聯至獨立分區,OS啓動機即會用到的程序 |
/sbin | 管理類的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序 |
/lib | 啓動時程序依賴的基本共享庫文件以及內核模塊文件(l/ib/modules) |
/lib64 | 專用於x86_64系統上的輔助共享庫文件存放位置 |
/etc | 配置文件目錄 |
/home/USERNAME | 普通用戶家目錄 |
/root | 管理員的家目錄 |
/media | 便攜式移動設備掛載點 |
/var | variable data files |
---|---|
cache | 應用程序緩存數據目錄 |
lib | 應用程序狀態信息數據 |
local | 專用於爲/usr/local下的應用程序存儲可變數據 |
lock | 鎖文件 |
log | 日誌目錄及文件 |
opt | 專用於爲/opt下的應用程序存儲可變數據 |
run | 運行中的進程相關數據,通常用於存儲進程pid恩建 |
spool | 應用程序數據池 |
tmp | 保存系統兩次重啓之間產生的臨時數據 |
🎶Linux下的文件類型
- | 普通文件 |
---|---|
d | 目錄文件 |
b | 塊設備 |
c | 字符設備 |
l | 符號鏈接文件 |
p | 管道文件pipe |
s | 套接字文件socket |
CentOS 7目錄變化
/bin | /usr/bin |
---|---|
/sbin | /usr/sbin |
/lib | /usr/lib |
/lib64 | /usr/lib64 |
顯示當前工作目錄
- 每個shell和系統進程都有一個當前的工作目錄
- CWD:current work directory
- 顯示當前shell CWD的絕對路徑
pwd #printing working directory
-P #顯示真實物理路徑
-L #顯示鏈接路徑(默認)
絕對和相對路徑
絕對路徑
以正斜槓開始;完整的文件的位置路徑;可用於任何想指定一個文件名的時候
相對路徑名
不以斜線開始
指定相對於當前工作目錄或某目錄的位置
可以作爲一個簡短的形式指定一個文件名
基名:basename
目錄名:dirname
. | 當前目錄 |
---|---|
… | 上一級目錄 |
更改目錄
- cd 改變目錄
使用絕對或相對路徑:
cd /home/MingQi/
cd home/MingQi
cd .. #切換至父目錄
cd #切換至當前用戶主目錄
cd - #切換至以前的工作目錄
- 選項: -P
- 相關的環境變量
PWD #當前目錄路徑
OLDPWD #上一次目錄路徑
列出目錄內容
- 列出當前目錄的內容或指定目錄
- 用法: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 | 元數據發生改變 |
文件通配符
* 匹配另個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~Ming 用戶Ming家目錄
~+ 當前工作目錄
~- 前一個工作目錄
[0-9] 匹配數字範圍
[a-z] 字母
[A-Z] 字母
[ming] 匹配列表中的任何一個字符
[^ming] 匹配列表中的所有字符以外的字符
預定義的字符類: man 7 glob
[:digit:] #任意數字,相當於0-9
[:lower:] #任意小寫字母
[:upper:] #任意大寫字母
[:alpha:] #任意大小寫字母
[:alnum:] #任意數字或字母
[:blank:] #水平空白字符
[:space:] #水平或垂直空白字符
[:punct:] #標點符號
[:print:] #可打印字符
[:cntrl:] #控制(非打印)字符
[:graph:] #圖形字符
[:xdigit:] #十六進制字符
練習:
#顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄
ls /var/l*[[:digit:]]*[[:lower:]] -d
#顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄
ls /etc/[0-9]*[^0-9] -d
#顯示/etc目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄
ls /etc/[^[:alpha:]][[:alpha:]]* -d
#顯示/etc目錄下所有以rc開頭,並後面是0-6之間的數字,其它爲任意字符的文件或目錄
ls /etc/rc[0-6]* -d
#顯示/etc目錄下所有以.d結尾的文件或目錄
ls /etc/*.d -d
#顯示/etc目錄下所有所有以.conf結尾,且以m,n,r,p開頭的文件或目錄
ls /etc/[mnrp]*.conf -d
#只顯示/root下的隱藏文件和目錄
ls /root/.* -d
ls -aI "[^.]*"
#只顯示/etc下的非隱藏目錄
ls -d /etc/*/
創建空文件和刷新時間
- touch 命令
格式:touch [OPTION]...FILE...
-a #僅改變atime和ctime
-m #僅改變mtime和ctime
-t #[[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的時間戳
-c #如果文件不存在,則不予創建
複製、轉移和刪除文件
使用Nautilus來管理文件
軟鏈接和硬鏈接