一、文件系統
單根架構,根文件系統rootfs
不是linux大小寫敏感,而是文件系統支不支持大小寫。
路徑分割 /
FHS:目錄結構,文件分層標準
文件有兩種數據:
元數據,數據。
元數據與數據存放的位置不再一起
二、文件系統結構:
/boot:引導文件存放目錄,內核文件、引導加載器都存放于此目錄。
/bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動就會用到的程序。
/sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動就會用到的程序。
/lib:啟動是程序來的基本共享庫文件以及內核模塊文件(/lib/modules)
/lib64:專用于x86_64系統上的輔助共享庫文件存放位置。
/etc:配置文件目錄。
/home/USERNAME:普通用戶家目錄。
/root:管理員的家目錄。
/media:便攜式移動設備掛載點。
/mnt:臨時文件系統掛載點。
/dev:設備文件及特殊文件存儲位置。
biock塊設備:隨機訪問
character字符設備:順序訪問
空設備:/dev/null /dev/zero
/opt:第三方應用程序的安裝位置。
/srv:系統上運行的服務用到的數據。
/tmp:臨時文件存儲位置。
/usr:普通文件(universal),shared(共享文件),只讀文件(read-only)
bin:保證系統擁有完整功能而提供的應用程序。
sbin:
lib:32位實用。
lib64:只存在64位系統。
include:C程序的頭文件。
share:結構化獨立的數據。
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上的引用程序的組成部分
二進制程序:/bin,/sbin,/use/bin,/ues/sbin,/usr/local/bin,/usr/local/sbin
庫文件:/lib,/lib64,/uer/,/uer/lib64,/uer/local/lib,/uer/local/lib64
配置文件:/etc,/etc/DIRECTORY,/usr/local.etc
幫助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/share/doc
三、文件名規則
包括路徑在內,文件名稱最長4095個字節,用/分隔的路徑不能超過255個字節
藍色:目錄
綠色:可執行文件
紅色:壓縮文件
淺藍色:鏈接文件
/和nul不能作為文件名,實用特殊字符的目錄名和文件夾不推薦使用,有些字符需要引號來引用它們。
linux標準文件系統:(如exe4)文件名稱大小寫敏感。
四、linux下的文件類型
-:普通文件
d:目錄文件
l:符號鏈接文件
biock:塊設備,隨機訪問,有緩存,物理存在。
character:字符設備,順序訪問,沒有緩存,邏輯存在。
sockett:套接字文件,進程之間通訊。
pipe:管道文件,錢一個命令的輸出通過管道作為后面的輸入。
五、文件通配符
*:匹配另個或多個字符
?:匹配任何單個字符
~:當前用戶家目錄
~username:用戶家目錄
~+:當前工作目錄
~-:前一個工作目錄
[0-9]:匹配數字范圍
[a-z]:大寫和小寫字母 順序:小寫大寫
[A-Z]:大寫和小寫字母 順序:小寫大寫
六、更改目錄cd
cd:改變目錄為絕對或相對路徑
cd..:到上一級目錄
cd -:到以前的工作目錄
相關的環境變量:
PWD:保存了當前目錄路徑
OLDPWD:上一次所在目錄路徑
[root@localhost ~]# pwd /root [root@localhost ~]# cd /etc [root@localhost etc]# cd /bin [root@localhost bin]# cd - /etc [root@localhost etc]# cd [root@localhost ~]#
七、列出目錄內容ls
l.:只顯示隱藏文件
-a:顯示所有文件,包含隱藏文件。
-l:顯示額外的信息
-R:目錄遞歸通過,顯示所有子目錄里的文件。
-ld:目錄和符號鏈接信息。
-n:文件分行顯示,n代表幾行
-S:從大到小排序
[root@localhost ~]# ls anaconda-ks.cfg mulu1 mulu2 wenjian1 wenjian2
八、創建空白文件touch
touch 文件名
-a:改變atime
-m:改變mtime
-c:如果文件存在,只刷新時間。如果文件不存在,不會創建。
-t:改變atime,mtime
touch -t 年月日時分 文件名
[root@localhost ~]# touch -t 201607301846 /wang/DYW [root@localhost ~]# ll /wang/DYW -rw-r--r-- 1 root root 0 Jul 30 2016 /wang/DYW
九、復制文件和目錄cp
源是一個文件:
目標不存在:復制過去并且改名
目標存在是文件:覆蓋文件
目標存在是目錄:復制都目錄下
源是多個文件:
目標不存在:報錯
目標存在是文件:報錯
目標存在是目錄:復制到目錄下
源是目錄:必須加-r
目標不存在:創建指定目錄,把源目錄中所有文件復制到指定目錄
目標存在是文件:報錯
目標存在是目錄:復制到目標目錄中,成為子目錄
cp常用選項:
-i:交互式
-r,-R:遞歸復制目錄及內部的所有內容
-a:歸檔,相當于-dR,–presevr=all
-d:–no-dereference –presevr=links 不復制文件,只復制鏈接名
–presevr=[ATTR_LIST]
mode:權限
ownership:屬主屬組,所有者
timestamp:時間
links:鏈接
xattr
context
all:所有
-p:相當于–presevr=mode,ownership,timestamp
-v:看復制過程
[root@localhost ~]# cp mulu1 -r /wang/123 [root@localhost ~]# ls /wang/123 mulu1 [root@localhost ~]# ls wenjian1 /wang/123 wenjian1 /wang/123: mulu1
十、別名alias
alias name=''
如果想永久生效,要定義在配置文件中。
對當前用戶:~/.bashrc
對所有用戶:/etc/bashrc
編輯配置給出的新配置不會立即生效,
bash進程重新讀取配置文件:
source /path/to/config_file
. /path/to/config_file
[root@localhost ~]# alias asd='ls' [root@localhost ~]# asd anaconda-ks.cfg mulu1 mulu2 wenjian1 wenjian2
十一、移動和重命名文件
-i:交互式
-f:強制
[root@localhost ~]# mv wenjian2 /wang/789 [root@localhost ~]# ll /wang/789 -rw-r--r-- 1 root root 0 Jul 29 11:50 /wang/789
十二、刪除rm
-i:交互式
-f:強制刪除
-r:遞歸
[root@localhost ~]# ls /wang 123 789 dir DYW [root@localhost ~]# rm -rf /wang/123 [root@localhost ~]# ls /wang 789 dir DYW
十三、顯示目錄樹tree
-d:只顯示目錄
-l:指定顯示的層級目錄
tree -l n
-d:只顯示目錄,不顯示文件
[root@localhost ~]# tree /wang /wang ├── 789 ├── dir │ ├── 1 │ ├── dir3-100 │ └── dir5 │ ├── 5 │ ├── dir │ └── dir4 └── DYW 6 directories, 3 files
十四、創建目錄mkdir 刪除目錄rmdir
mkdir:
-p:自動創建所需的個目錄
-v:顯示穿件過程
rmdir:刪除目錄 只能刪除空白目錄
-p:刪除目錄樹
[root@localhost ~]# mkdir -p /wang/dir/{1,2,3} [root@localhost ~]# tree /wang /wang └── dir ├── 1 ├── 2 └── 3 4 directories, 0 files
十五、索引節點inode
inode是什么:
文件存儲在硬盤上,硬盤的最小存儲單位叫做“扇區”(Sector),每個扇區存儲512字節(相當于0.5KB)
操作系統讀取硬盤的時候,不會一個個扇區的讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個“塊”(block)。這種由多個扇區組成的“塊”,是文件存取的最小單位。“塊”的大小,最常見的是4KB,即連續八個sector組成一個block。
文件數據都存儲在“塊”中,那么很顯然還有一個地方存儲文件的元信息,例如文件的創建者、文件的創建日期、文件的大小等。這種存儲文件元信息的區域就叫做inode,中文譯名為“索引節點”
inode的內容:
inode包含文件的元信息,具體內容:
文件的字節數
文件擁有者的UserID
文件的Group ID
文件的讀、寫、執行權限
文件的三個時間戳:ctime指inode上一次變動的時間,mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間
鏈接數,即有多少文件名指向這個inode
文件數據block的位置
可以用stat命令查看文件的inode信息。
inode的大小
inode也會消耗硬盤空間,所有硬盤格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存放文件數據;另一個inode區(inode table),存放inode所包含的信息。
每個inode節點的大小,一般是128字節或256字節。inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。假定在一塊1GB的硬盤中,每個inode節點的大小為128自己,每1KB就設置一個inode,那么inode,那么inode table的大小就會達到128MB,占整塊硬盤的12.8%。
每個文件都必須有一個inode,所以有可能發生inode已經用光,但是硬盤還未存滿的情況,就無法在硬盤上創建新文件。
查看每個硬盤分區的inode總數和已經實用的數量,可以實用df命令
df-i
inode號碼
沒個inode都有一個號碼,操作系統用inode號碼來識別不同的文件
linux系統內部不使用文件名,而inode號碼來識別文件。對于系統來說,文件名知識inode號碼便于識別的別稱或者綽號。表面上,用戶通過文件名打開文件。實際上,系統內部這個過程分成三步:首先,系統找到這個文件名對應的inode號碼;其次,通過inode號碼獲取inode信息;最后,根據inode信息找到文件數據所在的block,讀出數據。
查看文件名對應的inode號碼
ls -i
硬鏈接:
ln 文件名 鏈接文件名
創建硬鏈接會增加額外的記錄項以引用文件
對應統一文件系統上的一個物理文件
每個引用相同的inode號
創建時鏈接數遞增
不能跨分區、驅動器
刪除文件時:
rm命令遞減計數的鏈接
文件要存在,至少有一個鏈接數
當鏈接數為零時,該文件被刪除
軟鏈接:
也叫符號鏈接
ln -s 文件名 鏈接文件名
ls -l 顯示鏈接的名稱和引用的文件
一個符號鏈接指向另一個文件
可以對目錄進行、可以跨分區
指向的是另一個文件的路徑,其大小為指向的路徑字符串的長度,不增加或減少目標文件inode的引用技計數
軟鏈接文件:
原始文件相對路徑:相對于軟鏈接文件路徑,而不是相對于當前工作目錄的路徑
硬鏈接與軟鏈接的區別:
硬鏈接就是同一個文件使用了多個別名(他們有共同的 inode)。
硬鏈接可由命令 link 或 ln 創建,由于硬鏈接是有著相同 inode 號僅文件名不同的文件,因此,刪除一個硬鏈接文件并不影響其他有相同 inode 號的文件。硬鏈接不能對目錄進行創建,只可對文件創建。
軟鏈接(也叫符號鏈接)與硬鏈接不同,文件用戶數據塊中存放的內容是另一文件的路徑名的指向。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接可對文件或目錄創建。加-s選項表示創建的是軟鏈接。刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接就變成了死鏈接
file:
file 選項 文件名
用來識別文件類型,也可用來辨別一些文件的編碼格式。它是通過查看文件的頭部信息來獲取文件類型,而不是像Windows通過擴展名來確定文件類型的。
常用選項:
-b:列出文件辨識結果時,不顯示文件名稱。
-c:詳細顯示指令執行過程,便于排錯或分析程序執行型
-f:列出文件中文件名的文件類型
-F:實用制定分隔符號替換輸出文件名后默認的“:”分隔符
-I:輸出mime類型的字符串
-L:查看對應軟鏈接對應文件的文件類型
-z:嘗試去解讀壓縮文件的內容
原創文章,作者:DYW,如若轉載,請注明出處:http://www.www58058.com/26918