stty 命令说明及使用讲解
 
 
UNIX系统的命令很多,但是巧妙使用命令的方法更多。随着经验的积累和观察学习其他用户的实践,我们也可学会解决特殊问题的方法。这里谈谈自己使用UNIX系统中stty命令的一些体会,希望能与你共享。
1.stty(settty,设置tty)命令用于检查和修改当前注册的终端的通信参数。UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过stty命令对特定终端或通信线路设置选项。
可以在stty命令中使用-a查看当前注册终端的设置情况。
$ stty -a
Speed 9600 baud; line =0;intr= DEL;quit = ^;erase = ^h;kill =^U;eof = ^d;start=^q;stop=^s
-parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk
-ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr icrnl-iuclc
ixon ixany -ixoff
isig icanon -xcase echo echoe echok -echonl -noflsh
opost -olcuc onlcr -ocrnl -onocr onlret ofill ofdel tab3
需要时,这里显示的各种选择都可以重新配置。每种终端选项都有自己的名字(如ixon),其中大多数要么被设置要么被清除。在stty中相应选项前冠以负号(-),该选项被清除(禁止);如果无负号,该选项被设置。
当希望修改各选择的值时,应在stty命令中正确书写相应选项。如命令
$ stty -ixon
将流控制设置为OFF,而命令
$ stty ixon
则将其置为ON。在stty命令中可以同时设置多个选项:
$ stty ixon 1200
该命令将终端设置为1200波特,并将流控制置为ON。
当选项的列表较长时,应当小心所做的修改造成会话的混乱。典型的情况下,终端在设置不正确时完全不能工作。经常出现的现象是列输出显示或用户的击键不能被shell正确接受。有时NEWLINE可能只显示或走一行但不回行,即用户输入的NEWLINE符不能被shell正确读取。建立新注册标识的过程通常建立了正确的stty选项,在日常使用中很少需要修改。但如果变量TERM的设置不正确或用户希望使用新的终端或通信渠道(如局域网),则需要修改stty的选项。如果你在某个机器中注册后终端操作正常,但后来因故发生了混乱,那么最佳的解决方法是先注销然后再向系统注册。因为注册时系统会重新设置相应选项。还有一种不太严格的解决办法是:
$ stty sane
命令sane最常出现在大多数终端的stty选项的集合中。它并不改变通信信道的速率,但当终端发生混乱时,通常能够产生有益的效果。命令sane可能使全屏幕应用程序(如vi)不能正确工作,而且在设置了选项sane之后,如果不能解决任何问题,就应立即注销,然后再注册。如果终端在注册后依然不能正确工作,用户的注册可能是不成功的。如果终端已经混乱,NEWLINE键不能结束命令行,可以用CTRL-J代替NEWLINE直到用户执行sttysane。此时,再用CTRL-J终止stty sane,使系统恢复正常。
stty命令的几项主要选项功能为:
选项parenb使终端进行奇偶校验,-parenb则是禁止校验;
选项cs5、cs6、cs7和cs8分别将字符大小设为5、6、7和8比特;
选项300、600、1200、2400、4800、9600和19200设置波特率;
cstopb和-cstopb分别设置两个或一个停止位;
tabs使系统使用制表符而不是空格序列,因此减少了输出量,选项-tabs仅使用空格,当终端不能正确处理制表符(tab)时应使用该项。
2.stty还可用于控制一些具有特殊控制功能的键。系统可能已经使用CTRL-D作为文件结束符,但你可能喜欢使用CTRL-C。因此可以使用stty命令改变之:
$ stty eof c
其中c可以是你喜欢的其它特殊控制字符。
可以直接输入控制字符,在其前面冠以反斜线和脱字符( ^)。命令
$ stty eof ^c
将CTRL-C设置为文件结束符。这种语法形式还可以用于修改删除符(通常为退格键BackSpace)和中断符(通常为DEL键)。若希望将删除符改为BACKSPACE,可以使用下列命令:
$ stty erase ^h
可以设置一个会话期,使得当自己键入一个退格键时,系统用退格、删除和退格序列响应。此时可以看到用退格键覆盖的字符从显示中消失了,这样更符合计算机的惯例。使用命令
$ stty echoe
可使这一特性设置为ON。
终端方式及其管理是UNIX系统中比较困难的内容之一,系统的用户手册中有stty选项的全部清单。在进行尝试之前,应当查阅手册,仔细分析,以免给你的工作带来麻烦。
 
 
stty - 改变并打印终端行设置
    总览
  stty [-F device] [--file=device] [SETTING]...
  stty [-F device] [--file=device] [-a|--all]
  stty [-F device] [--file=device] [-g|--save]
  描述
  quot; Add any additional description here
  打印或改变终端属性.
  -a, --all
  以可读的格式打印当前的所有设置
  -g, --save
  以终端可读的格式打印当前的所有设置
  -F, --file
  打开指定的设备,并用此设备作为输入来代替标准输入
  --help
  显示帮助并退出
  --version
  显示版本信息并退出
  选项-在SETTING之前使用这些选项将被视为无效 星号*表明是非POSIX设置.以下是一些系统定义了的     
    可用设置:
  特殊字符
  * dsusp CHAR CHAR表示输入满时,发一个停止信号给终端
  eof CHAR
  CHAR表示一个文件结束 (结束输入)
  eol CHAR
  CHAR表示当前行结束
  * eol2 CHAR CHAR是另一个表示结束当前行的字符
  erase CHAR
  CHAR表示擦除最后一个输入字符
  intr CHAR
  CHAR表示发一个中断信号
  kill CHAR
  CHAR表示擦除当前行
  * lnext CHAR CHAR表示输入下一个字符
  quit CHAR
  CHAR表示发出一个退出信号
  * rprnt CHAR CHAR表示刷新当前行
  start CHAR
  CHAR表示在停止输出后重新开始输出
  stop CHAR
  CHAR表示停止输出
  susp CHAR
  CHAR表示发送一个终端停止信号
  * swtch CHAR CHAR表示切换到不同的外壳层
  * werase CHAR CHAR表示擦除已经输入的最后一个单词
  特殊设置
  N
  把输入和输出的波特率设为N
  * cols N 通知内核终端有N列
  * columns N 与cols N 相同
  ispeed N
  设置输入速度为N
  * line N 用行约束规则N
  min N
  用 -icanon, 设置一次完整的读操作最小为N个字符
  ospeed N
  设置输出速度为N
  * rows N 通知内核终端有N行
  * size 根据内核打印出终端的行数和列数
  speed
  打印出终端的速度
  time N
  同时用 -icanon, 设置读超时为十分之N秒
  控制设置
  [-]clocal
  关闭解调器的控制信号
  [-]cread
  允许接收输入
  * [-]crtscts 允许 RTS/CTS 的握手
  csN
  把字符长度设为N, N 为[5..8]
  [-]cstopb
  对每字符使用两个停止位 (一个带有 `-')
  [-]hup
  当最后一个进程关闭终端后,发一个挂起信号
  [-]hupcl
  同 [-]hup
  [-]parenb
  在输出中产生奇偶校验位,并要求在输入中也有奇偶校验位
  [-]parodd
  设置奇校验 (偶校验用 `-')
  输入设置:
  [-]brkint
  暂停并产生中断信号
  [-]icrnl
  将回车解释为换行
  [-]ignbrk
  忽略中断信号
  [-]igncr
  忽略回车符
  [-]ignpar
  忽略有奇偶校验错的字符
  * [-]imaxbel 对一个字符产生嘟叫,但不刷新已满的输入缓冲区
  [-]inlcr
  将换行解释为回车
  [-]inpck
  打开输入奇偶校验
  [-]istrip
  清除输入字符的高位(第8位)
  * [-]iuclc 将大写字符转换成小写字符
  * [-]ixany 使任何字符都重新开始输出(而 不仅仅是重新输出字符能实现此功能)
  [-]ixoff
  打开发送开始/停止字符的开关
  [-]ixon
  打开XON/XOFF的流量控制
  [-]parmrk
  标记奇偶校验错误 (使用255-0-character 字符序列)
  [-]tandem
  同 [-]ixoff
  输出设置:
  * bsN 回退延迟, N 为 [0..1]
  * crN 回车延迟, N 为 [0..3]
  * ffN 换页延迟, N 为 [0..1]
  * nlN 换行延迟, N 为 [0..1]
  * [-]ocrnl 将回车解释为换行
  * [-]ofdel 使用删除字符来填充,而不是用空字符填充
  * [-]ofill 使用填充字符,不使用定时延迟
  * [-]olcuc 将小写字符转换成大写
  * [-]onlcr 将换行解释为回车-换行
  * [-]onlret 换行执行一次回车
  * [-]onocr 不在第一列打印回车
  [-]opost
  postprocess 输出
  * tabN 水平tab键延迟, N 为 [0..3]
  * tabs 同tab0
  * -tabs 同tab3
  * vtN 垂直方向tab键延迟。。。, N 为 [0..1]
  本地设置:
  [-]crterase
  将擦除字符显示为:退格-空格-退格
  * crtkill 根据echoprt和echoe的设置去除所有行
  * -crtkill 根据echoctl和echok设置去除所有行
  * [-]ctlecho 在头部符号中显示控制字符'^c')
  [-]echo
  显示输入字符
  * [-]echoctl 同 [-]ctlecho
  [-]echoe
  同[-]crterase
  [-]echok
  在一个杀死字符后显示一个换行
  * [-]echoke 同 [-]crtkill
  [-]echonl
  即使不显示其它字符也换行
  * [-]echoprt 向后显示在 '' 和 '/'之间的擦除字符
  [-]icanon
  打开 erase, kill, werase, 和 rprnt 这些特殊字符
  [-]iexten
  打开 非POSIX 特殊字符
  [-]isig
  打开中断,退出和挂起这些特殊字符
  [-]noflsh
  在中断和退出这些特殊字符后禁止刷新
  * [-]prterase 同 [-]echoprt
  * [-]tostop 停止试图写终端的后台作业
  * [-]xcase 与icanon同时使用, 表示用`'退出大写状态
  综合设置:
  * [-]LCASE 同 [-]lcase
  cbreak
  同 -icanon
  -cbreak
  同 icanon
  cooked
  同 brkint ignpar istrip icrnl ixon opost isig icanon, eof 和 eol字符被设为默认值
  -cooked
  同 raw
  crt
  同 echoe echoctl echoke
  dec
  同 echoe echoctl echoke -ixany intr ^c erase 0177 kill ^u
  * [-]decctlq 同 [-]ixany
  ek
  将擦除,杀死字符设为它们的默认值
  evenp
  同 parenb -parodd cs7
  -evenp
  同 -parenb cs8
  * [-]lcase 同 xcase iuclc olcuc
  litout
  同 fB-parenb -istrip -opost cs8
  -litout
  同 parenb istrip opost cs7
  nl
  同 -icrnl -onlcr
  -nl
  同 icrnl -inlcr -igncr onlcr -ocrnl -onlret
  oddp
  同 parenb parodd cs7
  -oddp
  同 -parenb cs8
  [-]parity
  同 [-]evenp
  pass8
  同 -parenb -istrip cs8
  -pass8
  同 parenb istrip cs7
  raw
  同 -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr-icrnl -ixon -ixoff -iuc lc -ixany -imaxbel -opost -isig -icanon-xcase min 1 ti me 0
  -raw
  同 cooked
  sane
  同 cread -ignbrk brkint -inlcr -igncr icrnl -ixoff -iuclc -ixanyimaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0cr0 tab0 bs0 vt0 ff 0 isig icanon iexten echo echoe echok -echonl-noflsh -xcase -tostop -echoprt echoctl echoke, 所有特殊字符 使用缺省值.
  本命令处理连接到标准输入的终端行.如不带参数,则输出波特率, 行的约束规则,以及与健全 的stty相背离的设置.在设置中,CHAR 是逐字读取的, 或是象 ^c, 0x37, 0177 或127这样的 编码; 特殊值 ^-或未定义被用来禁止特殊字符.
====

(转)stty 命令说明及使用讲解的更多相关文章

  1. stty命令使用

    stty [ -a ] [ -g ] [ Options ]   stty(set tty)命令用于显示和修改当前注册的终端的属性. UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过 ...

  2. [tty与uart]stty命令使用

    中文解释链接:http://linux.51yip.com/search/stty 英文解释链接:http://pubs.opengroup.org/onlinepubs/9699919799/uti ...

  3. react.js 之 create-react-app 命令行工具系统讲解

    react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app ...

  4. [uart]stty命令使用

    中文解释链接:http://linux.51yip.com/search/stty 英文解释链接:http://pubs.opengroup.org/onlinepubs/9699919799/uti ...

  5. Linux stty命令

    stty是linux下改变和打印终端设置的常用命令. 一.参数: 1.打印终端行设置 -a,--all   以人可读的方式打印所有当前设置:-a参数比单独的stty命令输出的终端信息更详细 -g,-- ...

  6. 终端I/O之stty命令

    所有的终端选项标志,在程序中都可用tcgetattr和tcsetattr函数(http://www.cnblogs.com/nufangrensheng/p/3576682.html)进行检查和更改. ...

  7. Jmeter命令行运行实例讲解

    1. 简介 使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资 本文介绍windows下以命令行模式运行的方法. 1.1. 命令介绍 jmeter -n -t & ...

  8. 从C++到Qt(命令行编译,讲解原理)

    Qt 是 C++ 的库,Qt 在 ansi C++ 的基础上进行了一点扩展. 但国内似乎比较浮躁,学Qt的很多连基本的C++如何编译似乎都不太清楚.本文舍弃IDE或qmake.cmake等工具的束缚, ...

  9. Linux-chmod_命令的详细用法讲解

    Linux chmod 命令 chmod用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.该命令有两种用法.一种是包含 字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. 1 ...

随机推荐

  1. Java泛型读书笔记 (三)

    泛型对于老代码的支持 Java的泛型设计成类型擦除的目的,很大一部分是为了兼容老老代码.如下的一段代码: void setLabelTable(Dictionary table) table的类型是非 ...

  2. 国内物联网平台(3):QQ物联智能硬件开放平台

    国内物联网平台(3)——QQ物联·智能硬件开放平台 马智 平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用 ...

  3. 提取pfx证书公钥和私钥

    从pfx提取密钥信息,并转换为key格式(pfx使用pkcs12模式补足) 1.提取密钥对(如果pfx证书已加密,会提示输入密码.) openssl pkcs12 -in 1.pfx -nocerts ...

  4. [Django笔记] 从已有的数据库构建应用

    Django适合从零开始构建,所谓 'Green-field' 开发.那么当我需要基于已存在的数据库构建应用时怎么办呢? inspectdb # 扫描默认数据库 python manage.py in ...

  5. 【OD深入学习】Java多线程面试题

    一.参考文章 1. Java线程面试题 Top 50 2. Java面试——多线程面试题 3. JAVA多线程和并发基础面试问答 4. 15个顶级Java多线程面试题及回答 二.逐个解答 三.一语中的 ...

  6. bzoj 3131 [Sdoi2013]淘金(数位dp)

    题目描述 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共N*N块. 一阵风吹过,金子的位置发生了 ...

  7. django 基础框架学习 (二)

    Django框架基础-02 Django缓存cookie 1.说明        当我们服务器在响应数据的同时,希望写⼊⼀些缓存数据到客户端        我们可以选择在响应的同时,将要写⼊到客户端的 ...

  8. MobaXterm替换cmder

    Windows上命令行工具cmder确实很好用,其扩展功能呢,比系统自带强大几倍.后来在使用MobaXterm,官网https://mobaxterm.mobatek.net/免费版本功能足够强大,支 ...

  9. 【NOIP 2011】Mayan游戏(搜索+模拟)

    描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.**游戏通关是指在规定的步数 ...

  10. python 批量下载 spring 的 xsd

    #coding=utf-8 import os import urllib import urllib2 import re from bs4 import BeautifulSoup # 利用 ur ...