shell基础知识4--别名、采集终端信息
阅读原文时间:2023年07月14日阅读:1

别名就是一种便捷方式,可以为用户省去输入一长串命令序列的麻烦。下面我们会看到如何

使用 alias 命令创建别名。

直接使用alias就是显示当前有哪些别名,否则就是创建别名

[root@dns-node2 ~]# alias   # 显示别名
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'

[root@dns-node2 ~]# alias mycmd='ls /root'  # 创建别名
[root@dns-node2 ~]# mycmd
anaconda-ks.cfg  Desktop  Documents  Downloads  install.log

在命令行创建别名是暂时的,一旦关闭当前这个终端,设置过的别名就失效了,为了永久生效,我们需要导入到/etc/profile 或者~/.bashrc下

[root@dns-node2 ~]# echo "alias mycmd='ls /root'" >>/root/.bashrc

想要破解别名的话,就使用\来转义

举个例子:

[root@dns-node2 ~]# \mycmd
-bash: mycmd: command not found
[root@dns-node2 ~]# \ls  # 非别名是无效的即使加上\
anaconda-ks.cfg  Desktop  Documents  Downloads    install.log  install.log.syslog  Music  ossec-hids-2.8.3  ossec-hids-2.8.3.tar.gz  Pictures  Public  Templates  Videos
[root@dns-node2 ~]# \ll
-bash: ll: command not found

采集终端信息

编写命令行shell脚本时,总是免不了处理当前终端的相关信息,比如行数、列数、光标位置、

遮盖的密码字段等。

tput 和 stty 是两款不错的工具

tput

1.获取终端的行数和列数:

tput cols
tput lines

2.打印出当前的终端名:

tput longname

3.将光标移动到坐标(100,100)处:

tput cup 100 100

4.设置终端背景色:

tput setb n

其中, n 可以在0到7之间取值。

5.设置终端前景色:

tput setf n

其中, n 可以在0到7之间取值。

6.设置文本样式为粗体:

tput bold

7.设置下划线的起止:

tput smul
tput rmul

8.删除从当前光标位置到行尾的所有内容:

tput ed

9.输入密码时,脚本不应该显示输入内容。在下面的例子中,我们将看到如何使用 stty 来

实现这一需求:

stty -echo  # 此时隐藏所有的输入
stty echo   # 显示所有的

9.1.具体参考的例子:

#!/bin/sh
#Filename: password.sh
echo -e "Enter password: "
#  在读取密码前禁止回显
stty -echo
read password
#  重新允许回显
stty echo
echo
echo Password read
有趣的倒计时
#!/bin/bash
#文件名: sleep.sh
echo 倒计时10秒
echo
tput sc    # 存储光标的位置
# 循环40秒
for count in {10..0}
do
    tput rc   # 恢复之前存储的光标的位置
    tput ed   # 清除从当前光标位置到行尾之间的所有内容,行被清空之后,脚本就可以显示出新的值。
    echo -n "倒计时 $count"
    sleep 1
done