當我們執行指令操作一個檔案的時候,卻不知道這個檔案為何種檔案怎麼辦呢?
當我們執行一個指令,我們想知道這個指令是放在哪個目錄裡面的。該怎麼辦呢?
當我們要找一個檔案,卻不知道它在哪兒,該怎麼辦呢?
所有我們這節實驗就是要解決以上的問題。
分别會學到:檔案類型檢視指令:file ;搜尋指令:which,whereis,以及find指令。
本實驗需要登陸系統後,請使用“useradd heetian”建立一個使用者,以便後面的實驗。
權限與指令直接的關系:之前我們有講過權限與使用者,檔案直接的關系。那麼我們接下來說一下什麼指令在什麼樣的權限下才能夠運作吧。(極其重要!!!)
1、讓使用者進入某個目錄成為工作目錄的基本權限:
可使用的指令:例如cd等改變工作目錄的指令
目錄所需權限:使用者對這個目錄至少需要具有x權限
額外需求:如果使用者想要在這個目錄内利用ls列出檔案,則使用者對此目錄還需要r的權限
2、使用者在某個目錄内讀取一個檔案的基本權限:
可用指令:例如cat,more,less等
目錄所需權限:使用者對該目錄至少需要具有x權限
檔案所需目錄:使用者對檔案至少需要具有 r 的權限才行
3、讓使用者修改一個檔案的權限:
可使用的指令:如vim編輯器等
目錄所需權限:使用者對該目錄至少具有x權限
檔案所需權限:使用者對該檔案至少具有r,w權限
4、讓一個使用者可以建立一個檔案的權限:
目錄所需權限:使用者對該目錄至少需要w,x權限
5、讓使用者進入某個目錄并執行該目錄下的某個指令所需權限:
目錄所需權限:該使用者在該目錄至少需要x權限
檔案所需權限:使用者對該檔案至少需要x權限。
實驗步驟一
利用file指令檢視那檔案的類型
指令:file
文法:file [-bLvz] 檔案
解釋:-b:顯示結果,但是不顯示檔案名稱
-L:直接顯示符号連結所指向的檔案的類型
-v:顯示版本資訊
-z:測試去讀取壓縮檔案的内容
直接file 檔案,不加任何參數可以顯示檔案類型
更多用法請使用manpage檢視。
接下來就來感受下:cd /etc 這裡面的檔案多~

快來看看 adjtime 這個是個什麼類型的檔案呢?
哦~,原來是個文本檔案呢。來試試 –b 參數:
檔案名顯示了呢。也許你會發現有這樣的檔案:l 開頭的,就是連結檔案了,我們試試 -L參數吧,可以直接顯示連結檔案所指的檔案的類型呢!!
linux指令搜尋之which指令
指令:which
文法:which [-a] 指令
解釋:-a:将PATH中可以找到的指令都列出來,而不是第一個被找到的名稱
我們用which mkdir來找找mkdir指令在哪兒
我們來做個測試:
當我們用root使用者的時候,為什麼能找到ifconfig ,但是用普通使用者就找不到了呢?
是這樣的,which是根據使用者的PATH變量設定的路徑去找的。echo $PATH就能檢視目前使用者的PATH變量設定了,以後會詳細講這個東西的:
檔案查找指令
指令之一:whereis
文法:whereis [-bmsu] 目錄或檔案名
解釋:-b:隻找binary(二進制)格式的檔案
-m:隻找在說明檔案manual路徑下的檔案
-s:隻找source來源檔案
-u:搜尋不在上述三個項目當真的其他特殊檔案
來試試吧:
隻找跟passwd指令相關的幫助檔案:
我們發現whereis搜尋非常快速,因為它是基于資料庫的啦。這是因為linux系統會将系統内的所有檔案都記錄在一個資料庫檔案中,當使用 whereis和下面即将介紹的locate時,會從資料庫中查找資料,而不是像find指令那樣,通過周遊硬碟來查找,效率自然會很高。
但是該資料庫檔案并不是實時更新,預設情況下時一星期更新一次,是以,我們在用whereis和locate 查找檔案時,有時會找到已經被删除的資料,或者剛剛建立檔案,卻無法查找到,原因就是因為資料庫檔案沒有被更新。
指令之二:locate
文法:locate [-ir] keyword
解釋:-i :忽略大小寫
-r :使用正規運算式做尋找的條件
locate 使用很簡單,隻要後面跟關鍵字就行了,搜尋起來也非常快速,因為它也是基于資料庫的。
搜尋所有有關passwd的檔案,出錯了。為什麼呢?按照提示,說沒有資料庫,剛剛我們說locate是基于資料庫的,沒有資料庫怎麼行呢?我們執行updatedb 修複一下,再次搜尋:
實驗步驟三
指令之find
文法:find [路徑] [option] [action]
解釋:find的參數有很多,我們介紹簡單一點的,更多用法記得man find 。
與時間相關的選項:-atime,-ctime和-mtime,以-mtime說明:
-mtime n :n 為數字
-mtime +n :n天之前(不含n天本身)
-mtime -n:n天之内(含n天本身)
-nwer file:file為一個存在的檔案,列出比file更新的檔案。
find相關的時間的意義:
+4代表大于等于5天前
-4:代表等于4天内
4:代表4-5那一天。
例1:将過去系統上面24小時内有更改(mtime)的内容列出來:
數字0 代表目前時間,所有代表從現在到24小時前
按名稱查找
find [路徑] -name 名稱
找出 /etc/下 名為passwd的檔案
實驗心得體會
通過這一次實驗我掌握了檔案檢視指令file和指令位置查找which指令,以及如何就行檔案搜尋,學到了許多知識,收獲了許多。