首頁 > 運維 > linux運維 > 主體

Linux絕對路徑與相對路徑是什麼

青灯夜游
發布: 2023-01-31 10:00:45
原創
8250 人瀏覽過

在Linux中,絕對路徑是指始終從根目錄「/」開始寫起的檔案路徑,相對路徑是從目前所在的工作目錄開始寫起的檔案路徑。絕對路徑是相對於根路徑「/」的,只要檔案不移動位置,那麼它的絕對路徑是恆定不變的;而相對路徑是相對於當前所在目錄而言的,隨著程式的執行,當前所在目錄可能會改變,因此檔案的相對路徑不是固定不變的。

Linux絕對路徑與相對路徑是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

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,如下圖所示兩種路徑的表示:

假設我們使用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视频教程

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板