stty

stty 命令

用途

设置、复位和报告工作站操作参数。

语法

stty [ -a ] [ -g ] [ Options ]

描述

stty 命令对当前为标准输入的设备设置某些 I/O 选项。该命令将输出写到当前为标准输出的设备中。

这个操作系统的版本使用标准 《X/Open 可移植性指南,发行版 4》 接口来控制终端,保持与 POSIX 和 BSD 接口的兼容性。stty 命令支持 POSIX 和 BSD 的适应选项,但强烈推荐使用 POSIX 选项。同样提供废弃的 BSD 选项列表(带有对应的 POSIX 选项)。

输入以下命令时,可以将 tty 设备的标准输入重定向:

 stty -a </dev/ttyx

stty 命令(POSIX)将挂起并等待该 tty 的 open(),直到确定 RS-232 载波检测信号。如果设置了 clocal 或 forcedcd(仅对 128 端口)选项,这个规则将不适用。

标志

 

-a

将所有选项设置的当前状态写到标准输出中。

-g

将选项设置写到标准输出中,其格式可以由另一个 stty 命令使用。

选项

stty 命令支持以下选项类别:

·      控制模式

·      输入方式

·      输出方式

·      本地模式

·      硬件流量控制模式

·      控制字符指定

·      组合模式

·         窗口大小

 


注:


exta、19200 和 19.2 是同义词;extb、38400 和 38.4 是同义词。


注:


该模式不保持对列位置的跟踪,因此您可能在擦除制表符和转义序列等符号时得到意外的结果。

控制模式


clocal

假定一行没有调制解调器控制。

-clocal

假定一行带有调制解调器控制。

cread

启用接收器。

-cread

禁用接收器。

cstopb

每个字符选择两个停止位。

-cstopb

每个字符选择一个停止位。

cs5, cs6, cs7, cs8

选择字符大小。

hup, hupcl

最后关闭时挂起拨号连接。

-hup, -hupcl

最后关闭时不挂起拨号连接。

parenb

启用奇偶性校验的生成和检测。

-parenb

禁用奇偶性校验的生成和检测。

parodd

选择奇校验。

-parodd

选择偶校验。

0

立即挂起电话线路。

speed

将工作站输入和输出速度设置为指定的 speed 数(以位/秒为单位)。并不是所有的硬件接口都支持所有的速度。speed 的可能值有:50、75、110、134、200、300、600、1200、1800、2400、4800、9600、19200、19.2、38400、38.4、exta 和  extb。

ispeed speed

将工作站输入速度设置为指定的 speed 数(以位/秒为单位)。并不是所有的硬件接口都支持所有的速度,而且并不是所有的硬件接口都支持该选项。 speed 的可能值与 speed 选项相同。

ospeed speed

将工作站输出速度设置为指定的 speed 数(以位/秒为单位)。并不是所有的硬件接口都支持所有的速度,而且并不是所有的硬件接口都支持该选项。 speed 的可能值与 speed 选项相同。


输入模式

brkint

中断时发出 INTR 信号。

-brkint

中断时不发出 INTR 信号。

icrnl

输入时将 CR 映射为 NL。

-icrnl

输入时不将 CR 映射为 NL。

ignbrk

输入时忽略 BREAK。

-ignbrk

输入时不忽略 BREAK。

igncr

输入时忽略 CR。

-igncr

输入时不忽略 CR。

ignpar

忽略奇偶错误。

-ignpar

不忽略奇偶错误。

inlcr

输入时将 NL 映射为 CR。

-inlcr

输入时不将 NL 映射为 CR。

inpck

启用奇偶校验。

-inpck

禁用奇偶校验。

istrip

将输入字符剥离到 7 位。

-istrip

不将输入字符剥离到 7 位。

iuclc

将大写字母字符映射为小写。

-iuclc

不将大写字母字符映射为小写。

ixany

允许任何字符重新启动输出。

-ixany

只允许 START(Ctrl-Q 按键顺序)重新启动输出。

ixoff

当输入队列接近空或满时,发送 START/STOP 字符。

-ixoff

不发送 START/STOP 字符。

ixon

启用 START/STOP 输出控制。一旦启用 START/STOP 输出控制,您可以按下 Ctrl-S 按键顺序暂停向工作站的输出,也可按下 Ctrl-Q 按键顺序恢复输出。

