Session 3 ⏱ 90 min 入門無需程式背景

CLI 基礎 × 魯迅語料 × Ollama 本地 AI

學會在指令列操作文字語料、批次統計文本,並在自己的電腦上跑大型語言模型,完全不需要上傳資料到雲端。

檔案格式
›
Web 基礎
›
CLI + Ollama(本週)
›
Colab / API
›
部署
0 – 10 min
概念導入
CLI 是什麼?為何需要?
10 – 45 min
CLI 實作
魯迅文本批次處理
45 – 75 min
Ollama
安裝 → df -h → pull Gemma
75 – 90 min
收斂討論
Q&A + 下週預告

Part 1 · 0 – 10 min

為什麼要學指令列?

🖱

GUI(圖形介面)

點按按鈕。每次只能做一件事,難以重複執行。

⌨️

CLI(指令列)

輸入文字指令。一行命令可處理一千個檔案,可寫成腳本自動重跑。

📜

人文學科的優勢

語言直覺強——指令就像英文縮寫:ls = list,cd = change directory。

🤖

AI 工具的入口

Ollama、Git、Python 套件管理都需要 CLI。學好這步,後面全打通。

類比:CLI 就像直接跟廚房大廚說「把這一百顆洋蔥全部切末」;GUI 是一次點一顆、用滑鼠按「切」。
Part 1 · 環境差異

Windows vs macOS — 對照一覽

Windows PowerShell / Git Bash

開啟方式Win + R → powershell
路徑分隔\(反斜線)
列出檔案dir 或 ls
切換目錄cd 路徑
清除畫面cls
文字搜尋Select-String
磁碟空間Get-PSDrive C

macOS Terminal / zsh

開啟方式Cmd+Space → Terminal
路徑分隔/(正斜線)
列出檔案ls -lh
切換目錄cd 路徑
清除畫面clear
文字搜尋grep
磁碟空間df -h
Windows 學生建議:安裝 Git for Windows(含 Git Bash),指令與 macOS 幾乎一致,課堂統一用 bash 語法示範。
Part 2 · 10 – 20 min

必學 10 條指令

bash / zsh
# 1. 知道自己在哪 $ pwd /Users/student/Documents # 2. 列出目前目錄的檔案(h = human-readable 大小) $ ls -lh # 3. 切換目錄 $ cd Downloads # 4. 回上一層 $ cd .. # 5. 建立新目錄 $ mkdir luxun_project # 6. 印出文字檔前 10 行(快速預覽) $ head -n 10 story.txt # 7. 搜尋含有特定字詞的行(人文必學!) $ grep "阿Q" ahq.txt # 8. 統計字數 $ wc -w ahq.txt 12847 ahq.txt # 9. 複製檔案 $ cp ahq.txt backup/ahq_backup.txt # 10. 管線:搜尋並計算出現次數 ← 最重要! $ grep -o "阿Q" ahq.txt | wc -l 178
關鍵概念 — 管線(pipe)|:把左邊指令的「輸出」當作右邊指令的「輸入」。就像語言學的組合性原則(Principle of Compositionality)——小工具組合出大能力。

Part 3 · 20 – 45 min

實作:批次處理魯迅小說集

情境:你從 Project Gutenberg 下載魯迅《呐喊》,想統計「阿Q」「祥林嫂」「孔乙己」各自出現幾次,並比較各篇章長度。用 Word 要手動重複十幾次;用 CLI,三行指令搞定。

步驟一:取得語料

bash
# 建立專案資料夾 $ mkdir luxun && cd luxun # 從 Gutenberg 下載(-O 指定存檔名) $ curl -O "https://www.gutenberg.org/cache/epub/25462/pg25462.txt" % Total % Received ... 100 156k # 重新命名為好記的名字 $ mv pg25462.txt nahan.txt # 確認成功(看前 5 行) $ head -n 5 nahan.txt The Project Gutenberg eBook of ...

步驟二:基本探索

bash
# 全文總字數 $ wc -w nahan.txt 45823 nahan.txt # 搜尋含「阿Q」的行,並顯示行號 $ grep -n "阿Q" nahan.txt | head -5 234: 阿Q本來也是正人... 267: 阿Q的大名,我... # 計算「阿Q」出現總次數 $ grep -o "阿Q" nahan.txt | wc -l 178

步驟三:Python 腳本批次統計(CLI 呼叫 Python)

