終端機圖形化工具,是用純文字字元(ASCII 與 Unicode 製圖字元)在終端機裡畫出可讀介面的一類程式,承擔的責任是讓遠端操作不必依賴桌面圖形環境就能監控系統、判讀資料與管理多個工作流。它們傳輸的全是文字,所以在頻寬低、連線不穩、只有一支手機的情境下,反而比真正的圖形介面更可靠。

這類工具常被誤解成「把圖片塞進終端機」。那是另一條技術路線(sixel、kitty 影像協定、chafa 把 PNG 轉成色塊),依賴特定終端機支援、傳輸量大,在低頻寬遠端會卡。本篇談的是另一條路線:用 ─│┌┐└┘ 這類製圖字元、用半形與全形方塊堆出長條圖、用 sparkline 點陣畫趨勢線。畫面本質仍是一段文字,任何能顯示文字的終端機都能呈現。

為什麼遠端操作特別需要這條路線

遠端操作的核心限制是頻寬與連線穩定度,而純文字介面正好把這兩個成本壓到最低。一個全螢幕的監控介面,每次刷新送出的是一整片字元矩陣;若改用影像協定,送出的是一張壓縮點陣圖,資料量通常相差一個量級以上(實際視壓縮率而定)。連線中斷時,文字介面只要重連就能重畫,影像協定則可能因終端機狀態錯亂而花屏。

這條路線也避開了環境依賴。遠端伺服器通常沒有桌面環境,X11 forwarding 設定繁瑣又吃頻寬;手機上的 SSH app(Termius、Blink、JuiceSSH)能穩定顯示的就是文字。把操作介面建立在文字之上,等於把「能不能用」的前提降到「終端機能顯示字」,這是所有遠端通道都滿足的最低標準。

六類工具的定位

終端機圖形化工具依本篇關注的責任分六類,各自解決遠端操作的不同問題。這裡聚焦「監控判讀、資料可視化、多工承載、檔案瀏覽、資料庫存取、訊息佇列存取」六種責任;fuzzy finder(fzf)等其他互動式 TUI 同屬純文字遠端路線、但責任不同,不在本篇的選型框架內。

TUI 監控與儀表板

TUI(Text User Interface)監控工具負責把系統即時狀態畫成全螢幕的互動介面,省去反覆敲 psdffree 再自行拼湊的步驟,一眼呈現 CPU、記憶體、磁碟、網路的即時變化。它用製圖字元畫出框線與長條,用顏色標出負載高低,並接受鍵盤操作來排序、過濾、殺進程。

btophtop 是系統層的代表:開起來就是一片帶長條圖的進程清單,可以直接選中進程送訊號。k9s 把這套搬到 Kubernetes,用同樣的全螢幕互動瀏覽 pod、查 log、進 container。lazygit 把 git 的暫存、commit、分支操作變成可點選的面板。ncdugdu 掃描磁碟並用長條畫出每個目錄佔多少空間,找出爆掉的是哪一包。

這類工具的共同判讀訊號是:需求落在「即時狀態 + 立刻操作」、而非「事後分析一段歷史資料」時,TUI 監控是對的選擇。它的邊界在於刷新成本 — 全螢幕重畫在慢速連線上會明顯延遲,這點在後面遠端情境會展開。

ASCII 與文字圖表

文字圖表工具負責把一串數值畫成終端機裡的圖,讓趨勢與分布可視化,而不必把資料下載回本機開試算表。它接受標準輸入或檔案的數字,輸出長條圖、折線圖或 sparkline,全部由字元構成。

gnuplot 是老牌繪圖工具,設定 set terminal dumb 就會用 ASCII 畫折線圖,適合畫函數或一段時間序列。termgraph 吃一份「標籤 + 數值」就畫出橫向長條圖,看各分類佔比很直接。plotext 是 Python 函式庫,在腳本裡直接畫折線與散點,適合接在資料處理流程後面。youplotuplot)能從 pipeline 即時吃資料畫圖,配合 tail -f 可以做出滾動更新的監控線。sparkline 類工具(如 spark)把一串數字壓成一行高低起伏的點陣,塞進狀態列或 log 裡都行。

