Linux Ubuntu stty 使用
阅读原文时间:2023年07月11日阅读:1

stty(set tty)命令用于显示和修改当前注册的终端的属性。

该命令是一个用来改变并打印终端行设置的常用命令。

stty -a #将所有选项设置的当前状态写到标准输出中

old_stty_settings=stty -g #保存当前设置

stty “$old_stty_settings” #恢复当前设置

stty -echo #禁止回显,当您在键盘上输入时,并不出现在屏幕上

stty echo #打开回显

stty raw #设置原始输入

stty -raw #关闭原始输入

stty igncr #开启忽略回车符

stty -igncr#关闭忽略回车符

stty iuclc #开启在命令行下,禁止输出大写的方法

stty -iuclc #恢复在命令行下,禁止输出大写的方法

stty olcuc #开启在命令行下禁止输出小写

stty -olcuc#恢复在命令行下禁止输出小写

stty size #打印出终端的行数和列数

stty -a #将所有选项设置的当前状态写到标准输出中

stty -a

输出

speed 38400 baud; rows 31; columns 60; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q;
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal
-crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0
cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt echoctl echoke -flusho -extproc

stty -echo #禁止回显,当您在键盘上输入时,并不出现在屏幕上

输入命令也不会显示在屏幕上

stty -echo

stty echo #打开回显 从键盘输入的命令会显示在屏幕上

stty echo

stty raw #设置原始输入

打开以后的效果就是排版上会有些不同

stty raw

例如在运行下面的命令 会这样 排版不清楚,这就是原始输入被打开了

stty -a
                speed 38400 baud; rows 32; columns 122; line = 0;
                                                                 intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q;
                                                         stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
                          -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
                                                                                           -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
                                                                               -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
                                     -isig -icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

stty -raw #关闭原始输入

stty -raw

在运行上面的命令

stty -a
speed 38400 baud; rows 31; columns 60; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q;
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal
-crtscts
-ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr
icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0
cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt echoctl echoke -flusho -extproc

输出会经过排版了

stty igncr #开启忽略回车符

stty igncr

要是在终端shell 输入这个命令 终端就不能就收回车了

那么怎么执行命令呢 这代码只能在 shell 脚本文件中运行吗

stty -igncr#关闭忽略回车符

stty -igncr

运行 忽略回车的命令后,不知道怎么运行下面的命令…

只能重启shell

stty iuclc #开启在命令行下,禁止输出大写的方法

stty iuclc

这样在shell 终端中就输入不了大写

stty -iuclc #恢复在命令行下,禁止输出大写的方法

stty -iuclc

执行后 就可在终端再次输入大写字母

stty olcuc #开启在命令行下禁止输出小写

stty olcuc

禁止小写 ,要在shell终端中运行这个代码,估计又要重启shell了…

这样的代码只能在shell脚本中用吧

stty -olcuc#恢复在命令行下禁止输出小写

stty -olcuc

stty size 打印出终端行列

stty size
31 60

下面是shell stty -echo 这个命令适合输入密码

#!/bin/sh
stty -echo
echo -n "Please Put in your password:"
read password
stty echo
echo -e "\nYour password is: $password"