用途说明

stty命令用于显示和修改终端行设置(change and print terminal line settings)。

常用参数

stty命令不带参数可以打印终端行设置,加上-a参数可以打印得更详细些。

stty size可以显示终端的大小,即行数和列数。

stty命令还可以更改终端行的设置,格式如下:

stty SETTING CHAR

其中,SETTING可以是如下

eof : 输入结束,文件结束,默认为Ctrl+D。比如:用cat >file来创建文件时,按Ctrl+D来结束输入。
    erase : 向后删除字符,擦除最后一个输入字符,默认为Ctrl+?。注意默认情况下退格键Backspace不是删除字符。
    intr : 中断当前程序,默认为Ctrl+C。
    kill : 删除整条命令,删除整行,默认为Ctrl+U。
    quit :退出当前程序,默认为Ctrl+\或Ctrl+|。
    start : 启动屏幕输出,默认为Ctrl+Q。
    stop :停止屏幕输出,默认为Ctrl+S。
    susp : terminal stop当前程序,默认为Ctrl+Z。这样当前进程就会变成后台进程了。

werase:删除最后一个单词,默认为Ctrl+W。

stty命令还有一些其他用法,如:

stty -echo 关闭回显。比如在脚本中用于输入密码时。

stty echo 打开回显。

使用示例

示例一 打印终端行设置

[root@web ~]# stty
speed 38400 baud; line = 0;
-brkint -imaxbel
[root@web ~]# stty -a
speed 38400 baud; rows 41; columns 132; 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; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-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

[root@web ~]#

示例二 打印当前终端的大小(行数和列数)

[root@web ~]# stty size
41 132

示例三 设置退格键Backspace的删除行为

在默认情况下,我们按退格键Backspace时,会在屏幕上回显^H,而不是把前一个字符删除。比如使用sftp/ftp/sqlplus/ij等命令时,就会碰到这种情况。我们可以使用stty命令把Backspace的行为变成删除前一个字符。

