Linux 终端掌控核心:stty 命令详解与实战配置指南一、命令简介
2026/7/30 23:55:29 网站建设 项目流程

一、命令简介

stty 命令用于显示和修改终端(TTY)设备的设置。它允许用户查看和调整与终端输入 / 输出行为相关的各种参数,例如字符回显、行控制、流控制以及特殊控制字符(如 Ctrl+C、Ctrl+D 等)的映射。该命令对于脚本编写、终端故障排查以及自定义命令行交互体验非常有用。

二、语法格式

bash

运行

stty [选项] [设置...]

基本形式:

  • stty:显示当前终端的关键设置。
  • stty -a 或 stty --all:以人类可读的格式显示所有当前设置。
  • stty -g 或 stty --save:以 stty 可解析的格式(十六进制字符串)输出当前所有设置,便于保存和恢复。
  • stty [设置]:应用指定的终端设置。
  • stty [选项] [设置]:结合选项和设置使用。

三、常用选项及说明

表格

选项说明
-a, --all以易于阅读的格式打印终端的所有当前设置。
-g, --save以机器可读的格式(一个十六进制字符串)打印当前所有设置。此输出可直接用于 stty 命令以恢复该配置。
-F DEVICE, --file=DEVICE指定要操作的终端设备文件,而不是当前的标准输入。例如:stty -F /dev/ttyS0 speed。
--help显示帮助信息并退出。
--version显示版本信息并退出。

常用设置参数说明

stty 的设置参数通常成对出现,形如 功能 和 - 功能,分别表示启用和禁用该功能。以下是一些常见设置:

3.1 特殊控制字符

表格

设置说明
intr ^C将中断信号(SIGINT)的发送字符设置为 Ctrl+C。设置时,^C 需按字面输入(通常按 Ctrl+V,再按 Ctrl+C)。
eof ^D将文件结束符(EOF)设置为 Ctrl+D。
erase ^? 或 erase ^H设置退格删除字符(通常对应 Backspace 或 Delete 键)。
kill ^U设置行删除字符(删除整行输入)。
werase ^W设置单词删除字符。
3.2 输入设置

表格

设置说明
ignbrk / -ignbrk忽略 / 不忽略输入中的 BREAK 条件。
brkint / -brkintBREAK 产生 / 不产生中断信号。
igncr / -igncr忽略 / 不忽略输入中的回车符(CR)。
icrnl / -icrnl将输入中的回车符(CR)映射 / 不映射为换行符(NL)。
ixon / -ixon启用 / 禁用软件流控制(XON/XOFF,Ctrl+S/Ctrl+Q)。
ixoff / -ixoff启用 / 禁用发送 START/STOP 字符以防止输入缓冲区溢出。
3.3 输出与本地设置

表格

设置说明
echo / -echo启用 / 禁用回显输入字符(常用于输入密码时关闭回显)。
icanon / -icanon启用 / 禁用规范模式(行缓冲)。禁用后,输入字符将立即可用,无需等待换行符。
isig / -isig启用 / 禁用对特殊控制字符(intr, quit, susp)的检查。禁用后,Ctrl+C 等将无法发送信号。
onlcr / -onlcr启用 / 禁用在输出时将换行符(NL)映射为回车 - 换行符(CR-NL)。
3.4 硬件 / 组合设置

表格

设置说明
cs8 / cs7设置字符大小为 8 位或 7 位。
speed显示当前波特率。使用 speed N 设置波特率(如 speed 115200)。
rows N将终端行数(高度)设置为 N。
cols N 或 columns N将终端列数(宽度)设置为 N。
size打印终端的行数和列数。

四、示例用法

查看所有当前终端设置

bash

运行

stty -a

保存当前终端设置并在之后恢复

bash

运行

# 保存设置到一个变量或文件 SAVED_SETTINGS=$(stty -g) # ... 在此处进行其他操作或修改设置 # 恢复设置 stty $SAVED_SETTINGS

禁用回显(用于密码输入脚本)

bash

运行

#!/bin/bash echo -n "Password: " stty -echo # 关闭回显 read PASSWORD stty echo # 重新打开回显 echo echo "Password read."

更改中断字符和 EOF 字符

bash

运行

# 将中断信号字符从 Ctrl+C 改为 Ctrl+X stty intr ^X # 将 EOF 字符从 Ctrl+D 改为 Ctrl+A stty eof ^A

修复退格键(Backspace)或 Delete 键行为异常

bash

运行

# 尝试以下设置之一,具体取决于您的终端 stty erase ^H # 通常对应 Backspace stty erase ^? # 通常对应 Delete

设置串口设备参数

bash

运行

# 配置 /dev/ttyS0 为 115200 波特率,8位数据,无校验,1位停止位 stty -F /dev/ttyS0 115200 cs8 -parenb -cstopb

五、注意事项

谨慎修改: 错误地使用 stty(如 stty -echo -icanon)可能导致终端无响应或输入异常。在修改关键设置(如 isig, icanon, echo)前,建议先用 stty -g 保存当前配置。

恢复默认: 如果终端行为变得异常,可以尝试关闭终端并重新打开,或者通过另一个终端会话(如另一个终端标签)使用 stty sane 命令来恢复一组合理的默认设置。

作用范围: stty 的设置通常只影响当前终端会话或脚本执行的上下文。

字符输入: 在设置控制字符(如 intr ^C)时,^C 等不是直接键入的字符,而是需要通过键序列输入(通常先按 Ctrl+V,再按目标组合键)。在脚本中,可以使用类似 stty intr ^c 的转义形式。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询