緯育 2026-0330

出自頂極製作所

本次課程聚焦於在 Linux 環境中使用文字編輯器管理主機的必要性與基本操作。講師指出,伺服器多半不具備圖形化使用者介面 (GUI),因此熟悉文字編輯器是管理 Linux 主機的核心技能。課程介紹兩款主流編輯器:Nano 與 Vim。對於 Nano,講師說明其易學易用的特性,並示範進入、退出、開啟檔案、儲存與另存新檔等基本操作。針對功能更強大的 Vim,講師重點解釋其核心概念——四種模式(一般模式、編輯模式、命令列模式、區塊模式)及切換方式,並示範基本進入與強制退出操作。此外,課程也提及 Linux 系統管理的常見流程,包括檔案比對、修改網路設定檔以設定固定 IP,以及未來如何透過編輯組態檔管理各種系統服務。

Linux 系統管理基礎

  • 檔案內容比對
    • 說明:需確認設定檔是否被修改時,應以工具比對兩個檔案(如備份檔與當前執行檔)的差異。
    • 工具:不建議以人工逐行比對大量設定檔,應使用專門的比較工具。
  • 網路組態設定
    • 目的:伺服器需固定 IP 以保障服務穩定,因此需將預設的動態 IP 改為固定 IP。
    • 方法:修改網路管理套件的組態檔(配置檔)。
    • 系統差異:不同 Linux 發行版(如 CentOS、Ubuntu)偏好不同的網路管理套件與指令工具,設定方式亦不同。
  • 以指令修改網路的缺點
    • 說明:直接以指令修改網路設定通常僅具暫時效果。
    • 問題:主機重新啟動後設定會消失,需重設;根本解法是修改組態檔。
  • Linux 服務與組態檔
    • 核心概念:在 Linux 中,多數功能或服務由一個或多個文字檔控制,稱為「組態檔」(配置檔)。
    • 修改方式:調整系統設定(如登入限制、主機名稱、網路掛載、網路組態、系統排程、遠端分享、防火牆規則等)最快方式是用文字編輯器直接修改對應組態檔。
    • 優點:簡單、快速。
    • 缺點:需學會編輯器的操作並記住指令與檔案位置。
  • Linux 管理工作流程
    • 流程:
   1. 依客戶需求比對並選擇合適軟體(如 Web 伺服器:Apache、Nginx 等)。
   2. 安裝所選軟體。
   3. 使用文字編輯器(如 Nano、Vim)開啟並編輯其組態檔。
   4. 參考官方文件,定位需修改的設定行並進行變更(如將 Web 伺服器 Buffer 由 64MB 改為 128MB)。
   5. 儲存檔案並重新啟動服務。
   6. 若服務有漏洞 (bug),需關注官方更新並及時升級。

