1 相對路徑與絕對路徑.

  • 絕對路徑:路徑的寫法『一定由根目錄 / 寫起』,例如: /usr/share/doc 這個目錄。
  • 相對路徑:路徑的寫法『不是由 / 寫起』,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 『cd ../man』這就是相對路徑的寫法啦!相對路徑意指『相對於目前工作目錄的路徑!』

2 目錄的相關操作

底下這些就是比較特殊的目錄,得要用力的記下來才行:

 

 

 

在所有目錄底下都會存在的兩個目錄,分別是『.』與『..』 分別代表此層與上層目錄的意思

 

底下我們就來談一談幾個常見的處理目錄的指令吧:

  • cd:變換目錄
  • pwd:顯示目前的目錄
  • mkdir:建立一個新的目錄
  • rmdir:刪除一個空的目錄

 

  • cd (change directory, 變換目錄)

 

  • pwd (顯示目前所在的目錄)

 

pwd是Print Working Directory的縮寫,也就是顯示目前所在目錄的指令

 

  • mkdir (建立新目錄).

在預設的情況下, 你所需要的目錄得一層一層的建立才行!

例如:假如你要建立一個目錄為 /home/bird/testing/test1,

那麼首先必須要有 /home 然後 /home/bird ,

再來 /home/bird/testing 都必須要存在,

才可以建立 /home/bird/testing/test1 這個目錄!

 

!你可以直接下達:『 mkdir -p /home/bird/testing/test1 』

則系統會自動的幫你將 /home, /home/bird, /home/bird/testing 依序的建立起目錄!

並且,如果該目錄本來就已經存在時,系統也不會顯示錯誤訊息喔!挺快樂的吧! ^_^。

 

  • rmdir (刪除『空』的目錄)

 

 

3 關於執行檔路徑的變數: $PATH

我們知道查閱檔案屬性的指令ls完整檔名為:/bin/ls(這是絕對路徑),

那你會不會覺得很奇怪:『為什麼我可以在任何地方執行/bin/ls這個指令呢? 』

為什麼我在任何目錄下輸入 ls 就一定可以顯示出一些訊息而不會說找不到該 /bin/ls 指令呢? 

這是因為環境變數 PATH 的幫助所致呀!

 

舉例來說『ls』好了,系統會依照PATH的設定去每個PATH定義的目錄下搜尋檔名為ls的可執行檔,

如果在PATH定義的目錄中含有多個檔名為ls的可執行檔,那麼先搜尋到的同名指令先被執行!

 

請下達『echo $PATH』來看看到底有哪些目錄被定義出來了?

echo有『顯示、印出』的意思

而 PATH 前面加的 $ 表示後面接的是變數,

所以會顯示出目前的 PATH !

 

 

PATH(一定是大寫)這個變數的內容是由一堆目錄所組成的,

每個目錄中間用冒號(:)來隔開,

每個目錄是有『順序』之分的。仔細看一下上面的輸出,

妳可以發現到無論是root還是dmtsai都有 /bin 或 /usr/bin 這個目錄在PATH變數內,

所以當然就能夠在任何地方執行ls來找到/bin/ls執行檔囉!

因為 /bin 在 CentOS 7 當中,就是連結到 /usr/bin 去的!

所以這兩個目錄內容會一模一樣!

 

例題:

假設你是root,如果你將ls由/bin/ls移動成為/root/ls(可用『mv /bin/ls /root』指令達成),
然後你自己本身也在/root目錄下, 請問
(1)你能不能直接輸入ls來執行?
(2)若不能,你該如何執行ls這個指令?
(3)若要直接輸入ls即可執行,又該如何進行?

答:

由於這個例題的重點是將某個執行檔移動到非正規目錄去,所以我們先要進行底下的動作才行:(務必先使用 su - 切換成為root的身份)
 

 (1)接下來不論你在那個目錄底下輸入任何與ls相關的指令,都沒有辦法順利的執行ls了!

也就是說,你不能直接輸入ls來執行,因為/root這個目錄並不在PATH指定的目錄中,

所以,即使你在/root目錄下,也不能夠搜尋到ls這個指令!

(2)因為這個ls確實存在於/root底下,並不是被刪除了!

所以我們可以透過使用絕對路徑或者是相對路徑直接指定這個執行檔檔名,

底下的兩個方法都能夠執行ls這個指令:

 

(3)如果想要讓root在任何目錄均可執行/root底下的ls,那麼就將/root加入PATH當中即可。 加入的方法很簡單,就像底下這樣:

上面這個作法就能夠將/root加入到執行檔搜尋路徑PATH中了!

不相信的話請您自行使用『echo $PATH』去查看吧! 

另外,除了 $PATH 之外,如果想要更明確的定義出變數的名稱,

可以使用大括號 ${PATH} 來處理變數的呼叫喔! 

如果確定這個例題進行沒有問題了,請將ls搬回/bin底下,不然系統會掛點的!

 

某些情況下,即使你已經將 ls 搬回 /bin 了,不過系統還是會告知你無法處理 /root/ls 喔!很可能是因為指令參數被快取的關係。 不要緊張,只要登出 (exit) 再登入 (su -) 就可以繼續快樂的使用 ls 了!

posted on 2016-05-17 11:33  Sharpest  阅读(172)  评论(0)    收藏  举报