首頁  >  文章  >  系統教程  >  Linux 中的絕對路徑和相對路徑,有什麼不同?

Linux 中的絕對路徑和相對路徑,有什麼不同?

WBOY
WBOY轉載
2024-02-10 20:03:20727瀏覽

路徑是 Linux 系統中一個非常重要的概念,每個 Linux 使用者都應該了解它。

它是指檔案和目錄在 Linux 目錄結構中的位置,由名稱和斜線組成。透過路徑,我們可以快速找到檔案或目錄的位置。

/home/abhishek/scripts

作為一個系統用戶,當您想要存取某個檔案或目錄,或必須為指令或腳本指定檔案或目錄的位置時,就會使用路徑。

cat /home/abhishek/scripts/my_script.sh

請記住,如果路徑以斜線「/」開頭,則第一個斜線表示根,路徑中的其餘斜線只是分隔符號。初學者經常混淆斜線和分隔符號斜線。

Linux 中的绝对路径和相对路径,有什么区别?

在上圖中,第一個路徑是以根路徑(/)開始的,第二個路徑不是以 / 開始的。這兩種寫法都是正確的,第一個是絕對路徑,第二個是相對路徑。

Linux中的絕對路徑與相對路徑

絕對路徑總是從根目錄(/)開始,例如:

/home/abhishek/scripts/my_scripts.sh

相對路徑從目前目錄開始。例如,如果你在 /home 目錄中,希望存取 my_script.sh 文件,那麼存取的路徑應該是:

abhishek/scripts/my_scripts.sh

瞭解絕對路徑與相對路徑之間的差異

我們都知道Linux中目錄結構是一個樹,從根(/)開始,然後產生分支。

假設我們現在目錄abhishek中,並且希望存取檔案my_scripts.sh,如下圖所示兩種路徑的表示:

Linux 中的绝对路径和相对路径,有什么区别?

假設我們使用 ls 指令查看 my_script.sh 的檔案訊息,那麼使用絕對路徑:

ls -l /home/abhishek/scripts/my_script.sh

然後,相對路徑:

ls -l scripts/my_script.sh

那麼,以上兩種方式,除了檔案路徑不一樣以外,其他的完全一樣:

Linux 中的绝对路径和相对路径,有什么区别?

註:在Linux中,檔案名稱區分大小寫。可以有大寫、小寫、數字、點、中劃線、下劃線以及除了斜線(/)之外的大多數字元。斜線(/)作為保留字符,用於根目錄和用於分割路徑中的目錄。

使用帶有 . 和 .. 目錄的相對路徑

#**
**

有兩種特殊的相對路徑:

  • .****(一個點):表示路徑中的目前路徑;
  • ..****(兩點):表示父目錄,即上一層目錄。

如下圖,我們要從 abhishek 目錄中,到 prakash 目錄中去。

Linux 中的绝对路径和相对路径,有什么区别?

切換目錄,使用 cd 指令。如果使用絕對路徑,可以這樣:

cd /home/prakash

使用相對路徑的話 ,需要用到特殊的相對路徑 .. :

cd ../prakash

為什麼要使用 .. 呢?因為相對路徑要從目前目錄開始,我們需要告訴 cd 指令向上一級,將我們帶到 /home 目錄,然後從那裡在進入到 prakash 目錄。

絕對路徑始終以 / 開始,並且與當前位置無關;相對路徑取決於當前的位置。

絕對路徑和相對路徑,應該使用哪一個呢?

#老實說,這個問題沒有直截了當的答案。這要視情況而定。

如果你目前所在的目錄層次結構比較深,並且需要向上或向下一層移動,那麼使用相對路徑會更簡單。

假設你位於

/home/username/programming/project/interface/src/header 目錄中,並且需要存取 /home/username/programming/project/interface/bin 目錄中的某些內容。使用相對路徑可以避免鍵入所有冗長的目錄名,只需在此處使用.././bin即可。

但是,如果你要從/home/username/programming/project/interface/src/header目錄存取/usr/bin 目錄中的某些內容,那麼使用../../../../ ../../usr/bin 會比較麻煩,這時候使用絕對路徑比較方便。

另一種情況,是在腳本或程式中使用路徑。如果位置是確定的,那麼就使用絕對路徑;如果專案中有多個資料夾,並且需要在其中之間切換,那麼此處需要使用相對路徑,因為您不確定最終使用者會將程式放在什麼地方。

以上是Linux 中的絕對路徑和相對路徑,有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lxlinux.net。如有侵權,請聯絡admin@php.cn刪除