天天看點

Linux指令進階篇之一

當我們執行指令操作一個檔案的時候,卻不知道這個檔案為何種檔案怎麼辦呢?

      當我們執行一個指令,我們想知道這個指令是放在哪個目錄裡面的。該怎麼辦呢?

      當我們要找一個檔案,卻不知道它在哪兒,該怎麼辦呢?

      所有我們這節實驗就是要解決以上的問題。

      分别會學到:檔案類型檢視指令: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 這裡面的檔案多~

Linux指令進階篇之一

  快來看看 adjtime 這個是個什麼類型的檔案呢?

Linux指令進階篇之一

 哦~,原來是個文本檔案呢。來試試 –b 參數:

Linux指令進階篇之一

檔案名顯示了呢。也許你會發現有這樣的檔案:l 開頭的,就是連結檔案了,我們試試 -L參數吧,可以直接顯示連結檔案所指的檔案的類型呢!!

Linux指令進階篇之一
Linux指令進階篇之一

linux指令搜尋之which指令

      指令:which

      文法:which [-a] 指令

解釋:-a:将PATH中可以找到的指令都列出來,而不是第一個被找到的名稱

      我們用which mkdir來找找mkdir指令在哪兒

Linux指令進階篇之一

  我們來做個測試:

Linux指令進階篇之一
Linux指令進階篇之一

      當我們用root使用者的時候,為什麼能找到ifconfig ,但是用普通使用者就找不到了呢?

      是這樣的,which是根據使用者的PATH變量設定的路徑去找的。echo $PATH就能檢視目前使用者的PATH變量設定了,以後會詳細講這個東西的:

Linux指令進階篇之一

檔案查找指令

      指令之一:whereis

      文法:whereis [-bmsu] 目錄或檔案名

解釋:-b:隻找binary(二進制)格式的檔案

      -m:隻找在說明檔案manual路徑下的檔案

      -s:隻找source來源檔案

      -u:搜尋不在上述三個項目當真的其他特殊檔案

      來試試吧:

Linux指令進階篇之一

  隻找跟passwd指令相關的幫助檔案:

Linux指令進階篇之一

 我們發現whereis搜尋非常快速,因為它是基于資料庫的啦。這是因為linux系統會将系統内的所有檔案都記錄在一個資料庫檔案中,當使用 whereis和下面即将介紹的locate時,會從資料庫中查找資料,而不是像find指令那樣,通過周遊硬碟來查找,效率自然會很高。

      但是該資料庫檔案并不是實時更新,預設情況下時一星期更新一次,是以,我們在用whereis和locate 查找檔案時,有時會找到已經被删除的資料,或者剛剛建立檔案,卻無法查找到,原因就是因為資料庫檔案沒有被更新。

      指令之二:locate

      文法:locate [-ir] keyword

解釋:-i :忽略大小寫

      -r :使用正規運算式做尋找的條件

      locate 使用很簡單,隻要後面跟關鍵字就行了,搜尋起來也非常快速,因為它也是基于資料庫的。

Linux指令進階篇之一

 搜尋所有有關passwd的檔案,出錯了。為什麼呢?按照提示,說沒有資料庫,剛剛我們說locate是基于資料庫的,沒有資料庫怎麼行呢?我們執行updatedb 修複一下,再次搜尋:

Linux指令進階篇之一

 實驗步驟三

指令之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相關的時間的意義:

Linux指令進階篇之一

      +4代表大于等于5天前

      -4:代表等于4天内

      4:代表4-5那一天。

      例1:将過去系統上面24小時内有更改(mtime)的内容列出來:

Linux指令進階篇之一

      數字0 代表目前時間,所有代表從現在到24小時前

按名稱查找

      find [路徑] -name 名稱

      找出 /etc/下 名為passwd的檔案

Linux指令進階篇之一

 實驗心得體會

通過這一次實驗我掌握了檔案檢視指令file和指令位置查找which指令,以及如何就行檔案搜尋,學到了許多知識,收獲了許多。