終端機的那些煩惱
原文由 Julia Evans 于 發布,訂閱此部落格
幾週前我做了一份關於終端機的問卷調查(你可以在這裡閱讀結果),最後我問了:
對你來說,使用終端機時最讓人感到挫折的是什麼?
有 1600 人回答了這個問題,我花了幾天時間把所有回覆分類。一路上我才體會到,要為質性資料分類一點也不容易,但我還是盡力而為。最後我還自己打造了一個工具來加快分類的速度。
跟我以往的所有問卷一樣,這次的研究方法也不是特別科學。我只是在 Mastodon 和 Twitter 上發布問卷,進行了幾天,然後收集了剛好看到問卷、又有意願回覆的人的答案。
以下是大家最常提到的挫折類別!
在閱讀這些留言時,有幾點值得留意:
- 有 40% 的填答者使用終端機已達 21 年以上
- 有 95% 的填答者至少已使用終端機 4 年
這些留言並非來自完全的新手。
以下是各種挫折的分類!括號內的數字代表有此困擾的人數。我主要是為自己整理這些內容,因為我正在寫一本關於終端機的 zine,想先了解大家到底在哪裡卡關。
記不住語法(115)
大家提到很難記住:
- 像 awk、jq、sed 等 CLI 工具的語法
- 重新導向的語法
- tmux、文字編輯等操作的快捷鍵
舉一個例子:
要完整發揮功能,有太多瑣碎的「小知識」要記。即使已經用了這麼多年,我有時還是會忘記 stderr 到底是 2 還是 1,或是搞混
>和>>哪個是哪個。
切換終端機很困難(91)
大家提到在不同系統之間切換時很吃力(例如家用/工作電腦,或透過 SSH 連線時),會遇到:
- 鍵盤快捷鍵的作業系統差異(例如 Linux 和 Mac 的不同)
- 系統上沒有自己慣用的文字編輯器(「沒有 vim」或「只有 vim」)
- 同一個指令的不同版本(例如 Mac OS 的 grep 和 GNU grep)
- 沒有 Tab 自動補齊
- 不習慣的 shell(「zsh 和 bash 之間微妙的差異」)
還有同一系統內部的差異,例如不同的 pager 彼此不一致(git diff 的 pager 和其他 pager)。
舉一個例子:
我已經習慣了 fish 和 vi 模式,但當我透過 SSH 連到伺服器、容器時,這些都無法使用。
顏色(85)
關於顏色,大家遇到了很多問題,例如:
- 程式設定的顏色在淺色背景下難以辨識
- 找不到喜歡的配色(而且很難讓它在不同應用程式間保持一致)
- 在多層 SSH/tmux 等環境下顏色無法正常顯示
- 不喜歡預設值
- 根本不想要顏色,卻很難把它關掉
這則留言讓我很有共鳴:
要在終端機模擬器和 fish 之間把終端機主題設定到一個合理的狀態(我幾年前做過一次,記得當時既繁瑣又麻煩,現在覺得自己被目前的主題綁住了,因為它還能用,我完全不想再去碰那些設定)。
快捷鍵(84)
關於快捷鍵的留言中,有一半是在抱怨在 Linux/Windows 上,終端機裡複製/貼上的快捷鍵和作業系統其他地方的不一樣。
除了複製/貼上之外,快捷鍵的其他問題包括:
- 在瀏覽器中的終端機使用
Ctrl-W結果把視窗關掉了 - 終端機只支援有限的快捷鍵組合(沒有
Ctrl-Shift-、沒有Super、沒有Hyper,很多ctrl-快捷鍵也無法使用,例如Ctrl-,) - 作業系統阻擋你使用終端機的快捷鍵(例如 Mac OS 預設就把
Ctrl+left arrow用在別的功能上) - 在終端機中使用 emacs 時遇到的問題
- 倒退鍵無法使用(2)
其他複製貼上問題(75)
除了「複製貼上的快捷鍵不一樣」之外,還有很多其他複製貼上的問題,例如:
- 透過 SSH 複製
- tmux 和終端機模擬器各自用不同方式做複製貼上
- 要處理眾多不同的剪貼簿(系統剪貼簿、vim 剪貼簿、Linux 上的「中鍵點擊」剪貼簿、tmux 的剪貼簿等),以及如何讓它們同步
- 從終端機複製時會多出莫名的空格
- 貼上多行指令時,會以令人害怕的方式自動執行
- 想要一種不用滑鼠就能複製文字的方法
可發現性(55)
關於這點有很多留言,歸根究柢都是同一個抱怨——很難發現好用的工具或功能!這則留言算是總結了大家的心聲:
要靠自己學真的很難。我現在會的東西,大多是這些年來從不同人那裡東拼西湊聽來的。
學習曲線陡峭(44)
很多留言提到終端機整體學習曲線很陡。舉兩個例子:
用了 15 年,我用起來的速度並沒有比 5 年前、甚至 10 年前快多少。
以及
我知道如果多學一些快捷鍵和指令、好好設定終端機,生活會輕鬆很多,但我就是沒花時間去做,因為感覺太讓人卻步了。
歷史紀錄(42)
關於 shell 歷史紀錄的一些問題:
- 歷史紀錄不會在不同終端機分頁之間共用(16)
- 紀錄長度限制太短(4)
- 還原終端機分頁時,歷史紀錄沒有一起還原
- 因為終端機當掉而遺失歷史紀錄
- 不知道怎麼搜尋歷史紀錄
舉一個例子:
在我搞懂之前浪費了很多時間,到現在還是很煩——zsh 的「history」緩衝區小得可憐,我得輸入「history 0」才能看到有點用處的長度。
文件寫得不好(37)
大家提到:
- 文件整體來說很晦澀難懂
- man page 缺乏範例
- 有些程式根本沒有 man page
這是一則具代表性的留言:
要找到好的範例和文件很難。man page 常常不夠用,還得去 Stack Overflow 大海撈針
捲動回顧(36)
關於捲動回顧的幾個問題:
- 程式印出太多資料,導致捲動回顧的歷史紀錄被洗掉
- 調整終端機大小會弄亂捲動回顧
- 缺少時間戳記
- 在背景啟動的 GUI 程式會一直印出東西,干擾其他程式的輸出
舉一個例子:
當調整終端機大小時(特別是把它調窄),會導致捲動回顧內容的自動換行壞掉,因為指令是根據終端機視窗寬度來格式化輸出的。
「感覺很過時」(33)
很多留言提到終端機受限於歷史包袱,讓人覺得綁手綁腳,而且使用者常常得去學一些感覺非常冷僻的實作細節。舉一個例子:
那些遺留下來的陳舊包袱太多了,如果能有一個從零開始重新打造的 CLI 介面就好了。
Shell 腳本(32)
很多人在抱怨 POSIX shell 腳本。大家普遍覺得 shell 腳本很難寫,但換成比較不那麼標準的腳本語言(像是 fish、nushell 等)又會帶來別的問題。
Shell 腳本。我放棄 shell 腳本、改用其他腳本語言的容忍度很低。它就是又亂又強大。一旦搞砸代價可能很高,所以我乾脆不去碰。
更多問題
還有一些至少被提到 10 次的問題:
- (31)指令列參數不一致:到底是 -h、help 還是 --help?
- (24)在不同系統間同步 dotfiles
- (23)效能(例如「我的 shell 啟動太慢」)
- (20)視窗管理(可能同時混用了 tmux 分頁、終端機分頁和多個終端機視窗。那個 shell session 到底跑哪去了?)
- (17)普遍感到害怕/不安(「那種癱瘓性的恐懼,擔心自己會用某個指令做出某件神祕的壞事,然後完全不知道該怎麼修復、復原,甚至根本搞不清楚發生了什麼事」)
- (16)terminfo 問題(「當我嘗試新的終端機模擬器並透過 SSH 連到別處時,就得去學 terminfo。」)
- (16)缺乏圖片支援(sixel 等)
- (15)SSH 問題(例如 SSH 連線中斷後得重來)
- (15)各種 tmux/screen 問題(例如 tmux 和終端機模擬器之間缺乏整合)
- (15)打錯字與打字慢
- (13)終端機因各種原因跑版(例如按到
Ctrl-S、用cat去看二進位檔等) - (12)shell 中的引號/跳脫字元
- (11)各種 Windows/PowerShell 問題
無/沒有(122)
另外也有 122 個回答表示「沒什麼特別的」或「只是沒辦法在終端機裡做『所有』事情」
我想我已經為大多數/所有的困擾找到變通方法了
就是這些了!
我不會對這些結果做太多評論,不過有幾種類別在我看來是相關的:
- 記不住語法與歷史紀錄(很多時候你需要記起來的,就是你以前跑過的東西!)
- 可發現性與學習曲線(缺乏可發現性,絕對是讓學習變得困難的一大原因)
- 「切換系統很困難」與「感覺很過時」(那些三、四十年來幾乎沒變過的工具雖然有很多問題,但它們的好處就是不管在哪個系統上幾乎都在,這非常實用,也讓人很難停止使用它們)
試著用合理的方式把所有這些結果分類,讓我真心佩服起社會科學研究者的專業能力。
隨機一篇部落格
留言
登入後參與討論