技术解析

用 ANSI Escape Code 改变 Shell 文字样式
0
2021-06-21 04:15:59
idczone

改变 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,只是我觉得调用函数还是有点慢,不如直接调用变量。写死变量可能会造成命名冲突,于是做成一个生成器。


我 zsh 下直接可以用
echo -e "this is ${fg[red]}red${reset_color}"

恩,只不过我不是 zsh 用户…

zsh 好用,咧嘴一笑

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服