shell格式化输出(echo命令以及颜色代码)和read输入
一个赏心悦目的界面是一个程序给用户的第一个映像,好的界面可以让用户更加容易上手使用。windows之所以能被个人用户喜欢就是因为它的界面更加容易和用户交互,只要用户能识别文字,懂得点击鼠标就能操作电脑;而linux之所以无法被广大个人用户使用的瓶颈就是图形界面无法完成所有工作,需要命令配合才可以,这就把非专业用户拒之门外了,想用就必须去学习命令。
我们在使用shell写一个程序的时候,如果想让广大的用户都能使用,都能快速上手,那么好的交互界面就太重要了。我们可以使用多种方法开发好的、易交互的界面,常用的工具有:dialog、echo、printf等命令。
主要给大家介绍一个最简单易用的命令:echo
1,echo命令介绍
功能:将内容输出到默认设备
echo命令的功能是在显示器上显示一段文字一般起到一个提示的作用!
语法:echo [-ne] [字符串]
(默认输入以后自动换行)
-n:不要换行
-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出!
- \a 发出警告声;
- \b 删除前一个字符;
- \c 最后不加上换行符号;
- \f 换行但光标仍旧停留在原来的位置;
- \n是换行且光标移至行首;
- \r 光标移至行首,但不换行;
- \t是插入tab空格
- \v 与\f相同;
- \\ 插入\字符;
- \nnn 插入nnn(八进制)所代表的ASCII字符
[root@CentOs ~]# echo -e "\n\n\n" (\n是换行)
[root@CentOs ~]# echo -e "\t\t\t\t heitui" (\t是插入tab空格)
heitui
[root@CentOs ~]#
2,颜色代码
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
例如: echo -e “\033[41;36m something here \033[0m”
其中41的位置代表底色, 36m的位置是代表字的颜色
1、字背景颜色和文字颜色之间是英文的
2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配
例
echo -e “\033[31m 红色字 \033[0m”
echo -e “\033[34m 黄色字 \033[0m”
echo -e “\033[41;33m 红底黄字 \033[0m”
echo -e “\033[41;37m 红底白字 \033[0m”
字颜色:30—–37
echo -e “\033[30m 黑色字 \033[0m”
echo -e “\033[31m 红色字 \033[0m”
echo -e “\033[32m 绿色字 \033[0m”
echo -e “\033[33m 黄色字 \033[0m”
echo -e “\033[34m 蓝色字 \033[0m”
echo -e “\033[35m 紫色字 \033[0m”
echo -e “\033[36m 天蓝字 \033[0m”
echo -e “\033[37m 白色字 \033[0m”
字背景颜色范围:40—–47
echo -e “\033[40;37m 黑底白字 \033[0m”
echo -e “\033[41;37m 红底白字 \033[0m”
echo -e “\033[42;37m 绿底白字 \033[0m”
echo -e “\033[43;37m 黄底白字 \033[0m”
echo -e “\033[44;37m 蓝底白字 \033[0m”
echo -e “\033[45;37m 紫底白字 \033[0m”
echo -e “\033[46;37m 天蓝底白字 \033[0m”
echo -e “\033[47;30m 白底黑字 \033[0m”
最后面控制选项说明
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m — \33[37m
设置前景色
\033[40m — \33[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\33[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
3,read命令
当脚本执行到read时,不再执行,等待用户的输入。回车符代表输入结束
read命令选项:
-p:打印信息
-s(不回显):不显示输入的内容
-t5(限定时间):5秒后不输入会自动退出
-n6(输入字符个数):只能输入6位数字
解释:
acc和pw相当于一个定位,把用户输入的指令存在acc和pw中,之后使用$把指令取出!
实战:模拟一个centos的登录页面
#!/bin/bash
clear
echo "Centos Linux 7 (Core)"
echo -e "kernel `uname -r` an `uname -m\n`"
echo -n -e "$HOSTNAME Login: "
read acc
read -s -p "Password:"
read pw
解释:
(
uname -a 显示系统信息:
Linux CentOs 3.10.0-1160.59.1.el7.x86_64 #1 SMP Wed Feb 23 16:47:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linu
uname -m 显示计算机类型:
x86_64
uname -n 显示计算机名:
CentOs
uname -r 显示操作系统发行编号:
3.10.0-1160.59.1.el7.x86_64
uname -v 显示系统版本与时间:
#1 SMP Wed Feb 23 16:47:03 UTC 202
uname -s 显示操作系统名称:
Linux
)