重點學習:stat(fstat、lstat 獲取文件屬性)、access(測試指定文件是否擁有某種權限)、chmod(改變文件的權限)、chown(改變文件的所屬主和所屬組)、truncate(截斷或拓展文件)、link(創建硬鏈接)、symlink(創建軟鏈接)、readlink(讀軟鏈接對應的文件名,即軟鏈接本身的內容,文件路徑)、unlink(刪除符號鏈接、硬鏈接數減1、臨時文件關閉時自刪除)、rename(文件重命名,注意該函數是C庫函數,不是系統函數)。
stat 命令:用于獲取文件的屬性
[root@localhost work]# stat english.txt
? File: ‘english.txt’
? Size: 109055(文件大小)??? ????? Blocks: 216(占據的塊數,每塊為512字節)??????? IO Block: 1024(文件系統的I/O緩沖區大小)?? regular file(普通文件)
Device: 24h/36d(如果是設備文件,則為設備編號) ?? Inode: 3940649674713195(索引結點編號)? ?Links: 1(硬鏈接數)
Access: (0777/-rwxrwxrwx)? Uid: (??? 0/??? root) 用戶 Gid: (??? 0/??? root)? 用戶組
Context: system_u:object_r:vmblock_t:s0
Access: 2019-03-19 10:30:07.145166300 +0800(訪問時間)
Modify: 2019-03-19 10:30:07.155166900 +0800(修改,內容的修改)
Change: 2019-03-19 10:30:07.155166900 +0800(更改,文件屬性)
?Birth: -???????????????????????????????? (文件創建時間)
訪問和修改時間變了,更改時間也一定變化,因為訪問和修改時間也是文件的屬性。
[root@localhost work]# ll english.txt
-rwxrwxrwx. 1 root root 109055 Mar 19 10:30 english.txt? //四大權限,普通 特殊? 隱藏? ACL
索引結點inode。inode號是唯一的,表示不同的文件。其實在Linux內部的時候,訪問文件都是通過inode號來進行的,所謂文件名(可以理解為簡化后的FCB,只有文件名和執行inode的指針)僅僅是給用戶容易使用的。當我們打開一個文件的時候,首先,系統找到這個文件名對應的inode號;然后,通過inode號,得到inode信息,最后,由inode找到文件數據所在的block,現在可以處理文件數據了。獲取文件屬性是從inode索引結點中獲取的。
inode和文件的關系:當創建一個文件的時候,就給文件分配了一個inode。一個inode只對應一個實際文件,一個文件也會只有一個inode。inode最大數量就是文件的最大數量。而硬鏈接數量,則是一個文件對應的簡化FCB的數量。