Linux命令之stty
用途说明
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的更多相关文章
- 别出心裁的Linux命令学习法
别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...
- LINUX命令总结 -------来自 水滴娃娃 的CSDN
LINUX命令总结 标签: LINUX命令总结 2014-01-27 15:54 41039人阅读 评论(1) 收藏 举报 分类: linux(1) 版权声明:本文为博主原创文章,未经博主允许不得 ...
- [Android ] linux命令英文缩写的含义(方便记忆)
du -sh */ reference to : http://blog.chinaunix.net/uid-27164517-id-3299073.html linux常用命令的英文单词缩写 命令缩 ...
- Linux命令(持续更新ing)
*.命令语法: a.在进行参数设定时,通常为“-”号,若为完整参数名称,则输入“--”符号; b.指令太长的时候,可以使用“\”符号使指令连续到下一行; c.各种符号的意义: '' ...
- 【改造Linux命令之rm - 删除文件或目录-】
用途说明 rm命令是常用的命令,用来删除文件或目录(remove files or directories).它也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比 ...
- linux 命令总结(转载)
linux 命令总结(转载) 1. 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2.从Lin ...
- 十年linux命令总结
十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令 ...
- linux命令英文缩写的含义(方便记忆)
命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽子打包 ...
- linux 命令中英文对照,收集
linux 命令中英文对照,收集 linux 命令英文全文 Is Linux CLI case-sensitive? The answer is, yes. If you try to run L ...
随机推荐
- 树莓派进阶之路 (028) - 树莓派SQLite3的安装
MySQL占用内存太大,而SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景 ...
- 消息队列状态:struct msqid_ds
Linux的消息队列(queue)实质上是一个链表, 它有消息队列标识符(queue ID). msgget创建一个新队列或打开一个存在的队列; msgsnd向队列末端添加一条新消息; msgrcv从 ...
- POJ 1862 Stripies (哈夫曼树)
Stripies Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10263 Accepted: 4971 Descrip ...
- HDU 4006 The kth great number (优先队列)
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- 【Java】解析JScrollPane类的使用
在这篇博文中,笔者介绍JScrollPane类的使用,JScrollPane类可以为组件添加滚动条.在这里笔者不会详细介绍该类的方法有哪些,因为在API上已经写得一清二楚了.在这篇博文中,笔者重点介绍 ...
- Spark弹性分布式数据集RDD
RDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现.RDD是Spark最核心 ...
- 简单获取cpu使用率,以及后台运行的问题
做了一个运维平台,有一个功能定时执行一个脚本,获取cpu使用率和内存使用情况到监控平台. 获取cpu使用率使用的是top中的信息.直接运行没有问题.通过nohup xxx.sh & 之后获取不 ...
- 使用swift和rails来实现ios账号系统
前不久看到这样一篇教程User Accounts on iOS with Ruby on Rails and Swift,里面描述了如何使用swift和rails来前后台配合来实现一个简单的类似twi ...
- SharePoint中在线编辑文档
我一直以为只有在Document Library里面的File才会支持在线编辑.直到今天早上我才发现用IE打开List里面的Attachments也是支持在线编辑的,但前提是必须是IE浏览器. 目前正 ...
- MySQL中NULL与空字符串
一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串’ ’是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而”则表示值是存在的,只不过是个 ...