[教學] WSL 隨便玩-3. 連結 - 討論區

[教學] WSL 隨便玩-3. 連結

文章瀏覽次數 725 文章回覆數 1

coscell

coscell圖像(預設)

2020-06-30 11:12:56

From:180.176.111.5

昨天說下次要講連結,現在就來兌現支票。
不過只先說概念,因為牽涉檔案屬性的知識所以先不說用法,等到相關主題在說。

連結 (link) 在 Windows 稱為捷徑 (shortcut), 副檔名為 .lnk.
在 Windows 只用來節省翻箱倒櫃找執行檔的麻煩,
在 Linux 除了這個目的,另外還有共用和相容性的作用。
先來說後者。

如果你是程式開發者,一定會有用到共享寒士庫 .so (Windows 稱為動態連結寒士庫 .dll) 的經驗。
兒在 Linux 寒士庫作者習慣在檔名上區分寒士庫版本,例如 abc.so.1.2.3.
兒你並不知道美一套 Linux 會包含或更新到哪個版本的寒士庫,所以根本無法準確引用,導致辛苦寫的程式無法正常執行。
這個問題只要寒士庫作者無論更新到哪個版本都一律建立一個 abc.so 連結到該版本就能解決。

在來說共用。
意思就是可以讓多個人在他們各自的環境李共同維護某個檔案。
暫時只能這樣說,等了解檔案權限就會更清楚了。

接下來研究 pico 這個案例。
他是我們執行過兩次的指令。
所謂執行指令歧視就是去呼叫指令檔案出來執行。
那麼這個執行檔案藏在哪兒呢?
我們就來學習一個查找指令檔案所在的指令:

which pico

顯示 /usr/bin/pico (你會跟我一樣好奇執行 which which 看看嘛?)
這告訴我們 pico 指令檔就在 /usr/bin 目錄李。
這裡說的目錄 (directory) 相當於 Windows 的資料夾 (folder),
美一層之間用 / 隔開,第一個 / 代表從根目錄開始。
接著我們用 vim 這個編輯器的瀏覽目錄功能把 pico 找出來:

vim /usr/bin

總共顯示了九百多個檔案,不得不動用搜尋指令:

/^pico

上一行指令的意思:

  • /: 搜尋
  • ^: 搜尋的字串必須位於一行開頭才算,不然就會搜到一堆有的沒有的
  • pico: 要搜尋的字串,要不要分大小寫可以設定,預設應該有芬

第一個找到的是 piconv 獨是我們要的,按 n 繼續往下找。
找到 pico, 就是他了。
等等,怎麼不是 pico.exe?
沒錯, Linux 並不是用副檔名來區分檔案類型,而是用檔案屬性。
有沒有注意到 pico 後面多了一個 @ 符號,這不是黨名的一部分,而是系統產生用來讓使用者區別檔案的屬性。
@ 代表這是一個連結,聽說還有顏色區分。
因為是個連結,所以後面還會多出一個箭頭指向 nano.
這樣表示我們無論執行 pico 還是 nano 指令,實際執行的都是 nano 執行檔。
我們再來搜尋 nano 看看:

  • 先執行 gg 指令把游標移到檔案開頭
  • 再執行 /^nano

找到第一個就是,這回多出的是 *, 代表執行檔。
執行 :q 指令離開 vim 編輯器。
這裡要多說一句:在編輯器執行指令就是該編輯器的指令而非呼叫執行檔,別跟我抬槓。

如果你是好奇寶寶一定會懷疑為何要多此一舉做一個看起來沒啥意義的連結?
嘿嘿,這個是有歷史低,請聽我道來:

話說 pico 是著名的華盛頓大學老牌的電子郵件軟體 pine (如今已更名為 alpine) 內痔的撰寫郵件編輯器,
由於介面簡單好用頗受歡迎,於是咱們的自由軟體龍頭老大 GNU 就模仿他並且加強功能而開發出 nano 同時修改授權條款廣為發行。
各大 Linux 發行版本紛紛採用,但是考慮到早先的使用者,為了迎合他們的使用習慣,所以才會使用連結或別名讓 pico 指令來執行 nano 編輯器。

故事說完了,你還想聽什麼?等你的回應喔。

留言

#1

特種兵

特種兵圖像(預設)

2020-07-04 10:07:20

From:1.161.144.28

我以前是用 which pico 後
ls -l /usr/bin/pico 去看的
lrwxrwxrwx 1 root root 22 11月 6 2016 /usr/bin/pico -> /etc/alternatives/pico
有 l 就是 link 連結
再用 ls -l /etc/alternatives/pico 往下追
lrwxrwxrwx 1 root root 9 11月 6 2016 /etc/alternatives/pico -> /bin/nano
還是連結那就再追
最後 ls -l /bin/nano
-rwxr-xr-x 1 root root 225320 1月 11 2017 /bin/nano
終於看到 - 開頭表示是執行檔本尊