這裡引入 Python!複雜任務(多關鍵詞統計、輸出表格)用 Python 腳本完成,但從 CLI 呼叫——這就是 CLI 與程式語言的協作模式。
bash — 建立並執行腳本
# 建立 Python 腳本 $ cat > count_chars.py << 'EOF' import re, sys text = open(sys.argv[1]).read() chars = ["阿Q", "祥林嫂", "孔乙己", "閏土", "狂人"] for c in chars: n = len(re.findall(c, text)) bar = "█" * (n // 5) print(f"{c:<6} {n:4}次 {bar}") EOF # 執行腳本 $ python3 count_chars.py nahan.txt 阿Q 178次 ████████████████████████████████████ 祥林嫂 47次 █████████ 孔乙己 63次 ████████████ 閏土 29次 █████ 狂人 18次 ███
管線思維的精髓:CLI 負責「找到檔案、呼叫工具」,Python 負責「複雜邏輯」,兩者分工合作。這也是 Unix 哲學——每個工具只做好一件事。

✏️ 課堂練習(10 min,兩人一組)

  1. 下載 nahan.txt 到自己的電腦
  2. 用 grep 找出含有「革命」的所有行,存到 revolution.txt
    提示:grep "革命" nahan.txt > revolution.txt
  3. 用 wc -l revolution.txt 數一數共幾行包含「革命」
  4. (進階)修改 count_chars.py,改成統計你感興趣的詞彙

Part 4 · 45 – 75 min

Ollama — 在自己的電腦跑大型語言模型

☁️

雲端 AI(ChatGPT 等)

資料傳送到對方伺服器。方便,但有隱私疑慮,需要網路。

💻

本地 AI(Ollama)

模型在自己電腦執行。資料不離機,可離線,適合敏感語料。

🔒

人文研究的意義

訪談逐字稿、未出版手稿、田野筆記——不適合上傳外部服務。

安裝流程

df -h 解讀 — 確認磁碟空間

macOS / Linux bash
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/disk3s1s1 460G 312G 148G 68% / devfs 205K 205K 0B 100% /dev
磁碟空間視覺化(範例:460 GB 硬碟)
系統 + 應用程式
312 GB
Gemma3:4b 模型
~2.5 GB
剩餘可用空間
148 GB ✓

重點看 Avail 那欄——至少需要比模型大 2 倍的空間(含解壓縮緩衝)。

Windows 版:PowerShell 用 Get-PSDrive C,或直接開「本機」查看 C 槽。至少需要 15 GB 空餘空間再 pull。

選擇模型

qwen2.5:7b
~4.7 GB
需要 ≥ 12 GB RAM
中文能力優異,適合中文語料分析。
llama3.2:3b
~2 GB
需要 ≥ 8 GB RAM
備用選項,英文能力強。

Pull → 對話 → 分析文本

bash
# 確認 ollama 已安裝 $ ollama --version ollama version is 0.5.x # 下載 Gemma3 4B(約 5–15 分鐘,依網速) $ ollama pull gemma3:4b pulling manifest ... pulling 96c415656d37... ████████████████████ 100% 2.5 GB success # 查看已下載的模型 $ ollama list NAME ID SIZE MODIFIED gemma3:4b a2af6cc3eb7f 2.5 GB 2 minutes ago
bash — 互動模式(輸入 /bye 離開)
$ ollama run gemma3:4b >>> 你好,請用繁體中文介紹自己 你好!我是 Gemma,由 Google DeepMind 開發的大型語言模型... >>> 魯迅「阿Q正傳」主要批判什麼社會現象? 《阿Q正傳》透過阿Q這個角色,批判了中國社會中的「精神勝利法」—— 即面對失敗或屈辱時以自我欺騙代替正面應對的心理機制... >>> /bye
bash — 管線應用:把文本餵給本地 AI
# 用 echo 傳入提示 + 文字片段 $ echo "請分析以下文字的諷刺手法:$(head -n 30 nahan.txt)" | ollama run gemma3:4b # 更結構化:用 prompt 檔 + 管線 $ cat > prompt.txt << 'EOF' 請列出以下文字中所有人名,並說明其社會身份: EOF $ cat prompt.txt nahan.txt | head -n 60 | ollama run gemma3:4b 根據文本,以下人名及其社會身份如下: 1. 阿Q — 底層農民,無固定職業,住在土穀祠... 2. 趙太爺 — 地方士紳,擁有田產,代表舊地主階層...
串接預告:接著學 Python + API,可以把「把文本餵給 AI」自動化,用程式批次處理幾十篇文章,而不是一篇一篇手動輸入。

Part 5 · 75 – 90 min

本週學到了什麼 × 下週預告

✓

CLI 基本操作

pwd / ls / cd / grep / wc / |
Windows vs macOS 差異

✓

批次文本處理

從 Gutenberg 下載語料,CLI + Python 腳本統計角色頻率

✓

本地 AI(Ollama)

安裝、df -h 確認空間、pull 模型、把文本 pipe 給 AI

→

下週:Colab + API

把今天的「手動餵文本」自動化,用 Python 批次呼叫 AI

📚 本週作業

  1. 用 grep 找出你感興趣的關鍵詞,比較不同詞彙在文本中的分佈規律,或其他任何文本分析