這類工具的判讀訊號是:手上已經有一串數值(log 抽出來的延遲、監控匯出的指標、一個查詢的結果),想看形狀而非逐筆讀數字。它跟 TUI 監控的差別在於資料來源 — TUI 監控自己去抓系統即時狀態,文字圖表則是餵什麼畫什麼,適合畫自訂指標與歷史資料。

終端機多工器

終端機多工器負責在單一連線裡管理多個終端機 session,並讓 session 的生命週期脫離連線本身。它把畫面切成多個 pane、用分頁組織工作流,而最關鍵的是:連線斷了,伺服器上的 session 仍在跑,重連後 attach 回去就接續原狀。

tmux 是事實標準,幾乎每台伺服器都裝得到,設定檔成熟、資源佔用低。zellij 是較新的選擇,預設就有畫面提示(floating pane、操作提示列),對不熟快捷鍵的人上手較快,並內建 layout 設定能一鍵開出固定的多 pane 佈局。

多工器跟前兩類不同,它本身不畫資料圖,而是承載其他工具的容器:在一個 pane 跑 btop、另一個 pane 跑 tail -f 接 sparkline、第三個 pane 留著敲指令。對遠端操作來說,它解決的是連線穩定度問題 — 這是手機與低頻寬情境的核心痛點,下一節展開。

檔案瀏覽與操作

檔案管理器負責把目錄結構與檔案內容做成可導航的互動介面,讓遠端只有終端機時也能像 IDE 側邊欄那樣瀏覽、預覽、搬移檔案,取代反覆 lscdcat

broot 用可展開的樹狀檢視呈現目錄層級,配模糊跳轉適合深層結構;yaziranger 走 Miller 欄狀(並列父目錄、當前目錄、預覽窗),邊瀏覽邊看內容。

這類工具的判讀訊號是:需求落在檔案層級的導覽與操作,而非系統監控或畫圖。選型與依賴注意事項見 終端機檔案管理器

資料庫存取

資料庫客戶端負責把 DB 的 schema、表格與查詢結果做成文字介面,讓遠端只有終端機時也能連到資料庫瀏覽資料、跑查詢,取代把連線資訊餵給桌面 GUI(DBeaver、TablePlus)。

它分兩種範式:全螢幕 TUI(harlequin 的 SQL IDE 風、lazysql 的瀏覽器風)把 schema 樹、編輯器、結果表排進面板;增強型 REPL(pgcli / litecli)仍是行式打 SQL、但補上語法高亮與智能補全。

這類工具的判讀訊號是:需求落在連資料庫做事,而非看系統或檔案。選型與連線注意事項見 終端機 SQL 客戶端

訊息佇列存取

訊息佇列客戶端負責把 broker 的 topic、partition、consumer group 與訊息內容做成文字介面,讓遠端只有終端機時也能瀏覽訊息流、消費單一 topic、看消費進度,取代把連線資訊餵給桌面工具(Conduktor、RedisInsight)。它跟資料庫客戶端的關鍵差異是多半綁單一 broker 協議:Kafka 的 TUI 不認 AMQP、一個工具連多種 broker 是少數例外。

它同樣分兩種範式:全螢幕 TUI(Kafka 的 kaskade 看叢集與消費、yozefu 用查詢撈 record)把 topic 清單與訊息排進面板;增強型 REPL(Redis 的 iredis)行式打指令、補上補全與型別感知。

這類工具的判讀訊號是:需求落在連 broker 看訊息與消費狀態,而非連資料庫。選型與實機驗證注意事項見 終端機訊息佇列客戶端

三種遠端情境的選型判讀

工具選型要回到實際的連線條件,而不只是比對功能清單。以下對應三種常見的遠端情境,各自的判讀重點與陷阱不同。

SSH 連到 Linux 伺服器

