Linux命令進階之一(useradd,file,which,whereis,find,locate)
1.useradd
useradd 命令用於建立使用者帳號
語法:useradd選參 使用者名稱
useradd 指令所建立的帳號,實際上是儲存在 /etc/passwd 文字檔案中
userdel 刪除帳號
2.檢視檔案的型別
利用file命令檢視檔案的型別
命令:file
語法:file [-bLvz] 檔案
- -b:顯示結果,但是不顯示檔名稱
- -L:直接顯示符號連結所指向的檔案的型別,顯示符號連結的檔案型別
- -v:顯示版本資訊
- -z:測試去讀取壓縮檔案的內容
audit是目錄檔案
3.which搜尋
which用於查詢檔案, 會在環境變數$PATH設定的目錄裡查詢符合條件的檔案
語法:which [-a] 查詢檔名
- -a:將PATH中可以找到的指令都列出來,而不是第一個被找到的名稱
4.檔案查詢命令
whereis 查詢檔案
語法:whereis [-bmsu] 目錄或檔名
- -b:只找binary(二進位制)格式的檔案
- -m:只找在說明檔案manual路徑下的檔案
- -s:只找source(原始程式碼)來源檔案
- -u:搜尋不在上述三個專案當真的其他特殊檔案
注:只能用於查詢二進位制檔案、原始碼檔案和man手冊頁,一般檔案的定位需使用locate命令
locate用於查詢符合條件的文件,他會去儲存文件和目錄名稱的資料庫內,查詢合乎範本樣式條件的文件或目錄
語法:locate [-irc] keyword
- -i :忽略大小寫
- -r :使用正規運算式做尋找的條件
- -c, --count -- 只輸出找到的數量
需要強調的是:
- locate 只在 /var/lib/slocate 資料庫中找。
- locate查的是資料庫(一般檔案資料庫在 /var/lib/slocate/slocate.db 中)
- locate 的查詢並不是實時的,而是以資料庫的更新為準
- locate的速度比 find 快
locate查詢的資料庫一般是系統自己維護,也可以手工升級資料庫 ,命令為:
updatedb
EG:
忽略大小寫搜尋當前使用者目錄下所有以 r 開頭的檔案 :
locate -i ~/r
系統自己維護了
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更新的檔案
-name 檔名,查詢檔名稱符合 的檔案
注:使用該命令時,不設定任何引數,則 find 命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示
5.作業
請說明whereis和find有何區別?它們各自的優缺點是什麼?
whereis只能用於查詢二進位制檔案、原始碼檔案和man手冊頁且通過檔案索引資料庫而非PATH來查詢的
find通過直接搜尋硬碟的方式查詢
優點 缺點
find 保證查詢的資訊絕對可靠 效率不高,比較慢
whereis 快 若沒及時更新,資訊會不準確,要常常更新
請使用man page,如何使用find 命令查詢/etc下大於500K的檔案?
find /etc -size +500k
讓一個普通使用者heetian能夠進行cp /dir1/file1 /dir2的命令時,請說明dir1,file1,dir2的最小所需許可權為何?
對於dir1最低肯定需要能夠進入的許可權x
對於file1肯定要有能讀取的許可權r
對於dir2肯定要有能建立的許可權w以及能進入的許可權x