clear 指令僅將終端機捲軸內容向上捲動,實際緩衝區內容仍保留,Shift+PageUp 仍可往上翻閱。若需真正重置終端機狀態、清除所有緩衝區、恢復初始化狀態,需使用 printf "\033c" (RIS 重置轉義序列) 或 reset 指令。本文深度解析兩者原理、差異與適用場景。
# 測試
echo "line 1"; echo "line 2"; echo "line 3"
clear
# 按 Shift+PageUp 仍可看到 line 1-3
# 捲軸緩衝區未清除,歷史指令 (history) 仍在
clear 發送 CSI 2 J (Erase Data) + CSI 1;1 H (Cursor Home),不影響捲軸緩衝區。
printf "\033c"
# 或
printf "\x1bc"
# 或
echo -e "\033c"
\033 = \x1B = ESC (ASCII 27)ESC c = RIS (Reset to Initial State),VT100/VT220/ANSI 標準轉義序列printf 為 Bash/Zsh 內建)clearreset
RIS、RSM、DECSTR 等)history)/usr/bin/reset,約 0.1-0.5 秒)stty 設定錯誤導致的輸入異常 (如輸入不顯示、Enter 換行異常)| 特性 | printf "\033c" | reset | clear |
|---|---|---|---|
| 清除螢幕 | 是 | 是 | 是 |
| 清除捲軸緩衝區 | 是 | 是 | 否 |
| 重置終端機屬性 | 是 | 是 | 否 |
| 保留 Shell 歷史 | 是 | 是 | 是 |
| 執行速度 | 極快 (內建) | 較慢 (外部程式) | 極快 |
| 修復輸入異常 | 部分 | 完整 (含 stty sane) | 否 |
| 適用場景 | 腳本中、別名、快速重置 | 終端機嚴重異常、序列埠、Cygwin | 一般清除畫面 |
# ~/.bashrc 或 ~/.zshrc
alias cls='printf "\033c"' # 徹底清除 (Windows 風格)
alias c='clear' # 快速清除 (保留捲軸)
alias r='reset' # 完整重置 (修復異常)
若終端機出現「輸入字元不顯示、Enter 不換行、Ctrl+C 無效」:
# 盲打輸入 (螢幕可能無回應)
reset
# 或
stty sane
# stty sane 重置所有終端機屬性為合理預設值
clear (或 Ctrl+L),保留捲軸歷史。printf "\033c" (別名 cls),速度最快、內建指令。reset,完整重置含 stty sane。printf "\033c"。掌握三者差異,即可根據情境選擇最適合的指令,避免「以為清除乾淨實則歷史殘留」或「終端機異常不知如何修復」的困擾。
Ubuntu Mentohust (銳捷/賽爾認證) 完整配置指南:靜態 IP、DHCP 模式與故障排查
Ubuntu 設定 GRUB2 開機密碼保護:防止惡意修改啟動參數
Linux 目錄與檔案建立刪除完全指南:mkdir、touch、rm、rmdir 參數詳解與安全實務
UEFI 模式誤刪 GRUB 開機選單?手動引導進系統後重建 ESP 分區啟動項
Linux 關機與重啟指令全解析:shutdown、halt、reboot、systemctl、init 正確姿勢
Linux sed 指令新增字串實戰:行首、行尾、指定行、模式匹配四大場景全解析