【Linux】Shell學習筆記之三——文件和目錄管理(修改、查找)
這節主要寫對文件、目錄屬性的修改和文件的查找。
先用ls -l 來查看文件的屬性
每一行對應每一個文件、目錄的屬性,共有9個屬性。
第一個:類型+所屬主,所屬組和其它用戶對文件的權限,用'-'分開。
第一列中的字符含義(即類型):
'd'是指目錄文件;
'-’指普通文件;
'l'指鏈接文件;
'b'指塊設備文件;
'c'指串行端口設備,例如鍵盤、鼠標;
's' 指套接字文件,用於進程間通信。
後面的9個字符代表權限。
權限分讀、寫、執行 。‘r’代表讀,‘w’代表寫, ‘x’代表執行。所以每三個字符rwx(沒有權限的用‘-’代替)對應所屬主,所屬組,其它用戶的權限。
第二個:連接占用的結點。若是目錄,通常與裡面的東西有關。
第三個:所屬的主,即用戶。
第四個:所屬的組。
第五個:文件大小。
第六、七、八個:文件創建或修改的時間。
第九個:文件名。若前面有‘.’代表隱藏文件。
修改所屬組:chgrp +組名+文件名
先用groupadd 添加一個組 groupadd testgroup
對test 目錄修改所屬組:chgrp testgroup test
修改所屬主:chown+用戶名+文件名
對test 目錄修改所屬主:chown admin test
-r 只用於目錄,更改的目錄裡的文件和目錄屬性隨著更改,即級聯更改。
對它們操作要有足夠的權限,所以先獲得root 權限比較方便,如圖(admin 是另一個已經建好的用戶,若沒有可用useradd 來添加用戶):
修改權限:chmod -R adc 文件名
-R (大寫的)是級聯更改
abc 代表三個數字,分別對應所屬主,所屬組,其它用戶的權限。
權限的代表值如下:
r:4 w:2 x: 1 -: 0
例如rwx 的和就是7,
如下圖可見,test的文件所對應的權限都是rwx的
也可以用u,g,o分別代表主,組,其它用戶對權限進行修改。若全部則是a。
可以用加入(+)、減去(-)、設定(=)來修改權,如圖:
如果想讓文件和目錄一創建時就設定好自定義的權限時要怎麼做?
用umask 確定了創建文件的缺省模式。
如上圖可見,普通用戶的缺省值是0002,root的缺省值是0022。
可為什麼不是3個數字嗎?怎麼多了一個。答案是第一是特殊的權限,這裡先不管。
其實目錄默認的權限是777,文件的權限是666,還需減去umask的值。若是有root 權限,則減去0022 ,目錄和文件一創建時的權限是766,644。
若我們想修改默認值可通過修改umask值來實現。
修改文件的特殊屬性: chatrr [-RVF] [+-=Aaisu] files
其中+,-,= 分別是添加,刪除,設定特殊屬性。
屬性A(大寫):添加這個屬性後不能修改文檔的atime
屬性a(小寫):添加這個屬性之後只能添加,不能修改和刪除(只有root可設置)。
屬性i:添加這個屬性之後不能添加、修改、刪除(只有root可設置)。
屬性s: 被刪除後無法恢復。
屬性u:與s相反,補刪除後可恢復。
顯示特殊屬性:lsattr -aR file
-a: 連隱藏屬性一起顯示。
-R 級聯。
如下圖,添加特殊屬性後顯示,再刪除特殊屬性:
下面要寫的是“文件”。
除了之前有提過的which 查看命令的絕對路徑。現在要講的是whereis
語法: whereis [-sbmu] filename
-s: 只找source 來源文件;
-b:只找binary文件;
-m:只找在說明文件manual路徑下的文件;
-u:沒有說明檔的文件
find:
語法:find 路徑 +參數
比如 find test atime/ctime/mtime + n
查找 test中 訪問或執行時間/寫入、更改inode屬性/寫入時間 大於n 天的文件
另外是直接查找文件名:find 路徑 -name +文件名
如下圖,查找當前目錄下 名為''yum.sh'的文件
除了通過文件名查找,也可通過文件類型來查找:
find 路徑 -type type 。
比如 find ./ -type d,就是查找目錄文檔。