中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux絕對路徑與相對路徑的概念是什么

發布時間:2023-01-31 14:12:57 來源:億速云 閱讀:178 作者:iii 欄目:建站服務器

本篇內容介紹了“Linux絕對路徑與相對路徑的概念是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在Linux中,絕對路徑是指始終從根目錄“/”開始寫起的文件路徑,相對路徑是從當前所在的工作目錄開始寫起的文件路徑。絕對路徑是相對于根路徑“/”的,只要文件不移動位置,那么它的絕對路徑是恒定不變的;而相對路徑是相對于當前所在目錄而言的,隨著程序的執行,當前所在目錄可能會改變,因此文件的相對路徑不是固定不變的。

Linux中什么是相對路徑

路徑是Linux中最基本的概念之一,這是每個Linux用戶都必須知道的。

在 Linux 中,路徑是指文件和目錄的引用方式;它給出了文件或目錄在 Linux 目錄結構中的位置,由名稱和斜杠組成。簡單的理解一個文件的路徑,指的就是該文件存放的位置。例如, /home/cat 就表示的是 cat 文件所存放的位置。只要我們告訴 Linux 系統某個文件存放的準確位置,那么它就可以找到這個文件。

作為一個系統用戶,當您想要訪問某個文件或目錄,或者必須為命令或腳本指定文件或目錄的位置時,就會使用路徑。

cat /home/abhishek/scripts/my_script.sh

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

Linux絕對路徑與相對路徑的概念是什么

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

絕對路徑與相對路徑是什么

指明一個文件存放的位置,有 2 種方法,分別是使用絕對路徑和相對路徑。

我們知道,Linux 系統中所有的文件(目錄)都被組織成以根目錄“/”開始的倒置的樹狀結構,如圖 1 所示。

Linux絕對路徑與相對路徑的概念是什么
圖 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,如下圖所示兩種路徑的表示:

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絕對路徑與相對路徑的概念是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天全县| 东丰县| 宁陵县| 佛冈县| 灌南县| 和田市| 德化县| 武山县| 沈阳市| 克什克腾旗| 临泽县| 鹤庆县| 新田县| 宜阳县| 四子王旗| 武川县| 蕉岭县| 当阳市| 河北省| 介休市| 上蔡县| 富蕴县| 盱眙县| 田林县| 澄江县| 密云县| 玉山县| 高密市| 青川县| 邯郸市| 榆社县| 彰化市| 尖扎县| 蒙自县| 拉孜县| 福贡县| 禹州市| 永安市| 海安县| 阿鲁科尔沁旗| 龙泉市|