Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 終端機徹底清除畫面指令:printf "\033c" 與 reset 深度解析

編輯:關於 Linux

clear 指令僅將終端機捲軸內容向上捲動,實際緩衝區內容仍保留,Shift+PageUp 仍可往上翻閱。若需真正重置終端機狀態、清除所有緩衝區、恢復初始化狀態,需使用 printf "\033c" (RIS 重置轉義序列) 或 reset 指令。本文深度解析兩者原理、差異與適用場景。

為何 clear 不夠用?

# 測試
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" (RIS - Reset to Initial State)

指令與原理

printf "\033c"
# 或
printf "\x1bc"
# 或
echo -e "\033c"
  • \033 = \x1B = ESC (ASCII 27)
  • ESC c = RIS (Reset to Initial State),VT100/VT220/ANSI 標準轉義序列
  • 效果:清除螢幕、清除捲軸緩衝區、重置終端機屬性 (字元集、捲動區域、游標模式、顏色)、游標歸位
  • 所有現代終端機模擬器 (GNOME Terminal, Konsole, xterm, Terminator, Alacritty, Kitty, Windows Terminal, iTerm2) 均支援 VT 相容模式

優點

  • 極快 (單一轉義序列,無進程產生)
  • 內建於 Shell (printf 為 Bash/Zsh 內建)
  • 徹底重置,解決「亂碼、顏色錯誤、游標消失、捲動區域錯誤」等終端機狀態異常

缺點

  • 極少數非 VT 相容終端機 (某些嵌入式序列主控台、古老終端機) 不支援
  • 會清除捲軸歷史,若需保留請改用 clear

方案二:reset 指令

reset
  • 發送完整初始化序列 (含 RIS、RSM、DECSTR 等)
  • 同樣清除螢幕、捲軸緩衝區、重置終端機屬性
  • 保留 Shell 歷史指令 (Up/Down 仍可翻閱 history)
  • 執行較慢 (需啟動外部程式 /usr/bin/reset,約 0.1-0.5 秒)
  • 相容性極佳,甚至可修復 stty 設定錯誤導致的輸入異常 (如輸入不顯示、Enter 換行異常)

比較表

特性printf "\033c"resetclear
清除螢幕是是是
清除捲軸緩衝區是是否
重置終端機屬性是是否
保留 Shell 歷史是是是
執行速度極快 (內建)較慢 (外部程式)極快
修復輸入異常部分完整 (含 stty sane)否
適用場景腳本中、別名、快速重置終端機嚴重異常、序列埠、Cygwin一般清除畫面

實用別名設定

# ~/.bashrc 或 ~/.zshrc
alias cls='printf "\033c"'      # 徹底清除 (Windows 風格)
alias c='clear'                 # 快速清除 (保留捲軸)
alias r='reset'                 # 完整重置 (修復異常)

進階:stty sane 修復輸入異常

若終端機出現「輸入字元不顯示、Enter 不換行、Ctrl+C 無效」:

# 盲打輸入 (螢幕可能無回應)
reset
# 或
stty sane
# stty sane 重置所有終端機屬性為合理預設值

總結

  • 日常清除畫面:clear (或 Ctrl+L),保留捲軸歷史。
  • 徹底清除畫面與捲軸:printf "\033c" (別名 cls),速度最快、內建指令。
  • 終端機狀態異常 (亂碼、輸入失效、游標錯誤):reset,完整重置含 stty sane。
  • 腳本中需確保終端機乾淨狀態:使用 printf "\033c"。

掌握三者差異,即可根據情境選擇最適合的指令,避免「以為清除乾淨實則歷史殘留」或「終端機異常不知如何修復」的困擾。

Copyright © Windows教程網 All Rights Reserved