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"