首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在从交互式shell调用时输出彩色脚本

只在从交互式shell调用时输出彩色脚本
EN

Unix & Linux用户
提问于 2012-12-29 21:44:53
回答 1查看 2.5K关注 0票数 5

我制作了一个bash脚本,生成彩色输出。当从交互式shell调用脚本时,颜色是很好的。但是,如果在另一个脚本中处理输出,或者通过管道传递输出,则不应该对输出进行着色(我认为)。

这通常是怎么处理的?我应该提供一个选项来打开/关闭有色输出,还是有一种方法可以在脚本中自动检测到这一点?最好它能自动工作,我只需要最少的代码输出有色/非彩色,这取决于脚本调用.

自动检测的一个问题似乎是脚本总是运行非交互式的,所以我必须知道父shell的交互状态。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2012-12-30 00:02:47

支持颜色输出(如grepls)的unix应用程序通常有命令行选项以及可能的自动检测。

看着man ls我们看到

代码语言:javascript
复制
--color[=WHEN]
              colorize the output.  WHEN defaults to `always' or can be `never' or `auto'.  More info below

因此,默认情况下ls将始终使用颜色,注意auto选项。

man grep显示出类似的情况

代码语言:javascript
复制
 --color[=WHEN], --colour[=WHEN]
              <snipped> WHEN is never, always, or auto.

如果启用了auto选项(对于您的应用程序来说,这个选项可能是默认的),那么下面的答案(由吉尔斯建议)可能是您正在寻找的https://unix.stackexchange.com/a/10065/4635

也就是说,如果您的输出是一个终端,并且支持颜色,而且用户还没有禁用它,那么您应该使用颜色。当然,使用alwaysnever的用户跳过此检查。

我发现如果程序有一个--color=always,即使它们支持自动检测,也是有用的,因为这意味着我可以强制使用颜色‘当我更清楚的时候’(假设我的目的地不是终端,但我知道它支持颜色)。在某些系统上,我为lsls --color=always提供了一个别名。

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

https://unix.stackexchange.com/questions/59802

复制
相关文章

相似问题

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