7.linux檔案與目錄管理
1.目錄與路徑
①特殊的目錄:
. 代表此層目錄
.. 代表上一層目錄(根目錄的.與..都是同一個目錄)
- 代表前一個工作目錄
~ 代表“目前使用者身份”所在的主資料夾,如~liupeng911,代表liupeng911這個使用者的主資料夾(liupeng911是賬號名稱)
②處理目錄的命令
----pwd:顯示目前所在的目錄(顯示當前路徑)
-p引數:可以顯示非食用連線(link)的路徑
----mkdir:新建新目錄
-m引數:強制給目錄一個許可權,如 mkdir -m 711 test1
-p引數:遞迴建立,如mkdir
-p /home/test/test1
----rmdir:刪除“空”目錄
-p引數:連同上層的空的目錄一起刪除
如果需要將目錄下的東西都刪除:rm -r 風險較大,謹慎刪除。
③關於執行檔案路徑的變數:$PATH(環境變數)
echo $PATH 可以查詢哪些目錄被定義(目錄與目錄用:分割)
----如root使用者與普通使用者的$PATH都存在/bin目錄,所以用任何使用者都可以執行ls命令
----如普通使用者沒有/sbin目錄,則無法直接執行ifconfig命令,但是可以通過絕對路徑執行:/sbin/ifconfig eth0
如果移動了$PATH中的目錄,則會無法執行某些命令
----如把/bin/ls移動到/root下,則直接執行ls會無法執行命令,只能通過絕對路徑
mv /bin/ls /root
ls 會報錯
/root/ls則可以執行
可以自定義$PATH:PATH="$PATH":/root(即把/root放到PATH中),下次可直接執行ls。。。。
注意:PATH是可以修改的。
本目錄.最好不要放在PATH中。
2.檔案與目錄管理
①檢視檔案與目錄:ls
-a:全部檔案,包括隱藏檔案.開頭。
-l:列出長資料串,包含檔案的屬性與許可權等資料。
-d:僅列出目錄本身,而不是列出目錄內的檔案資料。
----每個目錄在ls後都會顯示.此層目錄和..上層目錄。
②複製、刪除與移動 :cp、rm、mv
----cp:複製檔案或者目錄(且可以更名)
如:cp /var/log/wtmp . ---複製檔案到當前目錄,注意.
cp -u ~/.bashrc /tmp/bashrc
-a:把檔案的所有特性一起復制過來(如許可權),複製檔案不加引數,特性可能不同。(如許可權不夠,強制加-a還是不行的)
-i :若目標檔案已經存在,覆蓋時就會先詢問操作的進行。
-r:遞迴複製,用於目錄的複製行為。(目錄不能直接複製,需要加上-r)
-u:當目標檔案與原始檔有差異時才會複製,常用於備份的工作。
----rm:移除檔案或者目錄
如:rm -r /tmp/etc
-r :遞迴刪除。
----mv:移動檔案與目錄或者更名
如:mv bashrc mvtest 移動
mv mvtest mvtest2 重新命名
③取得檔名或者目錄名(寫程式時判斷使用)
basename /etc/sysconfig/network 取得檔名,輸出:network
direname /etc/sysconfig/network 取得目錄名,輸出:/etc/sysconfig/
3.檔案內容的查閱
①檢視檔案的內容
----cat:由第一行開始顯示檔案的內容
-n:列印行號,空白行也有行號
----tac:從最後一行開始顯示
----nl:顯示的時候,順便輸出行號
----more:一頁一頁的顯示檔案內容
----less:與more相似,但是比more好的是,可以向前翻頁
----head:只看頭幾行
-n number:-n跟著數字,代表顯示幾行。
----tail:只看結尾幾行
----od:以二進位制的方式讀取檔案內容
②修改檔案時間或者建立新檔案:touch
三個時間:mtime:內容更新的時間,如檔案的內容被更新
ctime:狀態更新的時間,如許可權與屬性被更改
atime:檔案內如被取用的時間,如用cat命令去讀取某個檔案,就會更新atime時間
如:touch testtouch
則:如果touch後面跟著一個檔名,如果檔案存在,則會把檔案的三個時間更新為目前的時間;
如果檔案不存在,則會建立一個新的空的檔案;
4.檔案的預設許可權與隱藏許可權
①檔案的預設許可權
----檢視檔案的預設許可權:umask ,如輸出:0022(許可權看後三位)
umask -S ,如輸出:u=rwx,g=rx,o=rx(比較022,也就是值為需要減掉的許可權,2即-w)
一般使用者建立檔案時,預設沒有x許可權,即666
一般使用者建立目錄時,預設所有許可權放開,x與進入目錄有關,即777
那如上例子,umask的分數等於“該預設值需要減掉的許可權”,
如果新建檔案時:(-rw-rw-rw-)-(-----w--w-)==>-rw-r--r--(新建檔案時的預設許可權)
如果新建目錄時:(drwxrwxrwx)-(d----w--w-)==>-drwxr-xr-x(新建目錄時的預設許可權)
----修改檔案的預設許可權:如umask 002 即可(需要細細品味)
②檔案的隱藏屬性
----chattr 設定檔案的隱藏屬性
+增加屬性 -刪除屬性 =僅有後面的引數
[+-=]a 檔案只能增加資料,不能刪除也不能修改資料,root的許可權
[+-=]i 檔案不能刪除、改名,也無法寫入或者新增資料(無法改動,系統安全),root許可權(設定後root也無法刪除)
----leattr 顯示檔案的隱藏屬性
③檔案的特殊許可權(--後補--)
5.命令與檔案的查詢
①指令碼檔名的查詢 which (查詢PATH內所規範的目錄)
如:which ifconfig ,可以輸出: /sbin/ifconfig
但是如果su -liupeng911 使用者,則無法查詢,因為liupeng911使用者的PATH無/sbin/
②檔名的查詢:
----whereis:尋找 特定檔案,即用普通使用者輸入:whereis ifconfig 也可以 查詢到,因為系統中有這個檔案,
只是不再普使用者的PATH中。
----locate:利用資料庫尋找資料(/var/lib/mlocate),較快,因為資料庫不是實時更新,有時候存在查詢不到的情況,
可以手動更新資料庫,直接輸入命令 updatedb即可。
----find:直接硬碟查詢,需要花費大量時間,但是功能強大。
---find / -mtime 0,0代表目前時間,所以意思為從現在開始到24小時前,有改動過的檔案都會被列出。
find / -mtime 3 ,3天前的24小時之內被更改過的檔案。
---find /etc -newer /etc/passwd:尋找/etc下的檔案,如果檔案日期比/etc/passwd早就列出。
---find / -nouser 查詢系統中不屬於任何人的檔案。