-ixon

禁用 START/STOP 输出控制。

imaxbel

当输入溢出时,回送 BEL 字符并且废弃最后的输入字符。

-imaxbel

当输入溢出时,废弃所有输入。

parmrk

标记奇偶错误。

-parmrk

不标记奇偶错误。


输出方式

bs0, bs1

为退格符选择延迟样式(bs0 表示没有延迟)。

cr0,  cr1, cr2, cr3

为 CR 字符选择延迟样式(cr0 表示没有延迟)。

ff0, ff1

为换页选择延迟样式(ff0 表示没有延迟)。

nl0, nl1

为 NL 字符选择延迟样式(nl0 表示没有延迟)。

ofill

使用延迟填充字符。

-ofill

使用延迟定时。

ocrnl

将 CR 字符映射为 NL 字符。

-ocrnl

不将 CR 字符映射为 NL 字符。

olcuc

输出时将小写字母字符映射为大写。

-olcuc

输出时不将小写字母字符映射为大写。

onlcr

将 NL 字符映射为 CR-NL 字符。

-onlcr

不将 NL 字符映射为 CR-NL 字符。

onlret

在终端 NL 执行 CR 功能。

-onlret

在终端 NL 不执行 CR 功能。

onocr

不在零列输出 CR 字符。

-onocr

在零列输出 CR 字符。

opost

处理输出。

-opost

不处理输出;即忽略所有其它输出选项。

ofdel

使用 DEL 字符作为填充字符。

-ofdel

使用 NUL 字符作为填充字符。

tab0, tab1, tab2

为水平制表符选择延迟样式(tab0 表示没有延迟)。

tab3

扩展制表符至多个空格。

vt0, vt1

为垂直制表符选择延迟样式(vt0 表示没有延迟)。


本地模式

echo

回送每个输入的字符。

-echo

不回送字符。

echoctl

以 ^X(Ctrl-X)回送控制字符,X 是将 100 八进制加到控制字符代码中给出的字符。

-echoctl

不以 ^X(Ctrl-X)回送控制字符。

echoe

以“backspace space backspace”字符串回送 ERASE 字符。

-echoe

不回送 ERASE 字符,只回送退格符。

echok

在 KILL 字符后回送 NL 字符。

-echok

在 KILL 字符后不回送 NL 字符。

echoke

通过擦除输出行上的每个字符,回送 KILL 字符。

-echoke

只回送 KILL 字符。

echonl

回送 NL 字符。

-echonl

不回送 NL 字符。

echoprt

以 /(斜杠)和 \ (反斜杠) 向后回送擦除的字符。

-echoprt

不以 /(斜杠)和 \ (反斜杠) 向后回送擦除的字符。

icanon

启用规范输入(规范输入允许使用 ERASE 和 KILL 字符进行输入行的编辑)。 请参阅 AIX 5L Version 5.2 Communications Programming Concepts 中的 Line Discipline Module (ldterm) 中关于 canonical mode input 的讨论。

-icanon

禁用规范输入。

iexten

指定从输入数据中识别实现性定义的功能。 要识别以下控制字符,需要设置 iexten:eol2、dsusp、reprint、discard、werase、lnext。与这些模式关联的功能也需要设置 iexten:imaxbel、echoke、echoprt、echoctl。

-iexten

指定从输入数据中识别实现性定义的功能。

isig

启用对特殊控制字符(INTR、SUSP 和 QUIT)的字符检查。

-isig

禁用对特殊控制字符(INTR、SUSP 和 QUIT)的字符检查。

noflsh

不清除 INTR、SUSP 或 QUIT 控制字符之后的缓冲区。

-noflsh

清除 INTR、SUSP 或 QUIT 控制字符之后的缓冲区。

pending

下次读操作暂挂或输入到达时,要重新输入从原始模式转换为规范模式后被暂挂的输入。暂挂是一个内部状态位。

-pending

没有文本暂挂。

tostop

为背景输出发出 SIGTOU 信号。

-tostop

不为背景输出发出 SIGTOU 信号。

xcase

在输入中回送大写字符,并在输出显示的大写字符之前加上 \ (反斜杠)。

-xcase

不在输入时回送大写字符。