文字編輯器 (Text Editor)

  • 學習文字編輯器的必要性
    • 原因:多數 Linux 伺服器(尤其雲端虛擬主機)僅提供文字終端連線,不提供 GUI。
    • 結論:因此必須熟悉文字編輯器;建議至少掌握一至兩套以備不時之需。
  • Nano 編輯器
    • 定位:操作單純、易學的文字編輯器。
    • 歷史:前身為 TIP (TIP Is not Pico),為自由軟體專案;後加入 GNU 專案並更名為 Nano。
    • 介面:主要指令提示顯示於畫面最下方,並隨狀態變化。
    • 基本操作:
    • 進入/退出:輸入 nano 進入;按 Ctrl + X 退出。若檔案有修改,退出時會提示是否儲存。
    • 開啟檔案:nano [檔案路徑/檔名]。
    • 儲存檔案 (WriteOut):按 Ctrl + O。輸入相同檔名為覆蓋儲存;輸入不同檔名即「另存新檔」。
    • 搜尋 (WhereIs):按 Ctrl + W。
    • 游標位置資訊:按 Ctrl + C 顯示目前行列位置。
    • 說明 (Help):按 Ctrl + G 顯示更多快速鍵說明。
  • Vim 編輯器
    • 定位:功能強大、廣泛使用但較複雜的編輯器。作者曾言:「文字編輯器只有兩種,一種叫 Vim,一種叫其他」。
    • 歷史:前身為 vi,而 vi 源自 UNIX 的 ex 編輯器;Vim 為眾多 vi 衍生版本中最流行者。
    • 特點:
    • 介面極簡,僅底部一行顯示訊息,無快速鍵提示。
    • 支援分割視窗,可同畫面開啟多個檔案。
    • 支援多次復原 (undo) 與重做 (redo)。
    • 內建超過 400 種程式語言語法高亮。
    • 支援中斷復原,可在意外關閉後還原未儲存內容。
    • Windows 上有 GUI 版本 gVim。
    • Vim 的模式 (Modes)
    • 核心概念:Vim 操作以模式為基礎,使用者需明確了解當前模式;若不確定,可按 ESC 回到「一般模式」。所有模式切換皆經由一般模式。
  • 1. 一般模式 (Normal Mode):
    • 進入方式:啟動 Vim 或按 ESC 即進入。
    • 功能:用於瀏覽內容(上下左右、PageUp/PageDown)與執行指令(如刪除、複製);在此模式下每個按鍵對應功能,不可隨意亂按。
  • 2. 編輯模式 (Insert Mode):
    • 進入方式:在一般模式下按 i, a, o 等(常見六種方式)。
    • 功能:輸入與編輯文字內容。
  • 3. 命令列模式 (Command-line Mode):
    • 進入方式:在一般模式下按冒號 : 或斜線 /。
    • 功能:
    • : 可執行存檔 (w)、退出 (q) 等命令。
    • / 可進行文字搜尋。
  • 4. 區塊模式 (Visual Mode):
    • 進入方式:在一般模式下按 v 或 Ctrl+v。
    • 功能:框選文字區域以進行複製、剪下等操作,較少使用。
    • Vim 基本操作:
    • 進入/退出:輸入 vim 進入。
    • 正常退出:在一般模式下輸入 :q (或 :quit)。
    • 強制退出(不儲存):若檔案已修改,輸入 :q! 強制退出。
    • 開啟檔案:vim [檔案路徑/檔名]。

2026-0330-04.png

基礎游標移動 (Part 1)

  • 使用方向鍵與 hjkl 移動
    • 可在 Vim 環境中使用上下左右方向鍵移動游標。
    • hjkl 鍵是傳統的替代方案,對應關係為 h(左), j(下), k(上), l(右)。
    • hjkl 的設計源於早期無獨立方向鍵的鍵盤,在現代伺服器機房等方向鍵易損壞或不存在的環境中仍非常實用。

行內移動 (Part 2)

  • 移動到行首與行尾
    • Home / End 鍵: 直觀的行首/行尾跳轉方式。
    • 0 / $ 鍵: 在一般模式下,按 0 移動到行首,$ (Shift + 4) 移動到行尾,在筆記型電腦上特別方便。
  • 跳過前置空白移動到程式碼起始處
    • ^ (Power/Caret) 符號: 按下 ^ (Shift + 6) 可將游標移動到該行第一個非空白字元處,適合編輯有縮排的程式碼。

畫面與檔案移動 (Part 3)

  • 畫面中的上、中、下快速跳轉
    • H / M / L: 在一般模式下,按大寫 H (High)、M (Middle)、L (Low) 可快速移動到目前畫面的頂部、中間或底部區域。
  • 文件級的快速跳轉
    • gg: 連續按兩次小寫 g,跳轉至檔案最開頭。
    • G: 按下大寫 G (Shift + g),跳轉至檔案最末尾。
  • 翻頁操作
    • PageUp / PageDown: 標準的翻頁按鍵。
    • Ctrl + B (Back): 等同於 PageUp,向上翻頁。
    • Ctrl + F (Forward): 等同於 PageDown,向下翻頁。

