侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux stty命令教程:终端控制的艺术(附实例详解和注意事项)

在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

你需要按下 CtrlV 来输入字面值的 ^C

实例11:禁用挂断信号

在某些情况下,你可能不希望终端在断开连接时发送挂断信号。你可以这样设置:

[linux@bashcommandnotfound.cn ~]$ stty -hupcl

这将禁用挂断时清除行的设置。

实例12:设置擦除字符

你可以设置哪个键用作擦除字符(通常是回退键):

[linux@bashcommandnotfound.cn ~]$ stty erase ^?

这里,^? 代表 DEL 字符。为了输入 ^?,你可能需要按 Ctrl + V 然后按 BackspaceDelete 键。

实例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终端的行为,但要谨慎使用以确保系统的正常运行。

0

评论区