彩色外壳脚本输出库 [英] Colored shell script output library

查看:134
本文介绍了彩色外壳脚本输出库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种确定的方法来构建生成彩色输出的shell脚本.

I am looking for a definitive way to build shell scripts that generates colored output.

不幸的是,我很难找到合适的库或好的技术来做到这一点.我发现了很多有用但简单的示例,例如.到目前为止,我发现的最全面的指南是这本指南.

Unfortunately I am having a hard time finding an appropriate lib or good technique for doing this. I found a lot of helpful but simple examples like this. Also the most comprehensive guide that I found until now is this one.

在我开始编写自己的库之前,我想检查是否有人已经编写了该库

Before I start writing my own library, I want to check if anyone already wrote it

如果您的解决方案不适合下面的观察结果,那就不是问题.我也想读一下,这样可以帮助我决定编写自己的解决方案

If your solution does not fit into the observations below thats not a problem. I would like also to read it so it can help me out if decide to write my own solution

我主要的关注/观察:

  • 需要安全.想要避免垃圾输出,因为并非所有终端或寻呼机/编辑器(如更少,更多,vim等)都支持彩色输出或更多样式的输出(粗体,闪烁,斜体等)
  • 需要简单易读.直接使用 ANSI转义代码很可怕:echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'
  • 需要让我能够访问前景和背景文本的整个调色板和样式.我发现的大多数示例仅将基本颜色仅用于前景文本.
  • 最好只使用简单的命令,例如bash或内置在大多数操作系统中的命令和/或常见命令中的更简单的shell.例如,我可以使用 colorize ,但是我需要使用ruby(没关系)并安装了colorize gem(不好)
  • Tput 似乎不错选项,因为它可以很好地操纵shell游标,但它更简单/灵活性更低
  • Needs to be safe. Want to avoid garbage output as not all terminals or pagers/editors (like less, more, vim, and so on) support colored output or more styled output (bold, blinked, italic, etc)
  • Needs to be easy and readable. Using ANSI escape codes directly is horrible: echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'
  • Needs to give me access to the whole color palette and styles for foreground and background text. Most of the examples I found uses only the basic colors for foreground text only.
  • Its preferable to use only simple commands like bash or simpler shells built in commands and/or common commands that can be found on most operating systems. For instance I can use colorize but I would need ruby (that's somewhat ok) and the colorize gem installed (not ok)
  • Tput seems to be a good option as it can manipulate the shell cursor quite well, but it is somewhat simpler/less flexible

在对终端控制和输出格式进行了一些研究之后,我正在编写此要实现这一目标的要旨.到目前为止,一切都很好

After some research on terminal control and output formatting, I am writing this gist that tries to accomplish this. So far it is doing quite well

推荐答案

以下是我 dotfiles 应该可以做你想要的

Here is an modified snippet from my dotfiles that should do what you want

RCol='\e[0m'    # Text Reset

# Regular           Bold                Underline           High Intensity      BoldHigh Intens     Background          High Intensity Backgrounds
Bla='\e[0;30m';     BBla='\e[1;30m';    UBla='\e[4;30m';    IBla='\e[0;90m';    BIBla='\e[1;90m';   On_Bla='\e[40m';    On_IBla='\e[0;100m';
Red='\e[0;31m';     BRed='\e[1;31m';    URed='\e[4;31m';    IRed='\e[0;91m';    BIRed='\e[1;91m';   On_Red='\e[41m';    On_IRed='\e[0;101m';
Gre='\e[0;32m';     BGre='\e[1;32m';    UGre='\e[4;32m';    IGre='\e[0;92m';    BIGre='\e[1;92m';   On_Gre='\e[42m';    On_IGre='\e[0;102m';
Yel='\e[0;33m';     BYel='\e[1;33m';    UYel='\e[4;33m';    IYel='\e[0;93m';    BIYel='\e[1;93m';   On_Yel='\e[43m';    On_IYel='\e[0;103m';
Blu='\e[0;34m';     BBlu='\e[1;34m';    UBlu='\e[4;34m';    IBlu='\e[0;94m';    BIBlu='\e[1;94m';   On_Blu='\e[44m';    On_IBlu='\e[0;104m';
Pur='\e[0;35m';     BPur='\e[1;35m';    UPur='\e[4;35m';    IPur='\e[0;95m';    BIPur='\e[1;95m';   On_Pur='\e[45m';    On_IPur='\e[0;105m';
Cya='\e[0;36m';     BCya='\e[1;36m';    UCya='\e[4;36m';    ICya='\e[0;96m';    BICya='\e[1;96m';   On_Cya='\e[46m';    On_ICya='\e[0;106m';
Whi='\e[0;37m';     BWhi='\e[1;37m';    UWhi='\e[4;37m';    IWhi='\e[0;97m';    BIWhi='\e[1;97m';   On_Whi='\e[47m';    On_IWhi='\e[0;107m';

然后您就可以echo -e "${Blu}blue ${Red}red ${RCol}etc...."

这篇关于彩色外壳脚本输出库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