码迷,mamicode.com
首页 > 其他好文 > 详细

stty(set tty)

时间:2018-05-17 00:59:40      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:ber   link   特定   key   /dev/null   tin   $1   lin   标准输出   

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

UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过stty命令对特定终端或通信线路设置选项。 在stty中相应选项前冠以负号(-),该选项被清除;如果无负号,该选项被设置。

stty -a #将所有选项设置的当前状态写到标准输出中
old_stty_settings=`stty -g` #保存当前设置
stty "$old_stty_settings" #恢复当前设置
stty -echo #禁止回显,当您在键盘上输入时,并不出现在屏幕上
stty echo #打开回显
stty raw #设置原始输入
stty -raw #关闭原始输入
stty igncr #开启忽略回车符
stty -igncr#关闭忽略回车符

-a:以容易阅读的方式打印当前的所有配置;
-g:以stty可读方式打印当前的所有配置。

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

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

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

改变Ctrl+D的方法:
stty eof "string"  系统默认是Ctrl+D来表示文件的结束,而通过这种方法,可以改变!

忽略回车符:
stty igncr     #开启
stty -igncr    #恢复

定时输入:
timeout_read()
{
    timeout=$1
    old_stty_settings=`stty -g`  #save current settings
    stty -icanon min 0 time 100  #set 10seconds,not 100seconds
    eval read varname            #=read $varname
    stty "$old_stty_settings"    #recover settings
}

更简单的方法就是利用read命令的-t选项:
read -t 10 varname

eg1:

  1. #!/bin/sh  
  2. stty -echo  
  3. echo -n "Please set your password: "  
  4. read p  
  5. stty echo  
  6. echo -e "\nYour password is: $p"  

eg2:

  1. get_char()  
  2. {  
  3.   SAVEDSTTY=`stty -g`  
  4.   stty -echo  
  5.   stty raw  
  6.   dd if=/dev/tty bs=1 count=2> /dev/null  
  7.   stty -raw  
  8.   stty echo  
  9.   stty $SAVEDSTTY  

stty(set tty)

标签:ber   link   特定   key   /dev/null   tin   $1   lin   标准输出   

原文地址:https://www.cnblogs.com/tianzeng/p/9048888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!