之前我们探讨了Linux中的tty,tty命令的主要功能是显示当前使用的终端名称。
如果我们想进一步对tty进行设置,就要用到stty。
stty的功能:显示和修改终端特性(Print or change terminal characteristics)。
1 stty -a:显示所有当前注册终端的所有设置情况
关于tty的参数和选项很多,我们着重研究一些比较常用的。
2.stty size:打印出终端的行数(rows)和列数(columns)
返回的结果中有两个数字,其中:
3. stty rows N:设置行数为N;stty columns M:设置列数为M
我们将行数设置为5,列数设置为75。
4 stty eof "string" :改变文件结束符eof
之前在
Linux shell编程学习笔记14:编写和运行第一个shell脚本hello world!
中,我们曾经尝试 使用cp命令 和 /dev/stdin 来创建脚本文件hello.sh,但是在执行脚本文件时会遇到 问题:
出现这个问题的原因是Linux 中 tty默认的文件结束符eof(end of file)是Ctrl+D,而不是DOS中的Ctrl+Z。
现在我们要创建一个脚本文件a.sh,其内容如下:
我们先在bash中用Ctrl+D来试试:
当我们在输入脚本文件a.sh的内容echo hello world!后按Ctrl+D结束,可以顺利执行脚本文件并看到结果。
- 需要注意的是,我们按下Ctrl+D在屏幕上是没有显示的。
如果我们想像DOS一样使用Ctrl+Z做为eof,那们可以使用stty命令来设置:
我们在bash中测试看看:
可以看到,我们先修改eof为Ctrl+Z,然后输入脚本内容并按Ctrl+Z结束,再执行脚本文件,脚本文件可以顺利执行。
5 stty -echo: 禁止回显,stty echo:打开回显
有时我们在输入信息,比如密码时,不希望信息显示出来,那么我们可以使用stty来进行设置。
例如,我们要执行以下命令序列 :
echo -n Enter your password: # 提示用户输入密码,-n选项的作用是显示信息后不换行
stty -echo # 禁止回显
read p # 将用户输入的密码保存到变量p中
stty echo # 打开回显
echo -e "\nyour password is: $p" # 显示用户输入的密码,-e选项的作用是对转义字符(如\n)进行处理
其中每行命令后面#的内容为注释,说明命令的功能。
在上面的例子中,我们输入了密码abc,但在输入的过程中并没有回显出来,而是用最后一条命令显示。
6.stty olcuc:小写字母自动转换为大写字母; stty -olcuc:小写字母不自动转换为大写字母
我们可以通过 执行以下命令序列来测试。
stty olcuc # 小写字母自动转换为大写字母
echo abcABC # 显示字符串abcABC
stty -olcuc # 小写字母不自动转换为大写字母
echo abcABC # 显示字符串abcABC
可以看到,当我们执行命令 stty olcuc 后,命令 echo abcABC 本应输出的abcABC 变成了 ABCABC,当我们执行命令 stty -olcuc 后, 命令 echo abcABC 输出的才是abcABC。
- 需要注意的是,这条命令也会影响到终端命令提示符的显示。
在 执行命令 stty olcuc 前,终端命令提示符中的字母是小写的, 执行命令 stty olcuc 后,终端命令提示符中的字母都显示为大写,在执行命令 stty -olcuc 后, 终端命令提示符显示才恢复正常。
7 .stty --help:查看stty命令帮助信息
帮助信息的中文译文