硬件流量控制模式

这些选项是对 《X/Open 可移植性指南,发行版 4》 标准的扩展。

 

cdxon

输出时启用 CD 硬件流量控制模式。

-cdxon

输出时禁用 CD 硬件流量控制模式。

ctsxon

输出时启用 CTS 硬件流量控制模式。

-ctsxon

输出时禁用 CTS 硬件流量控制模式。

dtrxoff

输入时启用 DTR 硬件流量控制模式。

-dtrxoff

输入时禁用 DTR 硬件流量控制模式。

rtsxoff

输入时启用 RTS 硬件流量控制模式。

-rtsxoff

输入时禁用 RTS 硬件流量控制模式。

控制指定

要将一个控制字符指定到某字符串中,请输入:

stty Control String

其中,Control 参数 可以是 INTR、QUIT、ERASE、KILL、EOF、EOL、EOL2、START、STOP、SUSP、DSUSP、
REPRINT、DISCARD、WERASE、LNEXT、MIN 或 TIME 参数。(使用字符 MIN 和 TIME 时,请加上 -icanon 选项。)


 

注:


 

MIN 和 TIME 的值解释为整数值,而不是字符值。

String 参数可以是任何单一的字符,比如 c。以下内容为控制赋值的示例:

stty STOP c

另一种指定控制字符的方法可以是:输入一个字符序列,它是由一个  \^ (反斜杠,插入记号) 后面跟着一个单一字符组成的。 如果跟在 ^ (插入记号)后的单一字符是下表的 ^c(插入记号 c)栏中列出的字符之一,将设置相应的控制字符值。 例如,要使用 ?(问号)字符指定 DEL 控制字符,请输入字符串 \^?(反斜杠,插入记号,问号),如下:

stty ERASE \^?

 

stty 中的插入记号控制字符

 

^c

替换值

^c

替换值

^c

替换值

a, A

<SOH>

l, L

<FF>

w, W

<ETB>

b, B

<STX>

m, M

<CR>

x, X

<CAN>

c, C

<ETX>

n, N

<SO>

y, Y

<EM>

d, D

<EOT>

o, O

<SI>

z, Z

<SUB>

e, E

<ENQ>

p, P

<DLE>

[

<ESC>

f, F

<ACK>

q, Q

<DC1>

\

<FS>

g, G

<BEL>

r, R

<DC2>

]

<GS>

h, H

<BS>

s, S

<DC3>

^

<RS>

i, I

<HT>

t, T

<DC4>

_

<US>

j, J

<LF>

u, U

<NAK>

?

<DEL>

k, K

<VT>

v, V

<SYN>

@

<NUL>

 

 

 

组合模式


cooked

请参阅 -raw 选项。

ek

分别将 ERASE 和 KILL 字符设置为 Ctrl-H 和 Ctrl-U 按键顺序。

evenp

启用 parenb 和 cs7

-evenp

禁用 parenb 并设置 cs8

lcase, LCASE

设置 xcaseiuclc 和 olcuc。在工作站只以大写字符使用。

-lcase, -LCASE

设置 -xcase-iuclc 和 -olcuc

nl

设置 -icrnl 和 -onlcr

-nl

设置 icrnl、 onlcr-inlcr-igncr-ocrnl 和 -onlret

oddp

启用 parenb、 cs7 和 parodd

-oddp

禁用 parenb 并设置 cs8

parity

请参阅 evenp 选项。

-parity

请参阅 -evenp 选项。

sane

将参数重新设置为合理的值。

raw

允许原始模式输入(不包括输入处理,例如 erase、kill 或 interrupt);传回奇偶(校验)位。

-raw

允许规范输入方式。

tabs

保留制表符。

-tabs, tab3

打印时将制表符替换为空格。

 

 

 

窗口大小


cols n, columns n

将终端(窗口)大小记录为有 n 列。

rows n

将终端(窗口)大小记录为有 n 行。

size

将终端(窗口)大小打印到标准输出(先是行,再是列)中。

 

废弃选项

stty 命令支持以下 BSD 选项。 对于每个选项,都给出了建议的 POSIX 选项。

 

 

all

使用 stty -a 命令显示所有当前设置。

crt

使用 sane 选项将参数重新设置为合理的值。

crtbs

