您好,登錄后才能下訂單哦!
本篇內容介紹了“Linux絕對路徑與相對路徑的概念是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在Linux中,絕對路徑是指始終從根目錄“/”開始寫起的文件路徑,相對路徑是從當前所在的工作目錄開始寫起的文件路徑。絕對路徑是相對于根路徑“/”的,只要文件不移動位置,那么它的絕對路徑是恒定不變的;而相對路徑是相對于當前所在目錄而言的,隨著程序的執行,當前所在目錄可能會改變,因此文件的相對路徑不是固定不變的。
Linux中什么是相對路徑
路徑是Linux中最基本的概念之一,這是每個Linux用戶都必須知道的。
在 Linux 中,路徑是指文件和目錄的引用方式;它給出了文件或目錄在 Linux 目錄結構中的位置,由名稱和斜杠組成。簡單的理解一個文件的路徑,指的就是該文件存放的位置。例如, /home/cat
就表示的是 cat 文件所存放的位置。只要我們告訴 Linux 系統某個文件存放的準確位置,那么它就可以找到這個文件。
作為一個系統用戶,當您想要訪問某個文件或目錄,或者必須為命令或腳本指定文件或目錄的位置時,就會使用路徑。
cat /home/abhishek/scripts/my_script.sh
請記住,如果路徑以斜杠“/”開頭,則第一個斜杠表示根,路徑中的其余斜線只是分隔符。初學者經常混淆根斜杠和分隔符斜杠。
在上圖中,第一個路徑是以根路徑(/)開始的,第二個路徑不是以 / 開始的。這兩種寫法都是正確的,第一個是絕對路徑,第二個是相對路徑。
絕對路徑與相對路徑是什么
指明一個文件存放的位置,有 2 種方法,分別是使用絕對路徑和相對路徑。
我們知道,Linux 系統中所有的文件(目錄)都被組織成以根目錄“/”開始的倒置的樹狀結構,如圖 1 所示。
圖 1 Linux系統文件組織結構示意圖
絕對路徑
絕對路徑一定是由根目錄 / 開始寫起,比如:
/home/abhishek/scripts/my_scripts.sh
使用絕對路徑的表示方式指明 bin 文件所在的位置,該路徑應寫為 /usr/bin,測試代碼如下:
[root@localhost ~]# bin
bash: bin: command not found <-- 沒有找到
[root@localhost ~]# /usr/bin
bash: /usr/bin: is a directory <-- 是一個文件
可以看到,如果僅傳遞給 Linux 系統一個文件名,它無法找到指定文件;而當將 bin 文件的絕對路徑傳遞 Linux 系統時,它就可以成功找到。
相對路徑
和絕對路徑不同,相對路徑不是從根目錄 / 開始寫起,而是從當前所在的工作目錄開始寫起。使用相對路徑表明某文件的存儲位置時,經常會用到前面講到的 2 個特殊目錄,即當前目錄(用 . 表示)和父目錄(用 .. 表示)。
舉個例子,當我們使用 root 身份登錄 Linux 系統時,當前工作目錄默認為 /root,如果此時需要將當前工作目錄調整到 root 的子目錄 Desktop 中,當然可以使用絕對路徑,示例代碼如下:
[root@localhost ~]# pwd <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd /root/Desktop
[root@localhost Desktop]# pwd
/root/Desktop
可以看到,通過使用絕對路徑,我們成功地改變了當前工作路徑。但除此之外,使用相對路徑的方式會更簡單。因為目前處于 /root 的位置,而 Desktop 就位于當前目錄下,所以:
[root@localhost ~]# pwd <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd ./Desktop
[root@localhost Desktop]# pwd
/root/Desktop
此代碼中,./Desktop 表示的就是 Destop 文件相對于 /root 所在的路徑。
再舉一個例子,如果以 root 身份登錄 Linux 系統,并實現將當前工作目錄由 /root 轉換為 /usr 目錄,有以下 2 種方式:
#使用絕對路徑
[root@localhost ~]# pwd <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd /usr
[root@localhost ~]# pwd
/usr
#使用相對路徑
[root@localhost ~]# pwd <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd ../usr <-- 相對 root,usr 位于其父目錄 /,因此這里要用到 ..
[root@localhost ~]# pwd
/usr
總之,絕對路徑是相對于根路徑 / 的,只要文件不移動位置,那么它的絕對路徑是恒定不變的;而相對路徑是相對于當前所在目錄而言的,隨著程序的執行,當前所在目錄可能會改變,因此文件的相對路徑不是固定不變的。
絕對路徑和相對路徑之間的差異
我們都知道Linux中目錄結構是一個樹,從根(/)開始,然后產生分支。
假設我們現在目錄abhishek中,并且希望訪問文件my_scripts.sh,如下圖所示兩種路徑的表示:
假設我們使用 ls 命令查看 my_script.sh 的文件信息,那么使用絕對路徑:
ls -l /home/abhishek/scripts/my_script.sh
然后,相對路徑:
ls -l scripts/my_script.sh
那么,以上兩種方式,除了文件路徑不一樣以外,其他的完全一樣:
注:在Linux中,文件名區分大小寫。可以有大寫、小寫、數字、點、中劃線、下劃線以及除了斜杠(/)之外的大多數字符。斜杠(/)作為保留字符,用于根目錄和用于分割路徑中的目錄。
使用帶有 . 和 .. 目錄的相對路徑
有兩種特殊的相對路徑:
.(一個點):表示路徑中的當前路徑;
..(兩個點):表示父目錄,即上一級目錄。
如下圖,我們要從 abhishek 目錄中,到 prakash 目錄中去。
切換目錄,使用 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絕對路徑與相對路徑的概念是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。