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 stty 命令完全指南:終端機模式控制、輸入輸出處理與腳本應用

編輯:關於 Linux

stty(Set TTY)用於變更與列印終端機連線參數,控制輸入輸出處理模式、特殊字元對應、流量控制等。掌握 stty 能解決終端機顯示異常、自動化腳本互動、安全輸入密碼等問題。

stty 終端機設定示意圖

常用參數速查

參數功能
-a顯示所有目前設定
-g以十六進位輸出目前設定(可供還原)
icanon / -icanon標準/非標準輸入模式(是否需 Enter 送出)
echo / -echo開啟/關閉回顯
iuclc / -iuclc輸入大寫轉小寫 / 還原
olcuc / -olcuc輸出小寫轉大寫 / 還原
size顯示終端機行數、列數
eof <字串>重新定義 EOF 字元(預設 Ctrl+D)
igncr / -igncr忽略/不忽略 CR (\\r)
raw / -raw原始模式(關閉所有處理)

實用操作範例

1. 禁止輸入大寫字母

stty iuclc   # 開啟:輸入大寫自動轉小寫
stty -iuclc  # 還原

2. 禁止輸出小寫字母(輸出轉大寫)

stty olcuc   # 開啟
stty -olcuc  # 還原

3. 查看終端機尺寸

stty size
# 輸出:24 80  (rows cols)

4. 修改 EOF 字元(預設 Ctrl+D)

stty eof "^^"   # 設為 Ctrl+^
stty eof "^d"   # 還原 Ctrl+D

5. 關閉/開啟回顯(密碼輸入場景)

stty -echo  # 關閉回顯
stty echo   # 開啟回顯

# 測試:輸入不顯示,按 Enter 後恢復顯示
stty -echo; read; stty echo; read

6. 忽略換行符 CR

stty igncr   # 忽略 \\r
stty -igncr  # 還原

7. 定時讀取輸入(10 秒逾時)

# 方法一:stty 暫時修改
timeout_read() {
  local timeout=$1
  local old=$(stty -g)
  stty -icanon min 0 time 100  # 10 秒 = 100 * 0.1s
  eval read varname
  stty "$old"
}

# 方法二:bash 內建 read -t(推薦,更簡單)
read -t 10 varname

腳本應用最佳實務

  • 修改終端機屬性前,先用 old=$(stty -g) 保存;結束時用 stty "$old" 還原,避免影響後續操作。
  • 搭配 trap 'stty "$old"' EXIT 確保異常退出也能還原。
  • 非標準模式 (-icanon) 下 read 行為不同,需注意 min/time 參數意義。

常見問題排查

現象可能原因解決
輸入不顯示stty -echo 未還原執行 stty echo 或重新開啟終端機
按 Enter 無反應stty -icanon 模式執行 stty icanon
大小寫顛倒iuclc/olcuc 誤開啟執行 stty -iuclc -olcuc

stty 是終端機行為的「總開關」,熟練運用能處理特殊互動需求、安全輸入、腳本自動化測試等場景。建議將常用組合封裝為函數庫,提升開發效率。

Copyright © Windows教程網 All Rights Reserved