內容刪除 (Part 4 & 5)

  • 字元刪除
    • x: 刪除游標當前字元 (同 Delete)。
    • X (大寫): 刪除游標前一個字元 (同 Backspace)。
    • 數字組合: 可在指令前加數字重複執行,如 3x 表示刪除 3 個字元。
  • 進階刪除指令
    • dw (delete word): 刪除一個單詞。可搭配數字,如 3dw 刪除 3 個單詞。
    • dd (delete line): 刪除一整行,非常常用。可搭配數字,如 3dd 刪除 3 行。
  • 復原與重複操作
    • u (undo): 復原上一步操作。
    • Ctrl + R (redo): 重做(取消復原)上一步操作。
    • . (repeat): 重複上一次執行的指令。

複製與貼上操作

  • 複製指令 (Yank)
    • yl: 複製單一字元。
    • yw: 複製一個字詞 (word)。
    • yy: 複製游標所在的整行。
    • 數字組合: 以上指令皆可搭配數字前綴進行多次複製,如 5yl (5個字元)、2yw (2個字詞)、10yy (10行)。
  • 貼上指令 (Paste)
    • p (小寫): 將複製的內容貼在游標位置的「後面」。
    • P (大寫): 將複製的內容貼在游標位置的「前面」。

插入模式 (Insert Mode)

  • 進入插入模式的指令
    • i (insert): 在游標「之前」開始插入。
    • I (Insert): 在該行「最前端」開始插入。
    • a (append): 在游標「之後」開始插入。
    • A (Append): 在該行「最末端」開始插入。
    • o (open line): 在游標所在行的「下方」新增一空行並開始插入。
    • O (Open line): 在游標所在行的「上方」新增一空行並開始插入。
  • 退出插入模式: 按 ESC 鍵回到一般模式。

取代模式 (Replace Mode)

  • 取代指令 (Replace): 與插入模式不同,此模式會覆蓋原有字元。
    • r (replace): 取代游標所在的「單一」字元,執行後立即返回一般模式。
    • R (Replace): 進入「連續」取代模式,可連續輸入文字覆蓋原有內容,直到按 ESC 退出。

搜尋功能

  • 執行搜尋: 在一般模式下,輸入 / 進入搜尋狀態,接著輸入關鍵字後按 Enter。
  • 在搜尋結果中導航
    • n (next): 跳至下一個匹配的結果。
    • N (Next): 跳至上一個匹配的結果。

命令模式 (Command Mode)

  • 進入與操作: 在一般模式下按冒號 : 進入命令模式,可在畫面左下角輸入指令。
  • 檔案操作
    • :e 檔名: 在 Vim 內部編輯另一個檔案。
    • :r 檔名: 將指定檔案的內容讀取並插入到目前游標下方。
  • 存檔與離開
    • :w: 存檔。
    • :w 檔名: 另存新檔。
    • :w!: 強制存檔。
    • :q: 離開 (若有未存檔變更會失敗)。
    • :q!: 強制離開不存檔。
    • :wq 或 :x: 存檔並離開。
    • :wq!: 強制存檔並離開。
  • 環境設定 (:set)
    • 行號: :set nu (顯示), :set nonu (取消)。
    • Tab 寬度: :set ts=4 (設定 Tab 為 4 個空格寬)。
    • 搜尋高亮: :set hls (開啟), :set nohlsearch (關閉)。
    • 游標行標示: :set cursorline (開啟底線標示)。

Vim 個人化永久設定 (.vimrc 檔案)

  • 目的: 為了讓 set 指令等個人化設定永久生效,避免每次開啟 vim 都要重新設定。
  • 位置與原理: 在個人家目錄 (~/) 下建立一個名為 .vimrc 的隱藏檔案。vim 每次啟動時都會自動讀取並執行此檔案中的指令。
  • 建立與編輯: 使用 vim ~/.vimrc 建立檔案,並將常用指令(如 set number, set tabstop=4)逐行寫入後儲存即可。

2026-0330-05.png