使用 -echoe 选项。

crterase

使用 echoe 选项。

-crterase

使用 -echoe 选项。

crtkill

使用 echoke 选项。

-crtkill

使用 echok 和 -echoke 选项。

ctlecho

使用 echoctl 选项。

-ctlecho

使用 -echoctl 选项。

decctlq

使用 -ixany 选项。

-decctlq

使用 ixany 选项。

even

使用 evenp 选项。

-even

使用 -evenp 选项。

everything

使用 stty -a 命令显示所有当前设置。

litout

使用 -opost 选项。

-litout

使用 opost 选项。

odd

使用 oddp 选项。

-odd

使用 -oddp 选项。

pass8

使用 -istrip 选项。

-pass8

使用 istrip 选项。

prterase

使用 echoprt 选项。

speed

使用 stty 命令显示当前设置。

tandem

使用 ixoff 选项。

-tandem

使用 -ixoff 选项。

 

示例

1.  要显示您的工作站配置的简短列表,请输入:

stty

这将列出与缺省值不同的设置。

2.  要显示您的工作站配置的完整列表,请输入:

stty  -a

3.  要启用停止列表滚动出屏幕的按键顺序,请输入:

stty ixon ixany

这将设置 ixon 模式,从而可以通过按下 Ctrl-S 按键顺序来停止列表的滚动。ixany 标志允许按任意键来恢复列表的滚动。正常的工作站配置包含 ixon 和 ixany 标志,使您可以用 Ctrl-S 按键顺序停止列表的滚动,而只有 Ctrl-Q 按键顺序才能使列表重新滚动。

4.  要重新设置搞乱的配置,请输入:

Ctrl-J stty  sane Ctrl-J

在命令前后按 Ctrl-J 按键顺序,而不是按 Enter 键。当控制 Enter 键处理的参数搞乱时,系统通常能识别 Ctrl-J 按键顺序。

有时屏幕上显示的信息可能看上去很奇怪,或当您按 Enter 键时系统不反应。当您使用 stty 命令,而它带有不兼容的参数或参数的操作难以理解时,可能会发生这种情况。当面向屏幕的应用程序异常结束并且无法复位工作站配置时,也可能发生这种情况。

输入 stty sane 命令设置合理的配置,但它可能与您的正常配置略有不同。

5.  要保存和恢复终端的配置:

OLDCONFIG=`stty -g`          # save configuration

stty -echo                   # do not display password

echo "Enter password: \c"

read PASSWD                  # get the password

stty $OLDCONFIG              # restore configuration

该命令保存工作站的配置、关闭回送信号、读取密码并恢复原始配置。

输入 stty - echo 命令关闭回送信号,这意味着当您在键盘上输入密码时,密码并不出现在屏幕上。此操作与 echo 命令(该命令在屏幕上显示消息)毫无关系。

1,在命令行下,禁止输出大写的方法 stty iuclc #开启
stty -iuclc #恢复
:-) 2,在命令行下禁止输出小写
stty olcuc #开启
stty -olcuc#恢复
3,打印出终端的行数和列数
stty size
4,改变ctrl+D的方法:
stty eof "string"
系统默认是ctrl+D来表示文件的结束,而通过这种方法,可以改变! :-) 5,屏蔽显示
stty -echo #禁止回显
stty echo #打开回显
测试方法:
stty -echo;

read;

stty echo;read
6,忽略回车符
stty igncr #开启
stty -igncr#恢复
最后,介绍一个实例:
一个限时输入的小脚本

#!/bin/ksh
stty -icanon min 0 time 100 while
do
echo "Please input:y/m/d/[ENTER]:" read input
case $input in
y)date +%Y;break;;
m) date +%m;break;;
d) date +%d;break;;
"") date +%Y/%m/%d;break;; . *)echo "wrong!again!";continue;;
esac
done
stty sane

一个检测按键的小脚本:

#!/bin/sh

echo

old_tty_settings=$(stty -g)    保存原来的设置

stty -icanon

Keypress=$(head -c1)  或者使用$(dd bs=1  count=1 2>/dev/null)

echo "Key pressed was \"""$Keypress"\"."

echo

stty  "$old_tty_settings"     恢复原来设置

exit 0

转载于:https://my.oschina.net/it1693/blog/282712

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值