概述
tty
显示当前用户终端的名字. 注意每一个单独的xterm 窗口都被算作一个不同的终端.
bash$ tty
/dev/pts/1
stty
stty命令修改终端命令行的相关设置.
语法
stty (选项)(参数)
选项
-a: 以容易阅读的方式打印当前的所有配置.
-g: 以stty可读方式打印当前的所有配置.
参数
终端设置:指定终端命令行的设置选项.
实例
# 在命令行下,禁止输出大写的方法:
stty inclc # 开启
stty -inclc # 关闭
# 在命令行下禁止输出小写:
stty olcuc # 开启
stty -olcuc # 关闭
# 打印出终端的行数和列数:
stty size
# 改变Ctrl+D的方法:
stty eof "string"
# 系统默认是Ctrl+D来表示文件的结束,而通过这种方法,可以改变!
# 屏蔽显示.
stty -echo # 禁止回显
stty echo # 打开回显
# 测试方法:
stty -echo; read; stty echo; read
# 忽略回车符:
stty igncr # 开启
stty -igncr # 恢复
# 定时输入:
timeout_read()
{
timeout=$1
old_stty_settings=`stty -g`
stty -icanon min 0 time 100
eval read varname
stty "$old_stty_settings"
}
# 更简单的方法就是利用read命令的-t选项:
read -t 10 varname
例:设置一个擦除字符.
#!/bin/bash
#erase.sh: 在读取输入时使用"stty"来设置一个擦除字符.
echo -n "What's your name? "
read name # 试试使用退格键来删除输入的字符.
echo "Your name is $name."
stty erase '#' # 将"hashmark"(#)设置为退格字符.
echo -n "what's your name? "
read name # 使用#来删除最后键入的字符.
echo "Your name is $name."
stty erase '^?' # 警告:即使在脚本退出后,新的键入值还是保持着这个设置
#+可以使用stty erase '^#'进行恢复.
exit 0
例:保护密码:关闭终端对于密码的echo.
#!/bin/bash
# secret_pw.sh: 保护密码不被显示.
echo
echo -n "Enter password: "
read passwd
echo
echo "Password is $passwd."
echo && echo # 在一个"与列表"中产生两个换行.
stty -echo # 关闭屏幕的echo.
echo -n "Enter password: "
read passwd
echo
echo "Password is $passwd."
echo
stty echo # 回复屏幕的echo.
exit 0
例:按键检测.
#!/bin/bash
# keypress.sh: 检测用户按键("hot keys").
echo
old_tty_settings=$(stty -g) # 保持老的设置.
stty -icanon
keypress=$(head -c1) # 或者使用$(dd bs=1 count=1 2>/dev/null)
# head -c1 是数字1不是字母l. head -c1 ???
echo
echo "Key pressed was "$keypress" "
echo
stty "$old_tty_settings" # 恢复原来的设置.
exit 0
setterm
设置特定的终端属性. 这个命令将向它所在终端的 stdout 发送一个字符串, 这个字符串将修改终端的行为.
bash$ setterm -cursor off
bash$
bash$ setterm -cursor on
bash$_
setterm命令可以放在脚本中用来修改写入到 stdout 上的文本的外观.
tset
显示或初始化终端设置. 可以把它看成一个功能比较弱的stty命令.
tset -r
Terminal type is xterm-256color.
setserial
设置或者显示串口参数. 这个脚本只能被root用户来运行, 并且通常都在系统安装脚本中使用.
getty, agetty
一个终端的初始化过程通常都是使用getty或agetty来建立, 这样才能让用户登录. 这些命令并不用在用户的shell脚本中. 它们的行为与stty很相似.
mesg
mesg命令用于设置当前终端的写权限,即是否让其他用户向本终端发信息 . 将mesg设置y时,其他用户可利用write命令将信息直接显示在您的屏幕上.
i 当你正在编写文本文件的时候, 在文本中间突然来了一个莫名其妙的消息,你会觉得非常烦人. 在多用户的网络环境下, 如果你不想被打断, 那么你必须关闭其他用户对你终端的写权限.
语法
mesg (参数)
参数
y/n: y表示运行当前终端写信息,n表示禁止向当前终端写信息.
实例
root# mesg y # 允许系统用户将信息直接显示在你的屏幕上.
root# mesg n # 不允许系统用户将信息直接显示在你的屏幕上.
wall
wall命令用于向系统当前所有打开的终端上输出信息 . 通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户.(比如:当系统有问题的时候, 管理可以警告系统上的所有人暂时离开)
! 如果某个特定终端使用mesg来禁止了写权限, 那么wall将不会给它发消息.
语法
wall (参数)
参数
消息: 指定广播消息.
实例
root# wall this is a test line
Broadcast message from root (pts/1) (Fri Dec 20 11:36:51 2013):
this is a test line
最后
以上就是苹果网络为你收集整理的系统与管理命令--终端类命令的全部内容,希望文章能够帮你解决系统与管理命令--终端类命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复