`

我使用过的Linux命令之stty - 显示和修改终端行设置

阅读更多

我使用过的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命令系列总目录

 

0
0
分享到:
评论
1 楼 superlittlefish 2011-07-03  
受用, 特别是 ^H的设置.

相关推荐

    Linux使用stty显示修改终端行设置

    在Linux操作系统中,`stty` 是一个用于配置和查看终端属性的命令行工具。这个命令允许用户修改终端的行为,比如控制字符设置、输入/输出速度、回显功能等。下面我们将详细探讨 `stty` 命令的一些主要参数和用法。 #...

    Linux_stty[定义].pdf

    在Linux操作系统中,`stty`是一个用于配置和查询终端特性的命令行工具。它允许用户修改终端的行为,比如键盘按键的响应方式,以及与输入输出相关的各种设置。在描述中提到的问题是关于在SQLPlus中,使用Backspace键...

    当Linux终端出现混乱时,如何让它恢复正常

    在面对Linux终端显示混乱的问题时,可以通过多种方式尝试解决,包括使用`stty`命令、`reset`命令、检查和修复编码问题、重启终端或系统以及更新终端模拟器。这些方法各有优劣,具体使用哪种取决于具体情况和个人偏好...

    Linux设备编程技术_shelllinux设备编程技术_shell编程_

    通过阅读《Linux设备编程技术.doc》文档,你可以更深入地了解stty命令的用法,包括如何设置特定的终端参数、如何处理特殊字符、如何在不同的终端模式间切换,以及如何在shell脚本中使用stty命令来增强程序的功能。...

    linux笔记.pdf

    stty命令用于改变和打印终端行设置。文档中提到的stty -echoctl和stty -ctlecho用于修改终端的控制字符显示。通常在使用Ctrl+C时,会产生一些不必要的字符,使用这两个参数可以去掉这些字符的尾巴。 2. sysctl命令...

    linux命令及技巧

    ### Linux命令及技巧详解 #### 一、基本命令与技巧 **1. date** - **功能**: 显示或设置系统日期和时间。 - **用法示例**: `date` 查看当前日期时间;`date -s "2023-08-01 10:00:00"` 设置日期时间为2023年8月1日...

    Linux命令手册

    ### Linux命令手册 #### 概述 Linux作为一款开源的操作系统,在软件开发及日常使用中具有极高的灵活性和可定制性。本手册旨在为用户提供一套全面的Linux命令指南,涵盖从基本操作到进阶管理的各种命令,适用于不同...

    linux 常用命令及技巧

    ### Linux常用命令及技巧 #### 一、通用命令 ##### 1. date - **功能**: 显示或设置系统的日期和时间。 - **语法**: `date [选项]` - **示例**: `date`(显示当前日期和时间);`date -s "2023-03-14 12:00:00"`...

    红旗linux基本命令练习

    ### 红旗 Linux 基本命令练习详解 #### 一、系统信息与环境配置命令 1. **uname -a** - **用途**:显示内核版本、操作系统名称等系统信息。 - **示例**:`uname -a` 2. **ls -al** - **用途**:列出当前目录下...

    linux系统命令及VI用法

    ### Linux系统命令及VI编辑器使用详解 #### Linux系统常用命令 Linux作为一款强大的开源操作系统,在服务器领域占有举足轻重的地位。对于Linux用户来说,掌握一些常用的命令是非常必要的,这些命令可以帮助用户高效...

    linux常用命令及技巧

    在深入探讨Linux常用命令及其技巧...以上只是Linux命令和技巧的冰山一角,但已经足以帮助用户在日常使用中进行基本的管理和操作。随着经验的积累,用户会逐渐掌握更多复杂的命令和技巧,从而更加高效地利用Linux系统。

    如何有效利用linux命令

    ### 如何有效利用Linux命令:提高工作效率的关键技巧 在日常工作中,熟练掌握Linux命令行能够极大地提高工作效率。本文将深入探讨几种高效的Linux命令行使用技巧,包括如何在命令历史中快速查找所需命令、如何在...

    linux常用命令与技巧

    本文将根据提供的部分内容,深入解析并扩展一系列常用的Linux命令及其应用技巧,帮助读者更好地理解和运用这些命令。 #### 1. 基础命令 **1.1 date** - **功能**: 显示或设置系统的日期和时间。 - **用法示例**: `...

    linux菜鸟进阶系列之Linux常用命令(新手必看).pdf

    Linux是世界上最广泛使用的开源操作系统之一,对于初学者来说,掌握一些基本的Linux命令是至关重要的。这个"Linux菜鸟进阶系列之Linux常用命令(新手必看)"文档详细介绍了多个常用的Linux命令,帮助新手快速上手。 ...

    Linux 系统命令精通指南

    6. **Stty**:显示和修改终端设置,如波特率、行数、列数、特殊字符映射等。 这些命令在日常的系统维护和故障排查中起着关键作用。学习和熟练掌握这些基础命令是成为一个合格的Linux用户和管理员的必备技能。通过...

Global site tag (gtag.js) - Google Analytics