檔案比較與差異分析(diff)

  • 對比兩檔案的基本概念與結果期望
    • 目標情境:懷疑伺服器主態檔(主設定檔)被更動時,不逐行用vi,而以指令比較兩份檔案(通常左為伺服器現況檔,右為備份或隨身碟副本)。
    • 期望結果:若兩檔完全一致,按Enter後終端不輸出;若有輸出表示存在差異。
    • 常見差異類型三種:A(增加,右相對左多內容或視角為其中一側「多」)、D(刪除,少了內容)、C(變更,兩邊皆有但內容不同,如大小寫不同)。
  • 讀取diff標記的範例與解讀
    • DOC1.A vs DOC1.B:示範「1c1」代表左1行 vs 右1行為change;左側小寫a、右側大寫A;中間分隔符僅為區隔左右並非內容。
    • 差異定位語法:「4d3」表示左第4行相對右第3行為刪除(左邊多、右邊無)、「3,5d2」表示左第3至5行相對右第2行為刪除;「6a4,6」表示左第6行相對右第4至6行為增加(右邊較多空白GH)。
  • 大型文件比較的挑戰(DOC3.A vs DOC3.B)
    • 大量差異輸出範例:「15,16d14」表示左第15到16行相對右第14行删減(右邊缺少這些段落);「14c14」表示兩邊第14行變更,可能只差幾字。
    • 觀察:整篇文章的diff輸出不易直覺閱讀,易造成困擾;若差異太大建議以備份覆蓋;多數情況僅有一兩行差異。
  • diff輸出模式與稀有用法
    • diff -c(上下文比較):列出雙方時間戳與區塊,使用「!」(不一致)、「-」(少)、「+」(多),可見左1-5行、右1-4行的差異呈現。
    • diff -u(統一格式):將兩檔合併標記左(-)與右(+)差異,資訊密集、閱讀較複雜;現場快速判讀較少使用。
  • 多檔比較
    • diff3:可同時比較三版本(如程式V1/V2/V3)。實務上程式開發常用Git等工具處理三方合併;本課不延伸示範。
  • 實務建議與流程
    • 對象與場景:現場排查伺服器問題(如Start Fail),優先檢查主態檔是否被改;以左為伺服器現況檔、右為備份檔比對。
    • 步驟:無差異則換下一檔;有差異則定位行號與內容,辨識是否非預期改動。差異小則手動修正;差異大則考慮以備份覆蓋。

視覺化差異工具(vimdiff)

  • 核心概念與優勢
    • 前提:系統裝有Vim;執行「vimdiff」以顏色呈現差異,較diff易讀,尤其對整篇文件(DOC3)非常實用。
    • 顏色意義:紅色代表變更(不一致),藍色代表多出的內容(另一側相對少),綠色代表少掉的內容(另一側相對多)。顏色可調整,示範為紅/藍/綠配置。
  • 操作示範與修正流程
    • 開啟方式:vimdiff 左側DOC1.A 右側DOC1.B;畫面分左右窗格,高亮差異。例:左1行 vs 右1行紅色突顯不同,將小a改為A即可消除差異。
    • 增加/刪除處理:左側顯示D為少、右側為多;在相應一側新增或刪除以同步。
    • 視窗切換:Ctrl+w 後按方向鍵切換窗格。
    • 離開::q 關閉當前窗格(需關兩次關全部);:qa 一次關閉全部。
    • 存檔::w 寫入保存;修正左側(伺服器現況)使與右側備份一致後存檔。
  • 應用於大型主態檔
    • 實例:快速定位差異行,如左第8行 vs 右第8行「x86 x32bit」,或第16行「x86 x17」等多餘/缺漏部分被清楚標示,便於迅速更正。
  • 現場可用性
    • 若無vimdiff,則退回使用diff;vimdiff更直觀但不保證所有環境預裝。

