在Linux系统中,stty
命令是一个非常重要的工具,用于显示和修改终端行设置。这个命令允许用户对终端的各种控制选项进行配置,比如设置波特率、字符大小、操控回显以及特殊字符功能等。
Linux stty命令介绍
stty
(set terminal type)命令用来显示和更改终端行的设置。使用此命令,用户可以配置键盘输入的处理方式,控制输出显示的行为,或者设定特殊字符的功能。它对于串行通信和终端界面定制非常有用。
Linux stty命令适用的Linux版本
stty
命令几乎在所有的Linux发行版中都是可用的,因为它是 coreutils
包的一部分。在极少数情况下,如果系统中没有安装 coreutils
,可以使用以下命令进行安装:
# 基于apt的发行版
sudo apt-get update && sudo apt-get install coreutils
# 基于yum的发行版
sudo yum update && sudo yum install coreutils
# 基于dnf的发行版
sudo dnf update && sudo dnf install coreutils
# 基于apk的发行版
sudo apk add --update coreutils
# 基于pacman的发行版
sudo pacman -Syu && sudo pacman -S coreutils
# 基于zypper的发行版
sudo zypper ref && sudo zypper in coreutils
# 基于pkg的FreeBSD发行版
sudo pkg update && sudo pkg install coreutils
# 基于Homebrew的OS X/macOS发行版
brew update && brew install coreutils
Linux stty命令的基本语法
语法格式如下:
stty [选项]... [设置]...
Linux stty命令的常用选项或参数说明
选项 | 描述 |
---|---|
-a , --all | 显示所有当前设置的详细信息 |
-g | 以一种可被重新输入的格式显示当前设置 |
speed | 显示或设置波特率 |
echo | 开启输入回显 |
-echo | 关闭输入回显 |
cooked | 设置终端为正常模式 |
raw | 设置终端为原始模式 |
ispeed | 设置输入波特率 |
ospeed | 设置输出波特率 |
icanon | 开启规范模式 |
-icanon | 关闭规范模式 |
Linux stty命令实例详解
实例1:显示当前终端所有设置
[linux@bashcommandnotfound.cn ~]$ stty -a
此命令会列出当前终端的所有配置。
实例2:查看当前速度设置
[linux@bashcommandnotfound.cn ~]$ stty speed
执行后显示当前终端的波特率。
实例3:设置终端波特率
[linux@bashcommandnotfound.cn ~]$ stty ispeed 9600 ospeed 9600
此命令会将输入和输出的波特率都设置为9600。
实例4:禁用回显
[linux@bashcommandnotfound.cn ~]$ stty -echo
输入字符时不会在终端显示,常用于密码输入。
实例5:启用回显
[linux@bashcommandnotfound.cn ~]$ stty echo
恢复输入字符的显示。
实例6:切换到原始模式
[linux@bashcommandnotfound.cn ~]$ stty raw
这将终端设置为原始模式,输入的字符会直接传递给程序,而不进行任何处理。
实例7:切换到正常模式
[linux@bashcommandnotfound.cn ~]$ stty cooked
这将终端设置为正常模式,输入会被行缓冲处理。
实例8:更改行结束符
在某些情况下,你可能需要更改行结束符(通常是回车键)。以下示例将行结束符从回车(CR)更改为换行符(LF):
[linux@bashcommandnotfound.cn ~]$ stty icrnl
这会把输入中的 CR 字符映射为 NL(换行)字符。
实例9:禁用特定的控制字符
如果你想禁用特定的控制字符,比如 Ctrl+C(通常用于中断程序),你可以这样做:
[linux@bashcommandnotfound.cn ~]$ stty intr ''
这样设置后,Ctrl+C 不再作为中断信号。
实例10:重新启用特定的控制字符
如果你想恢复 Ctrl+C 的默认行为,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ stty intr ^C
你需要按下 Ctrl
和 V
来输入字面值的 ^C
。
实例11:禁用挂断信号
在某些情况下,你可能不希望终端在断开连接时发送挂断信号。你可以这样设置:
[linux@bashcommandnotfound.cn ~]$ stty -hupcl
这将禁用挂断时清除行的设置。
实例12:设置擦除字符
你可以设置哪个键用作擦除字符(通常是回退键):
[linux@bashcommandnotfound.cn ~]$ stty erase ^?
这里,^?
代表 DEL 字符。为了输入 ^?
,你可能需要按 Ctrl
+ V
然后按 Backspace
或 Delete
键。
实例13:查看并保存当前设置
如果你想保存当前的 stty
配置以便以后恢复,可以这样做:
[linux@bashcommandnotfound.cn ~]$ stty -g > stty_settings.txt
这将当前的设置保存到 stty_settings.txt
文件中。
实例14:恢复之前保存的设置
如果你想从文件中恢复 stty
设置,可以这样做:
[linux@bashcommandnotfound.cn ~]$ stty $(cat stty_settings.txt)
这会从 stty_settings.txt
文件中恢复之前保存的设置。
实例15:设置奇偶校验
如果你在与某些硬件设备通信时需要设置奇偶校验,可以使用如下命令:
[linux@bashcommandnotfound.cn ~]$ stty parenb parodd
这里,parenb
选项启用奇偶校验位的生成和检测,而 parodd
选项选择奇校验。
Linux stty命令的注意事项
-
当使用
stty
更改设置时,必须非常小心,因为某些更改可能会导致终端变得不响应。例如,禁用回显会使得你无法看到你键入的任何内容。 -
在脚本中更改
stty
设置时,最好在脚本结束时恢复默认设置,以避免对终端造成长期影响。 -
在某些情况下,如果更改了终端的设置并且终端不再相应,可以通过关闭并重新打开终端会话来恢复默认的终端设置。
-
如果你不确定要应用的设置,请首先使用
stty -a
查看当前设置,或使用stty -g
获取可以重新应用的设置字符串。 -
在使用
stty
命令时,应确保对串行通信和终端行为有足够的理解,以避免意外情况的发生。 -
如果不小心更改了终端设置导致无法使用,可以尝试在另一个终端中登录相同的用户会话,使用
stty
命令恢复设置,或者使用reset
命令尝试重置终端。
使用 stty
命令可以非常有效地管理Linux终端的行为,但要谨慎使用以确保系统的正常运行。
评论区