改变 Shell 文字样式,本质上就是用 ANSI Escape Code 来改变终端模拟器的行为,可以做到很多事,比如改变文字颜色,文字闪烁,改变鼠标位置,清屏等等。比如执行 echo -e '\e[2J' 来清屏,或者 echo -e '\e[2J\e[u' 清屏并重置鼠标位置(跟 ctrl-l 同样效果)。这也跟 tput 命令是异曲同工的。
看了一些文章,还是挺有趣的,分享给大家。
- Wikipedia - ANSI escape code
- Stackoverflow - List of ANSI color escape sequences
- FLOZz' MISC » bash:tip_colors_and_formatting
- ASCII Table - ANSI Escape sequences
- ansi codes
- vt100.net - ANSI Control Functions Summary
- JAFROG'S DEV BLOG - Colors In Terminal
然后我写了一个简单的生成这些变量的命令行脚本: https://github.com/adoyle-h/shell-general-colors
其实也有类似的工具 ansi,只是我觉得调用函数还是有点慢,不如直接调用变量。写死变量可能会造成命名冲突,于是做成一个生成器。