[root@web ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
root@192.168.6.12's password:
sftp> get abc^H^H^H^H
Couldn't stat remote file: No such file or directory
File "/root" not found.
sftp> quit
[root@web ~]#
[root@web ~]# stty erase ^H
[root@web ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
root@192.168.6.12's password:
sftp> get abc
Couldn't stat remote file: No such file or directory
File "/root/abc" not found.
sftp> quit
[root@web ~]#

示例四 在vi编辑文件时按Ctrl+Q来结束终端僵死的局面

[root@web ~]# vi 1.txt
1
2
3
Ctrl+S
~

注:按了Ctrl+S之后,就会禁止屏幕输出,从而出现终端僵死的情况。

这个时候,只要按Ctrl+Q就会结束这种局面,因为它会允许屏幕输出。

Ctrl+Q

示例五 在bash脚本中与tty命令配合使用

在下面的脚本中,先取得终端文件名称,以判断脚本是否运行在交互式方式还是在管道方式。

    #!/bin/sh    

    CONSOLE_INPUT=$(tty)    

    echo "CONSOLE_INPUT=$CONSOLE_INPUT"    

    COMMAND_LINE="java -Xmx640m -classpath .:lib/hyjc.jar:lib/log4j-1.2.15.jar:lib/commons-logging-1.1.1.jar:lib/proxool-0.9.0RC3.jar:lib/mysql-connector-java-5.1.10-bin.jar:lib/poi-3.5-ZHY-20091107.jar:lib/jdom-1.1.jar hyjc.sql.DBCLI MhrDB.properties MhrDB"    

    if [ "$CONSOLE_INPUT" == "not a tty" ]; then
$COMMAND_LINE
elif [ "$(whereis rlwrap)" == "rlwrap:" ]; then
stty erase ^H
$COMMAND_LINE
else
rlwrap -f jdb.rlwrap $COMMAND_LINE
fi

转自:http://codingstandards.iteye.com/blog/826924

附:Linux终端常用快捷键:

Ctrl + d       删除一个字符,相当于通常的Delete键(命令行若无任何字符,则相当于exit;处理多行标准输入时也表示EOF

Ctrl + h       退格删除一个字符,相当于通常的Backspace键

Ctrl + u       删除光标之前到行首的字符

Ctrl + k       删除光标之前到行尾的字符

Ctrl + c       取消当前行输入的命令,相当于Ctrl + Break

Ctrl + a       光标移动到行首(Ahead of line),相当于通常的Home键

Ctrl + e       光标移动到行尾(End of line)

Ctrl + f       光标向前(Forward)移动一个字符位置

Ctrl + b       光标往回(Backward)移动一个字符位置

Ctrl + l       清屏,相当于执行clear命令

Ctrl + p       调出命令历史中的前一条(Previous)命令,相当于通常的上箭头

Ctrl + n       调出命令历史中的下一条(Next)命令,相当于通常的上箭头

Ctrl + r       显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)

Linux命令之stty的更多相关文章

  1. 别出心裁的Linux命令学习法

    别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...

  2. LINUX命令总结 -------来自 水滴娃娃 的CSDN

    LINUX命令总结 标签: LINUX命令总结 2014-01-27 15:54 41039人阅读 评论(1) 收藏 举报  分类: linux(1)  版权声明:本文为博主原创文章,未经博主允许不得 ...

  3. [Android ] linux命令英文缩写的含义(方便记忆)

    du -sh */ reference to : http://blog.chinaunix.net/uid-27164517-id-3299073.html linux常用命令的英文单词缩写 命令缩 ...

  4. Linux命令(持续更新ing)

    *.命令语法:  a.在进行参数设定时,通常为“-”号,若为完整参数名称,则输入“--”符号;  b.指令太长的时候,可以使用“\”符号使指令连续到下一行;  c.各种符号的意义:    ''     ...

  5. 【改造Linux命令之rm - 删除文件或目录-】

    用途说明 rm命令是常用的命令,用来删除文件或目录(remove files or directories).它也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比 ...

  6. linux 命令总结(转载)

    linux 命令总结(转载) 1. 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2.从Lin ...

  7. 十年linux命令总结

    十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令 ...

  8. linux命令英文缩写的含义(方便记忆)

    命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽子打包 ...

  9. linux 命令中英文对照,收集

    linux 命令中英文对照,收集   linux 命令英文全文 Is Linux CLI case-sensitive? The answer is, yes. If you try to run L ...

随机推荐

  1. 解决IE弹框提示“是否停止运行此脚本”问题

    有少数情况因为js处理内容较多,系统计算标红和刷新页面较慢,IE可能会弹框提示“是否停止运行此脚本”,若想要继续,点击“否”即可.并同时按照下面的设置更改一下注册表,即可解决弹框问题. http:// ...

  2. Java 时间相比较

    private String getRunTime() { String start = new Date.getTime(); String end= new Date.getTime(); lon ...

  3. ruby的json请求

    require 'net/http'require 'uri'require 'json' customers = [{    "id" => 1123,    " ...

  4. 转 mongodb win7 32位系统安装以及配置

    mongodb win7 32位系统安装以及配置   今天安装 win7 32位系统 mongodb 费了好大劲..记录一下,希望相同的同学可以少踩点坑. 1.安装 我安装的是3.2.4  地址:ht ...

  5. Could not connect to Redis at xxx.xxx.xxx.xxx:6379: Connection refused

    开发发来消息说测试环境的redis无法登录: # redis-cli -p 6379 -h xxx.xxx.xxx.xxx Could not connect to Redis at xxx.xxx. ...

  6. ggplot2-设置坐标轴

    本文更新地址:http://blog.csdn.net/tanzuozhev/article/details/51107583 本文在 http://www.cookbook-r.com/Graphs ...

  7. Android NDK r9的配置与使用

    Android NDK 配置: 网上有很多教程,但大部分是旧版本的内容,最新版本的已经改变,为了让大家少走弯路,在这里针对r9的配置进行记录分享. 要玩NDK,你或多或少要用到以下一些东西,所以先做一 ...

  8. django url 中的namespace详解

    [引子] django是一个比较全能的web框架,比如它实现了自己的orm模型来对接不同的数据库.并提供了方便的数据接口:django牛逼的地方 还有许多,如他实现了自己的模板语言,这样我们就能方便的 ...

  9. java正则表达式:验证字符串数字

    正则表达式:^([0-9]+)$ -> ^:匹配以0-9开头,[0-9]:匹配0-9数字,+:匹配至少一个数字,$:匹配以数字结尾 /** *正则表达式:验证字符串数字 *两种方式: *1.pa ...

  10. Variance overview: Invariant, Covariant, Contravariant, 协变,逆变