首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用彩色代码处理bash输出

用彩色代码处理bash输出
EN

Stack Overflow用户
提问于 2015-09-27 01:19:09
回答 2查看 169关注 0票数 0

我有一个Mac (CodeRunner),它以登录模式执行脚本,并在窗口中显示输出。在错误情况下,它返回带有转义字符的代码,以使输出难以读取。

有办法处理颜色代码吗?是否有滤镜可移除色码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-29 18:53:23

在Mac中,我使用了斯特雷德库。

代码语言:javascript
运行
复制
#export DYLD_INSERT_LIBRARIES="/LOCATION_OF_THE_LIB/libstderred.dylib${DYLD_INSERT_LIBRARIES:+:$DYLD_INSERT_LIBRARIES}"

删除此库设置将显示没有代码的字符串。

票数 1
EN

Stack Overflow用户

发布于 2015-09-27 01:52:20

如果我理解您的问题,在bash (或任何支持它们的终端)中控制颜色的最简单方法是使用ANSI转义序列。示例:

代码语言:javascript
运行
复制
#!/bin/bash

blue='\e[0;34m'         # ${blue}
green='\e[0;32m'        # ${green}
nc='\e[0m'              # ${nc} (no color - disables previous color selection)

printf "${blue}This text is blue, ${green}this is green${nc}\n"

exit 0

网站上有一些ANSI序列的完整参考资料,但对于基本颜色,以下内容通常就足够了:

代码语言:javascript
运行
复制
black='\e[0;30m'        # ${black}
blue='\e[0;34m'         # ${blue}
green='\e[0;32m'        # ${green}
cyan='\e[0;36m'         # ${cyan}
red='\e[0;31m'          # ${red}
purple='\e[0;35m'       # ${purple}
brown='\e[0;33m'        # ${brown}
lightgray='\e[0;37m'    # ${lightgray}
darkgray='\e[1;30m'     # ${darkgray}
lightblue='\e[1;34m'    # ${lightblue}
lightgreen='\e[1;32m'   # ${lightgreen}
lightcyan='\e[1;36m'    # ${lightcyan}
lightred='\e[1;31m'     # ${lightred}
lightpurple='\e[1;35m'  # ${lightpurple}
yellow='\e[1;33m'       # ${yellow}
white='\e[1;37m'        # ${white}
nc='\e[0m'              # ${nc} (no color - disables previous color selection)

注意:总是用${nc} ('\e[0m')将字符串末尾的颜色重置为默认颜色,以防止脚本完成后颜色的延续。最后,如果使用echo,则必须使用echo -e来处理ANSI代码。

Note2:由于您看到的是代码而不是颜色,所以您有几种可能性:(1)您使用echo而没有-e选项来允许正确地解释代码(或类似的内容);或者(2)您使用的终端缺乏颜色功能(尽管这是值得怀疑的,因为几乎所有现代终端都是基于VT的,并提供默认的颜色处理)。

正如下面的注释所建议的那样,您也可以用tput设置颜色(背景是setab #,前景是setaf # )。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32803643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档