Shell 與終端機是什麼?
什麼是 Shell?
在 Linux 的世界裡,你會不斷聽到「Shell」這個詞。Shell 是一個程式,它接收你用文字輸入的指令,傳遞給作業系統核心(Kernel)執行,然後把結果顯示出來。
用比喻來說:如果 Linux 核心是一間餐廳的廚房,Shell 就是服務生——它接受你的點餐(指令),傳達給廚房,再把菜端回來給你。
你(使用者)
↓ 輸入指令
┌─────────────────┐
│ Shell │ 解讀指令、展開變數、處理管線
└─────────────────┘
↓ 呼叫系統
┌─────────────────┐
│ Linux Kernel │ 實際執行工作(讀寫檔案、管理程序)
└─────────────────┘
↓ 回傳結果
┌─────────────────┐
│ Shell │ 格式化後顯示給你
└─────────────────┘
終端機(Terminal)vs Shell ── 傻傻分不清?
很多人把「終端機」和「Shell」混著說,其實它們是不同的東西:
| 名詞 | 是什麼 | 例子 |
|---|---|---|
終端機Terminal Emulator |
提供文字輸出入介面的視窗程式,負責顯示字元和接收鍵盤輸入 | GNOME Terminal、Konsole、iTerm2、Windows Terminal、PuTTY |
| Shell | 在終端機裡執行的命令解讀器程式,真正解析並執行你的指令 | bash、zsh、fish、sh、ksh |
一個比喻:終端機是電視螢幕,Shell 是電視裡播放的節目。螢幕只負責顯示,真正有內容的是節目。
各種 Shell 的比較
Linux 上有好幾種不同的 Shell,各有特色:
| Shell | 特色 | 適合誰 |
|---|---|---|
| bash Bourne Again Shell |
Linux 最常見的預設 Shell,穩定、相容性最好,幾乎所有 Linux 系統都預設安裝 | 所有人(特別是伺服器管理);本站範例皆以此為準 |
| zsh Z Shell |
功能是 bash 的超集,自動補全強大,Oh My Zsh 有豐富外掛,macOS Catalina 後預設 | 開發者、追求生產力的使用者 |
| fish Friendly Interactive Shell |
語法更直觀、即時語法高亮、自動建議,開箱即用,但與 bash/sh 語法不完全相容 | Linux 新手、桌面環境使用者 |
| sh POSIX Shell |
最基本的 POSIX Shell,功能最精簡,幾乎所有 Unix/Linux 都有 | 撰寫跨平台腳本(#!/bin/sh) |
本站所有範例以 bash 為準(Ubuntu/Debian 預設),學會 bash 的概念後,其他 Shell 都能快速上手。
如何開啟終端機
Ubuntu / Debian 桌面版
- 按 Ctrl + Alt + T(最快的方式)
- 在桌面上按右鍵 → 點選「在終端機中開啟」
- 按 Super(Windows)鍵 → 搜尋「terminal」
- 直接登入文字模式(tty):按 Ctrl+Alt+F2
透過 SSH 遠端連線(最常見的伺服器使用方式)
$ ssh 使用者名稱@伺服器IP位址
使用者名稱@伺服器IP's password:
Welcome to Ubuntu 22.04.3 LTS
使用者名稱@myserver:~$
輸入密碼後(輸入時畫面不顯示),就會進入遠端伺服器的 Shell。
WSL(Windows Subsystem for Linux)
在 Windows 10/11 上,可以安裝 WSL,在 Windows Terminal 中執行真正的 Linux Shell,非常適合在 Windows 上學習 Linux 指令。
解讀命令提示符(Prompt)
進入終端機後,你會看到類似這樣的一行文字等著你輸入,這叫做命令提示符(prompt):
alice@myserver:~$
各個部分的意義:
| 部分 | 說明 |
|---|---|
alice | 目前登入的使用者名稱 |
@ | 「在……上」(at)的意思 |
myserver | 這台電腦的主機名稱(hostname) |
: | 分隔符號 |
~ | 目前所在目錄,~ 代表家目錄(/home/alice) |
$ | 一般使用者的提示符。若顯示 # 代表你是 root(超級管理員) |
看到
# 提示符,代表你正以 root 身份操作。Root 對整個系統有完全控制權,一個錯誤的指令就可能造成無法復原的損害。初學時請在一般使用者($)模式下練習。
常用快捷鍵
這些快捷鍵在 bash 中無處不在,務必熟記:
| 快捷鍵 | 功能 | 重要程度 |
|---|---|---|
| Tab | 自動補全指令名稱或路徑(按兩次顯示所有選項) | ⭐⭐⭐⭐⭐ 最重要 |
| ↑ / ↓ | 瀏覽歷史指令 | ⭐⭐⭐⭐⭐ |
| Ctrl+C | 中斷目前執行的指令(強制停止) | ⭐⭐⭐⭐⭐ |
| Ctrl+L | 清除畫面(等同 clear) | ⭐⭐⭐⭐ |
| Ctrl+A | 游標移到行首 | ⭐⭐⭐ |
| Ctrl+E | 游標移到行尾 | ⭐⭐⭐ |
| Ctrl+D | 登出當前 Shell(輸入結束) | ⭐⭐⭐ |
| Ctrl+Z | 暫停目前的前景工作(放入背景) | ⭐⭐ |
| Ctrl+R | 搜尋歷史指令 | ⭐⭐⭐ |
用 Tab 補全是最重要的習慣
Tab 補全是 Linux 效率的核心。舉例:輸入 ls /etc/ngi 後按 Tab,Shell 會自動補全為 ls /etc/nginx/,省去大量打字時間,也避免拼字錯誤。