Linux 檔案與目錄管理(轉)

BSDLite發表於2007-08-12
Linux 檔案與目錄管理(轉)[@more@]  目錄與路徑:

  由前一章節 『Linux 的檔案許可權與目錄配置』 中約略瞭解到 Linux 的『樹狀目錄』概念之後,接下來就得要實際的來搞定一些基本的路徑問題了!這些問題當中,最重要的莫過於『絕對路徑』與『相對路徑』的意義啦!趕緊來了解一下!


  絕對路徑與相對路徑:

  在開始目錄的切換之前,你必須要先了解一下所謂的『路徑, PATH』,有趣的是:什么是『相對路徑』與『絕對路徑』?如果你還記得前一章的內容的話,那么應該還記得 Linux 裡面的目錄是呈現『樹狀目錄』的情況,有就是有分支的啦!好了,假設你需要在任意一個目錄下變換到根目錄的 etc 底下,那么你就應該要使用『 cd /etc 』這個情況,這也就是所謂的『絕對路徑』,他是從根目錄連續寫上來的一個情況,所以不論你在哪一個路徑現執行這一個指令,都會將你移動到該路徑下。那如果我是使用『 cd etc 』呢?那表示你要切換到『目前這個目錄下的 etc 目錄中』,情況可是不一樣的呦!通常第一次接觸 Linux 的使用者常會搞錯這一個路徑的觀念!
  
  絕對路徑:路徑的寫法『一定由根目錄 / 寫起』,例如: /usr/share/doc 這個目錄。
  相對路徑:路徑的寫法『不是由 / 寫起』,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成:『cd ../man』這就是相對路徑的寫法啦!
  
  那么相對路徑與絕對路徑有什么了不起呀!?喝!那可真的是了不起了!假設您寫了一個套件,這個套件共需要三個目錄,分別是 etc, bin, man 這三個目錄,然而由於不同的人喜歡安裝在不同的目錄之下,假設甲安裝的目錄是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man ,不過乙卻喜歡安裝在 /home/packages/etc, /home/packages/bin, /home/packages/man 這三個目錄中,請問如果需要用到絕對路徑的話,那么是否很麻煩呢?是的!如此一來每個目錄下的東西就很難對應的起來!這個時候相對路徑的寫法就顯的特別的重要了!
  
  此外,如果您跟我一樣,喜歡將路徑的名字寫的很長,好讓自己知道那個目錄是在幹什么的,例如:/data4/staiwan19961109/models-3/smoke 這個目錄,而另一個目錄在 /data4/staiwan19961109/models-3/cctm ,那么我從第一個要到第二個目錄去的話,怎么寫比較方便?當然是『 cd ../cctm 』比較方便囉!對吧!
  
  好了,既然要談到目錄這個東西,自然就需要了解一下有哪些常用的目錄『符號』代表的意義啦!
  .   代表此層目錄
  ..  代表上層目錄
  ~   代表自己的家目錄
  ~user 代表到 user 這個人的家目錄
  底下我們要來談一談目錄與路徑的幾個常用的指令:
  cd   變換目錄
  pwd  顯示目前的目錄
  mkdir 建立一個新目錄
  rmdir 刪除一個裡面是空的空目錄
  cd 與 pwd
  這兩個指令主要是在『變換目前目錄』與『顯示目前所在目錄』的工作,底下說一說他們的用途與語法吧!
  cd
  語法: [root @test /root ]# cd [相對路徑或絕對路徑] 
  引數說明:
  路徑有『相對路徑』與『絕對路徑』的分別,請千萬小心囉!
  範例:
  [root @test /root]# cd ..       <==回到上一層目錄
  [root @test /root]# cd ../home     <==相對路徑的寫法
  [root @test /root]# cd /var/www/html  <==絕對路徑的寫法
  [root @test /etc]# cd         <==回到使用者的家目錄
  [root @test /etc]# cd ~         <==回到使用者的家目錄!
  [root @test /etc]# cd ~test      <==回到 test 這個使用者的家目錄
  說明:
  cd 是 change directory 的縮寫,這是用來變換工作路徑的指令。注意,路徑與 cd 指令之間存在一個空格!一登入 Linux 系統後,root 會在 root 的家目錄,亦即 /root 下,至於使用者會在預設的 /home/username 底下,例如鳥哥的 ID 為 vbird ,則以 vbird 的身份登入後,會到 /home/vbird 這個路徑下。OK!那回到上一層可以用『 cd .. 』而到相對路徑可到『 cd ../bird』,至於絕對路徑則是 cd /usr/sbin !注意喔,在前面的提示字元會改變路徑名稱!此外,家目錄還有一個程式碼,那就是『 ~ 』符號!例如上面的例子可以發現,使用『 cd ~ 』可以回到個人的家目錄裡頭去呢!此外,如果你的 Linux 主機當中有個 testing 的帳號,你要到他的家目錄去,可以下達『 cd ~testing』立刻去到 testing 的家目錄囉!
  pwd
  語法: [root @test /root ]# pwd 
  範例:
  [root @test root]# cd /home/test
  [root @test test]# pwd 
  /home/test       <==顯示目前你所在的目錄呦!
  說明:
  pwd 是 print working directory 的縮寫,也就是顯示目前所在目錄的指令,例如在上個表格最後的目錄是 /home/test 這個目錄,但是提示字元僅顯示 test ,如果你想要知道目前所在的目錄,可以輸入 pwd 即可:
  此外,由於很多的套件所使用的目錄名稱都相同,例如 /usr/local/etc 還有 /etc ,但是通常 Linux 僅列出最後面那一個目錄而已,這個時候你就可以使用 pwd 來知道你的所在目錄囉!免得搞錯目錄,結果……
  mkdir 與 rmdir 管理目錄:
  那么要如何建立刪除目錄呢?很簡單呀!就用 mkdir 與 rmdir ,看出來了嗎?沒錯啦!就是 make/remove directory 的縮寫說!看要怎么用吧!
  mkdir
  語法: [root @test /root ]# mkdir [-mp] [目錄名稱]
  引數說明:
  -m :設定檔案的許可權喔!直接設定,不需要看 umask 這個內容的臉色!
  -p :幫助你直接將上面的目錄遞迴建立起來!
  範例:
  [root @test /root]# cd tmp
  [root @test /tmp]# mkdir test<==建立名稱為 test 的目錄
  [root @test /tmp]# mkdir -p test1/test2/test3/test4 <==直接建立 test2...等上層目錄
  [root @test /tmp]# mkdir -m 711 testqq <==建立許可權為 711 的目錄!
  [root @test /tmp]# ll test*
  drwxrwxr-x  2 test  test    4096 Feb 6 20:47 test/
  drwxrwxr-x  3 test  test    4096 Feb 6 20:48 test1/
  drwx--x--x  2 test  test    4096 Feb 6 20:48 testqq/
  說明:
  如果想要建立新的目錄的話,那么就使用 mkdir 吧! 不過,請注意呦!在預設的情況下,你所需要的目錄得一層一層的建立才行!例如:假如你要建立一個目錄為 /home/bird/testing/test1,那么首先必須要有 /home 然後 /home/bird ,再來 /home/bird/testing 都必須要存在,才可以建立 test1 這個目錄!假如沒有 /home/bird/testing 時,就沒有辦法建立 test1 的目錄囉!不過,現在有個更簡單有效的方法啦!那就是加上 -p 這個引數喔!你可以直接下達:『 mkdir -p /home/bird/testing』則系統會自動的幫你將 /home, /home/bird, /home/bird/testing 依序的建立起目錄!並且,如果該目錄本來就已經存在時,系統也不會顯示錯誤訊息喔!挺快樂的吧! ^_^
  rmdir
  語法: [root @test /root ]# rmdir [-p] [目錄名稱]
  引數說明:
  -p :將上層的目錄也刪除吧!
  範例:
  [root @test /root]# rmdir test<==刪除名稱為 test 的目錄
  [root @test tmp]# ll
  drwxrwxr-x  3 test  test    4096 Feb 6 20:48 test1/
  [root @test tmp]# rmdir test1
  rmdir: `test1': Directory not empty
  [root @test tmp]# rmdir -p test1/test2/test3/test4
  [root @test tmp]$ ll
  說明:
  如果想要建立刪除舊有的目錄時,就使用 rmdir 吧!例如將剛剛建立的 test 殺掉,使用 rmdir test 即可!請注意呦!目錄需要一層一層的刪除才行!而且被刪除的目錄裡面必定不能還有其他的目錄或檔案!那如果要將所有目錄下的東西都殺掉呢?!這個時候就必須使用 rm -rf test 囉!不過,還是使用 rmdir 比較不危險!不過,你也可以嘗試以 -p 的引數加入,來刪除上層的目錄喔!
  環境變數 PATH
  在提過了絕對路徑、相對路徑與指令的下達方式之後,您應該會稍微注意到一件事情,那就是:『為什么我可以在 /root 底下執行 /bin/ls 這個檔案呢?』對呀!為什么我可以直接執行 ls 就一定可以顯示出一些訊息而不會說找不到該檔案呢?這是因為環境變數 PATH 的幫助所致呀!當我們在執行一個指令的時候,系統會依照 PATH 的設定去每個 PATH 定義的路徑下搜尋檔案,先搜尋到的指令檔案先被執行之!現在,請下達 echo $PATH , echo 有『顯示、印出』的意思,而 PATH 前面加的 $ 表示後面接的是變數,所以即會顯示出目前的 PATH 了!
  [root@test root]# echo $PATH
  /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
  注意到了嗎?對啦! /bin 在 PATH 的設定之中,所以自然就可以找的到 ls 啦!
  如果你將 ls 移動到 /root 底下的話,然後你自己本身也在 /root 底下,但是當你執行 ls 的時候,他就是不理你?怎么辦?這是因為 PATH 沒有 /root 這個目錄,而你又將 ls 移動到 /root 底下了,自然系統就找不到可執行檔了,因此就會告訴你, command not found !那么該怎么克服這種問題呢?有兩個方法,其一:直接將 /root 的路徑加入 PATH 當中!如何增加?可以使用:
  PATH=”$PATH”:/root
  這種方式來增加即可!另一種方式則是使用完整檔名,亦即直接使用相對或絕對

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-950348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章