Echo的颜色输出与光标定位
使用-e选项:开启对反斜线\的转义。
echo -e "<转义符号>[内容]"
因为脚本中的echo语句会影响到命令行的输出格式,所以一般在输出完毕后都会追加\033[0m清除格式。
echo -e "<转义符号>[内容]\033[0m"
注意:转义符号并不是echo独有的,而是在所有支持转义的平台上都可以使用的,比如java。
常用的转义符号如下:
| 转义符号 | 转义说明 |
|---|---|
| \033[0m | 关闭所有属性 |
| \033[1m | 设置高亮度 |
| \033[4m | 下划线 |
| \033[5m | 闪烁 |
| \033[7m | 反显 |
| \033[30m — \033[37m | 设置前景色 |
| \033[40m — \033[47m | 设置背景色 |
| \033[nA | 光标上移n行 |
| \033[nB | 光标下移n行 |
| \033[nC | 光标右移n列 |
| \033[nD | 光标左移n列 |
| \033[y;xH | 设置光标位置;是相对于当前显示的屏幕来定位的 |
| \033[2J | 清屏 |
| \033[K | 清除从光标到行尾的内容 |
| \033[s | 保存光标位置 |
| \033[u | 恢复光标位置 |
| \033[?25l | 隐藏光标(小写的L) |
| \033[?25h | 显示光标 |
\033表示启动一个转义序列,[表示定义开始。
时钟小例子:
#!/bin/bash
n=$1
while [[ $n > 0 ]]
do
date=`date +'%Y-%m-%d %H:%M:%S'`
# first implemention
echo -e -n "\033[?25l\033[31m${date}\033[0m\r"
# second implemention
#echo -e "\033[31m${date}\033[0m"
#echo -e "\033[2A\033[?25l"
sleep 1
((n--))
done
echo -e "\033[?25h"