絕對路徑|Linux 使用邏輯 02
這篇從路徑的起點家目錄講起,在 Windows 的 Git Bash 裡實際示範絕對路徑:一層一層走、一次打完整條路、波浪號回家、斜線的差別,以及用 Tab 補名字。
此文章也有影片介紹,可以搭配影片一起學習!
以下正式開始文章
這個系列要補什麼
你可能會想,網站都可以讓 AI 做了,為什麼還要回頭懂系統的東西?
這個系列,要補足一些在 AI 時代下,大家可能不太清楚的系統邏輯。
其實現在很多人都用 AI 做網站,但是也很擔心,自己的網站到底有沒有問題。
另外,不管是網站還是自己的電腦,都是同樣的作業系統邏輯。
所以只要學到一些,對自己做的事情就會比較有掌握度,也會慢慢知道 AI 到底發生了什麼問題。
路徑的起點:家目錄
這一篇要講系統路徑,從絕對路徑開始。
你可能會想,要講路徑,為什麼要先講家目錄?
因為要討論路徑,必須要先有個起點,所以這邊要先提到所謂的家目錄。
家目錄是什麼呢?不管你登入哪一個系統,有登入這個動作,就表示你是一個使用者。
使用者在系統裡面會有一個自己的空間,那個空間的最底層,一般就設定成家目錄。
它主要是用來區分你跟別的使用者,資料放的位置,還有權限的管理。
為什麼現在不太會碰到
看到這裡,你可能會想,電腦用了這麼久,好像從來沒注意過家目錄?
家目錄這個概念,現在大部分的人其實已經不太會碰到。
其中一個原因,是我們現在每個人都有好幾個裝置。
比如說,你的手機裡面其實也有家目錄的概念,你的電腦裡面也有。
但是電腦只服務你一個人,手機也只服務你一個人。不像早期,可能很多人共用同一台電腦,所以這個概念就沒有以前那麼直覺。
另外,如果是 Windows 系統,通常打開來看到的都是 C 槽。
以前有在安裝程式的話,大家會比較習慣 C 槽這個最底層的位置,而不是家目錄。
不過,這也是因為電腦通常只服務你一個人,家目錄跟 C 槽對你來說沒有太大的差異。你都是超級使用者,全部都看得到。
網站就不一樣了
那既然自己的電腦用不太到,為什麼還要懂家目錄?
因為如果今天是網站,就會不太一樣。
使用網站的人,是透過網站這支程式,去訪問你放在網路上的伺服器。
伺服器也是一種電腦,通常會是 Linux 的其中一種。
用 Git Bash 示範
你可能會問,伺服器是 Linux,為什麼示範還是在 Windows 上?
這篇是用 Git Bash,在 Windows 底下模擬 Linux 的操作,所以會出現一些 Windows 才有的路徑。
但是觀念上,直接拿去 Linux 和 Mac OS 用,是沒什麼問題的。
那接下來,我們就從最簡單的講起。
一層一層走,和一次打完整條路
要從最上層走到自己的家目錄,要怎麼走?
第一種是一層一層進去:先進 C 槽,再進 Users,再進 pbuser。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd /c
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c
$ cd Users
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c/Users
$ cd pbuser
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$
每走一層,提示字元裡的位置就跟著變:/c、/c/Users,最後變回 ~。
如果你現在要看你自己在哪個路徑,可以用 pwd 這個指令,直接打 pwd。現在就在家目錄。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ pwd
/c/Users/pbuser
第二種,回到 C 槽,把整段路一次打進去,也可以。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd /c
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c
$ cd /c/Users/pbuser
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ pwd
/c/Users/pbuser
這次只打一行 cd,pwd 印出來的,一樣是 /c/Users/pbuser。
波浪號直接回家
畫面上的字越來越多了。如果你覺得你的終端機有點太亂了,可以用 clear 這個指令,它會清空你看得到的這部分畫面。
clear 並不是把你過去的指令清掉,只是把你的畫面變乾淨而已。之後每換一件事講,我們都先清掉畫面再開始。
那如果我又回到 C 槽,想直接跳到家目錄,有沒有其他方式?
有,直接打波浪號,就是這個小蝌蚪 ~。它在數字 1 的左邊,如果你直接按這個鍵的話,不是出現波浪號,你必須要壓住 Shift 再按。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd /c
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c
$ cd ~
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ pwd
/c/Users/pbuser
只打了一個 ~,pwd 印出的就是 /c/Users/pbuser。
它指的是這個使用者的家目錄,所以使用者不一樣,進到的路徑也不一樣。
前面有沒有斜線,差在哪裡
所以你可能會想說,到底要不要加斜線?
先回到 C 槽,打一個前面沒有斜線的 Users/pbuser。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd /c
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c
$ cd Users/pbuser
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ pwd
/c/Users/pbuser
在 C 槽底下,不加斜線也進得了家目錄。
所以要不要加,要看你下指令的時候在哪裡。
現在在家目錄,打有斜線的版本,還是在家目錄。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd /c/Users/pbuser
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ pwd
/c/Users/pbuser
再打沒有斜線的版本。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd Users/pbuser
bash: cd: Users/pbuser: No such file or directory
它會說 No such file or directory,沒有這個檔案或目錄。
這時候我們可以用 ls 這個指令看一下。ls 這個指令會列出在這個資料夾裡面所有的資料夾和檔案,不過預設的話,隱藏檔不會顯示出來。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ ls
Desktop
Downloads
Pictures
Public
家目錄底下並沒有 Users,當然也沒有 pbuser。
在下載裡面也一樣。先進 Downloads,再打有斜線的版本,回到家目錄。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd Downloads
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd /c/Users/pbuser
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ pwd
/c/Users/pbuser
再進一次 Downloads,打沒有斜線的版本。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~
$ cd Downloads
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd Users/pbuser
bash: cd: Users/pbuser: No such file or directory
沒有斜線的版本,是去找下載底下的 Users,一樣找不到。
下載底下進不去 pbuser,是因為 pbuser 就不在下載裡面,它在的位置是在家目錄。所以並不是你的路徑長得很像,就可以進去。
那條斜線非常重要,因為最前面那個斜線,指的就是根目錄。
所以絕對路徑的意思,其實就是無論你在哪裡,都從根目錄、從起點開始,進 c、進 Users、再進 pbuser,一層一層往裡面進入。你只要沒有打斜線,就等於是從你現在的位置,也就是 pwd 看到的位置,一層一層往後面推進,這是相對路徑。
它的邏輯就有點像:斜線開頭的絕對路徑,是指定從你家大門走到你的房間,可能是「直走、左轉、右轉、直走」。但如果你是在你家廚房,收到同樣的指令「直走、左轉、右轉、直走」,可能就完全沒辦法走,一直撞到牆壁。
不知道自己在哪,就用絕對路徑
那如果我今天不知道自己在哪裡,想進入下載資料夾,該怎麼進去?
最簡單的方式,就是用絕對路徑。
先從 C 槽試。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd /c
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c
$ cd /c/Users/pbuser/Downloads
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ pwd
/c/Users/pbuser/Downloads
在 C 槽,可以進入下載資料夾。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd /c/Users
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c/Users
$ cd /c/Users/pbuser/Downloads
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ pwd
/c/Users/pbuser/Downloads
在 Users 也進得去。
再換到一個很奇怪的目錄,例如 /etc,你也不知道這是用來幹什麼的。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd /etc
pbuser@LAPTOP-5DJEG6FJ MINGW64 /etc
$ cd /c/Users/pbuser/Downloads
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ pwd
/c/Users/pbuser/Downloads
也一樣進得去。三個不同的起點,打的是同一行,pwd 印出來的也都是 /c/Users/pbuser/Downloads。
不管你在哪裡,只要知道絕對路徑,就可以過去。
這就像無論你今天是在紐約的飯店,還是在你家樓下的小吃攤,你的指示是「回到你家大門後,直走、左轉、右轉、直走」,就一定會走到你的房間。因為它的開頭是「回到你家大門後」。
相對路徑就比較麻煩。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd /c/Users
pbuser@LAPTOP-5DJEG6FJ MINGW64 /c/Users
$ cd pbuser/Downloads
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ pwd
/c/Users/pbuser/Downloads
從 Users 要先進 pbuser,再進 Downloads,前面不能加斜線。
所以,初學者進不去一個資料夾,就找出它的絕對路徑。往前翻也好,看規格文件、人家跟你說它在哪裡也好,就不要一層一層進去,直接打這個路徑就可以了。
名字記不得,按 Tab
那如果有時候不知道資料夾名字要怎麼打,要怎麼進去?
先在桌面新增一個資料夾:在空白的地方按右鍵 → 新增 → 資料夾。中文英文都可以,名稱中間不要有空格,這裡叫它 Test。
接著打 cd /c/Users/pbuser/Desktop/,先不要按 Enter。
不知道有什麼可以用,就按兩下 Tab。它有點像 ls,會列出這個路徑底下有什麼。我這台列出來的是 project 和 Test 兩個資料夾。
再打最前面的字 T,按 Tab。只有一種選擇,它就幫你補完;兩種以上,它會列出全部。
這裡開頭是 T 的只有 Test,所以它直接補成完整的路徑,按 Enter 進去,再用 pwd 看一下。
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Downloads
$ cd /c/Users/pbuser/Desktop/Test/
pbuser@LAPTOP-5DJEG6FJ MINGW64 ~/Desktop/Test
$ pwd
/c/Users/pbuser/Desktop/Test
這樣就進到桌面底下的 Test 了。如果你沒有建立這個資料夾,它是不存在的。
剛剛我有管下載跟桌面是什麼關係嗎?沒有,我直接用絕對路徑就進去了。
下一集:相對路徑
你可能會想,前面一直碰到的相對路徑,又要怎麼用才不會出錯?
下一集,我們就要開始講相對路徑。
路徑是一個非常基本的概念,但它也是只要錯了,就可能造成很大麻煩的一個功能。
那我們下次見!

