在 Linux 中,簡單的理解一個文件的路徑,指的就是該文件存放的位置,例如,在《Linux文件系統的層次結構》中提到的 /home/cat 就表示的是 cat 文件所存放的位置。只要我們告訴 Linux 系統某個文件存放的準確位置,那麼它就可以找到這個文件。指明一個文件存放的位置,有 2 種方法, ...
在 Linux 中,簡單的理解一個文件的路徑,指的就是該文件存放的位置,例如,在《Linux文件系統的層次結構》中提到的 /home/cat 就表示的是 cat 文件所存放的位置。只要我們告訴 Linux 系統某個文件存放的準確位置,那麼它就可以找到這個文件。
指明一個文件存放的位置,有 2 種方法,分別是使用絕對路徑和相對路徑。
我們知道,Linux 系統中所有的文件(目錄)都被組織成以根目錄“/”開始的倒置的樹狀結構,如下圖所示。
Linux系統文件組織結構示意圖
絕對路徑一定是由根目錄 / 開始寫起。例如,使用絕對路徑的表示方式指明 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
註意,這裡所使用的 pwd 和 cd 命令,目前只需知道它們的功能即可,具體用法會在後續文章中作詳細講解。
可以看到,通過使用絕對路徑,我們成功地改變了當前工作路徑。但除此之外,使用相對路徑的方式會更簡單。因為目前處於 /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
總之,絕對路徑是相對於根路徑 / 的,只要文件不移動位置,那麼它的絕對路徑是恆定不變的;而相對路徑是相對於當前所在目錄而言的,隨著程式的執行,當前所在目錄可能會改變,因此文件的相對路徑不是固定不變的。