我使用过的Linux命令之stty - 显示和修改终端行设置
本文链接:http://codingstandards.iteye.com/blog/826924
(转载请注明出处)
用途说明
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。有时候终端突然僵死了,可能是不小心按了Ctrl+S的缘故,因为我们习惯性的按Ctrl+S来保存文件。
susp : terminal stop当前程序,默认为Ctrl+Z。这样当前进程就会变成后台进程了。
werase:删除最后一个单词,默认为Ctrl+W。
stty命令还有一些其他用法,如:
stty -echo 关闭回显。比如在脚本中用于输入密码时。
stty echo 打开回显。
输入密码的脚本片段:stty -echo; read var; stty echo; 或 read -s var
使用示例
示例一 打印终端行设置
[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
问题思考
相关资料
【1】江枫渔火愁对面 使用stty修改终端设置
【2】飞诺网 stty使用
【3】Linux宝库 STTY使用方法
【4】英文资料 Linux解密 The TTY demystified
返回 我使用过的Linux命令系列总目录
分享到:
相关推荐
在Linux操作系统中,`stty` 是一个用于配置和查看终端属性的命令行工具。这个命令允许用户修改终端的行为,比如控制字符设置、输入/输出速度、回显功能等。下面我们将详细探讨 `stty` 命令的一些主要参数和用法。 #...
在Linux操作系统中,`stty`是一个用于配置和查询终端特性的命令行工具。它允许用户修改终端的行为,比如键盘按键的响应方式,以及与输入输出相关的各种设置。在描述中提到的问题是关于在SQLPlus中,使用Backspace键...
在面对Linux终端显示混乱的问题时,可以通过多种方式尝试解决,包括使用`stty`命令、`reset`命令、检查和修复编码问题、重启终端或系统以及更新终端模拟器。这些方法各有优劣,具体使用哪种取决于具体情况和个人偏好...
通过阅读《Linux设备编程技术.doc》文档,你可以更深入地了解stty命令的用法,包括如何设置特定的终端参数、如何处理特殊字符、如何在不同的终端模式间切换,以及如何在shell脚本中使用stty命令来增强程序的功能。...
stty命令用于改变和打印终端行设置。文档中提到的stty -echoctl和stty -ctlecho用于修改终端的控制字符显示。通常在使用Ctrl+C时,会产生一些不必要的字符,使用这两个参数可以去掉这些字符的尾巴。 2. sysctl命令...
### Linux命令及技巧详解 #### 一、基本命令与技巧 **1. date** - **功能**: 显示或设置系统日期和时间。 - **用法示例**: `date` 查看当前日期时间;`date -s "2023-08-01 10:00:00"` 设置日期时间为2023年8月1日...
### Linux命令手册 #### 概述 Linux作为一款开源的操作系统,在软件开发及日常使用中具有极高的灵活性和可定制性。本手册旨在为用户提供一套全面的Linux命令指南,涵盖从基本操作到进阶管理的各种命令,适用于不同...
### Linux常用命令及技巧 #### 一、通用命令 ##### 1. date - **功能**: 显示或设置系统的日期和时间。 - **语法**: `date [选项]` - **示例**: `date`(显示当前日期和时间);`date -s "2023-03-14 12:00:00"`...
### 红旗 Linux 基本命令练习详解 #### 一、系统信息与环境配置命令 1. **uname -a** - **用途**:显示内核版本、操作系统名称等系统信息。 - **示例**:`uname -a` 2. **ls -al** - **用途**:列出当前目录下...
### Linux系统命令及VI编辑器使用详解 #### Linux系统常用命令 Linux作为一款强大的开源操作系统,在服务器领域占有举足轻重的地位。对于Linux用户来说,掌握一些常用的命令是非常必要的,这些命令可以帮助用户高效...
在深入探讨Linux常用命令及其技巧...以上只是Linux命令和技巧的冰山一角,但已经足以帮助用户在日常使用中进行基本的管理和操作。随着经验的积累,用户会逐渐掌握更多复杂的命令和技巧,从而更加高效地利用Linux系统。
### 如何有效利用Linux命令:提高工作效率的关键技巧 在日常工作中,熟练掌握Linux命令行能够极大地提高工作效率。本文将深入探讨几种高效的Linux命令行使用技巧,包括如何在命令历史中快速查找所需命令、如何在...
本文将根据提供的部分内容,深入解析并扩展一系列常用的Linux命令及其应用技巧,帮助读者更好地理解和运用这些命令。 #### 1. 基础命令 **1.1 date** - **功能**: 显示或设置系统的日期和时间。 - **用法示例**: `...
Linux是世界上最广泛使用的开源操作系统之一,对于初学者来说,掌握一些基本的Linux命令是至关重要的。这个"Linux菜鸟进阶系列之Linux常用命令(新手必看)"文档详细介绍了多个常用的Linux命令,帮助新手快速上手。 ...
6. **Stty**:显示和修改终端设置,如波特率、行数、列数、特殊字符映射等。 这些命令在日常的系统维护和故障排查中起着关键作用。学习和熟练掌握这些基础命令是成为一个合格的Linux用户和管理员的必备技能。通过...