1. 程式人生 > >7.linux檔案與目錄管理

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 查詢系統中不屬於任何人的檔案。