從本機 SSH 進伺服器,連線通常穩定、頻寬足,瓶頸在於操作要連續、不想每次重連都從頭開始。這個情境的核心配置是「多工器打底 + TUI 監控擺上去」:登入後先 tmux attach(沒有就 tmux new),在固定的 pane 佈局裡跑監控與操作。

這裡的判讀重點是把 session 持久化當成預設習慣,而不是等斷線才後悔。即使連線穩定,把長時間任務(build、資料遷移、tail -f 追 log)放進多工器,就能隨時離開再回來。TUI 監控在這個情境幾乎沒有刷新成本顧慮,btop 開最高刷新率也順,互動功能的排序與殺進程都能放手用。

常見陷阱是把多工器與終端機本身的捲動搞混 — 進了 tmux 後,滑鼠捲動預設是 tmux 在管,要進 copy mode 才能往回看歷史。這是上手期最容易卡住的點,值得一開始就把捲動與複製的快捷鍵設順。

手機或平板遠端

用手機或平板的 SSH app 連線,限制是螢幕小、虛擬鍵盤難敲組合鍵、連線會隨網路切換而中斷。這個情境最該優先的是多工器的持久化能力:手機從 Wi-Fi 切到行動網路、app 切到背景再回來,連線往往已經斷過一次,沒有多工器就等於每次都重來。

工具選型要往「省版面、少快捷鍵」傾斜。zellij 在這裡比 tmux 友善,因為它把操作提示畫在畫面上,不必硬記組合鍵;但 tmux 若已配好觸控友善的快捷鍵也能勝任。TUI 監控要挑版面能縮的 — htop 在窄螢幕下仍可讀,複雜的多欄儀表板則會被擠到看不清。文字圖表在小螢幕反而有優勢,一行 sparkline 不管螢幕多窄都塞得下。

常見陷阱是組合鍵在虛擬鍵盤上難以輸入。多工器的 prefix key(tmux 預設 Ctrl-b)在手機上很難按,值得改綁成單鍵或螢幕上的快捷按鈕;好的 SSH app 通常提供自訂工具列來補這個缺口。

低頻寬或不穩定連線

連線慢或會斷時,限制同時來自頻寬與穩定度,兩者要分開處理。穩定度由多工器解決 — 斷線後 session 還在,這點與情境無關地成立。頻寬則直接決定 TUI 監控能不能用得舒服。

這裡最關鍵的判讀是刷新率與重畫成本的取捨。全螢幕 TUI 每次刷新會重送整片畫面,刷新間隔越短、頻寬負擔越重;把刷新率調快、或工具本身刷新較密時,慢速連線上會看到畫面追不上、按鍵延遲。對策是把刷新間隔調長(多數工具支援,例如 btop 在介面裡可調 update_mshtop-d 設延遲),用較低的更新頻率換流暢的操作。

判讀的分界是即時性與頻寬的取捨:連線品質好就用全螢幕 TUI 的即時性,品質差就退回低頻率的文字輸出。文字圖表在後者特別划算,因為它是一次性輸出而非持續重畫 — 跑一次 termgraph 印出結果就結束,不佔用持續頻寬;需要持續監控時,「低刷新率的單一數值 + 偶爾印一次 sparkline」往往比全螢幕儀表板更實用。

選型判準與下一步

把這些工具與三種情境收斂成一條判準鏈:先用多工器解決連線斷續(任何遠端情境都先做這步),再依任務選對應工具 — 即時狀態用 TUI 監控、看歷史數值用文字圖表、找檔案用檔案管理器、連資料庫用 SQL 客戶端、連 broker 看訊息用訊息佇列客戶端,最後依連線品質調整刷新率與版面密度。

這條判準對應的具體工具,在本資料夾逐篇展開安裝、設定與遠端調校的細節:

每篇單工具文章會聚焦一個工具在遠端情境下的實際配置,而不是重述官方手冊。先有這份總覽建立選型框架,再依當下的連線條件挑對應的工具深入。