字元轉換與跨平台換行(TR、dos2unix/unix2dos)

  • TR指令用途
    • 將文字檔內字元或控制字元替換,例如將Tab轉空白,或處理不可見控制字符(換行符)。
    • 可處理一般字母(A、B、C、D)亦可替換控制字元(換行)。
  • 換行符差異與問題背景
    • Windows使用CRLF(\r\n),Linux/UNIX與現今Mac使用LF(\n)。
  • 跨平台編輯時:Linux檔在Windows開啟可能整檔成一行,因Windows期待CRLF而僅見LF;反向亦可能出現相容性問題。
  • 轉換工具與流程
    • 使用TR或專用工具:DOS→UNIX(dos2unix),UNIX→DOS(unix2dos);將檔案換行符轉成目標平台格式。
    • 歷史差異:早年Mac換行不同,現今與UNIX一致(LF),問題較少。
    • 實務辨識:若打開檔案變成一行,先確認來源/目的平台換行符,再用對應工具轉換。

網路管理套件

網路連通性測試(ping)

  • Linux ping的常用參數與行為
    • 連續運行:預設不自動停止,需Ctrl+C中止。
    • --help:查看選項;Linux選項較Windows豐富且語法不同。
    • -c 次數:指定發送次數(Windows對應 -n)。例:ping -c 4 8.8.8.8 模擬Windows行為。
    • -i 間隔:每次之間延遲,預設約1秒;可設為0.01進行高頻ping,短時間內發出數百至數千封包(機房高頻測試)。
    • -W 等待時間(秒):等待回覆的超時,預設5秒;可延長至10秒觀察延遲回覆。例:ping -c 1 -W 10 8.8.8.8。
  • 實務應用與建議
    • 常用模式:多半只需指定次數與目標IP;若回覆延遲或不穩定,再調整 -i 或 -W。
    • 排查順序:先測IP通(ping);若IP不通,DNS測試無意義(出不了網)。

5. 路由探測工具(tracepath與traceroute)

  • 工具差異與協定
    • Windows工具:tracert。Linux近年推tracepath;講者偏好traceroute,因支援多協定(ICMP/TCP/UDP),更通用。
    • tracepath行為:有時測不到(no reply),非未發送,而是對端不回;若抓封包可見實際封包行為差異。從路由器角度常用ICMP測路由。
    • traceroute優勢:支援ICMP/TCP/UDP,遇對端不回某協定時可切換,較不易測不到。
  • 實務觀察
    • 範例:至8.8.8.8途中節點不回應時,tracepath顯示 no reply;改用traceroute不同協定模式,可能獲得路徑。
    • 重點:測不到常因對方不回應特定封包類型,而非本端未發送。

DNS查詢與驗證(nslookup)

  • 正解與反解
    • 正解:查詢域名對應IP(如www.google.com的主機位址)。
    • 反解:查詢IP對應主機名(PTR)。
  • 使用情境與流程
    • 若ping 8.8.8.8可達但瀏覽www.google.com不通,懷疑DNS設定錯誤時,用nslookup確認解析是否正常。
    • 工具一致性:Windows與Linux的nslookup用法基本一致。
    • 範例輸出:顯示DNS伺服器為Google,說明正反解可用以驗證解析鏈。
  • 排查優先順序
    • 先測IP連通(ping),成功後再測DNS(nslookup);若IP不通,DNS測試無法進行(封路出不去)。

綜合實務:伺服器主態檔異動與網路設定

  • 常見情境
    • 伺服器啟動失敗(Start/Start Fail),先懷疑主態檔被改動。
    • 作業後習慣:將主態檔備份到客戶隨身碟或硬碟,日後可快速比對。
  • 實作目標
    • 今日最終目標:學會以文字編輯器將自身機器網路設定為固定IP;修改主態檔前先以ping確認網路連通。
  • 工具整合
    • 檔案層:diff/vimdiff檢視差異,修正主態檔與備份一致。
    • 字元層:必要時以TR或dos2unix/unix2dos處理跨平台換行問題。
    • 網路層:ping測IP、tracepath/traceroute測路由、nslookup測DNS解析。

800