通用着色剂

grc的Python项目详细描述


通用着色剂注:灵感来自http://kassiopeia.juls.savba.sk/~garabik/software/grc.html

``grc``允许对外壳输出进行着色(甚至转换)。


arabik/software/grc.html

虽然原始的"grc"对于子进程来说更聪明一些,但这次重写的重点是易于使用(包括"安装"、"配置"和"源代码访问")。``
----

``sed``和``awk``是非常强大的工具,可以做
``grc``所做的事情。它们在大型河流上的表现肯定会更好。毕竟这是他们的预期用途。*但是*,它们的脚本都使用了一种古老而神秘的语法
。此外,如果您想用这些来给输出着色,则需要使用ansi转义序列。`` grc``旨在通过使用更可读的'configuration``语法和隐藏
ansi转义序列来简化这个过程。

include::install.rst


用法
=


注意:这是最受支持的操作模式。


>简介
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
*只有发送到"grc"的流会受到影响。
*没有已知的副作用

**缺点**
*因为"grc"只看到流,所以它无法确定发出流的应用程序是什么。必须手动指定配置。

注意:如果您不关心缺点,并且懒于输入,请使用此选项。


类型
*可以使用子进程应用程序名称自动检测配置。

**缺点**
*在
tty/pty上生成子进程并与其io交互是非常重要的。为了简化代码,``grc``使用``pexpect``来执行io
魔术。
*``stdout``和``stderr``子进程组合成一个
流,然后在grc的``stdout``上发出。[1]
*输出不能使用所有可用的终端宽度。[1]



>配置
grc``按以下顺序搜索配置文件的三个位置:






`grc` ` ` ~/.grc/conf.d/<;confname>;.yml` ` ` `



>





=` ` ` ` ` ` ` ` ` ` ` ` ` ` `
br/>=/usr/sha/grc/conf/conf.d/<;confname>;>;` ` ` ` ` YML``

第一个垫子ching配置文件获胜。这意味着,您可以使用自己的混合物覆盖系统范围内的任何配置。

与`.ini``和``json``文件
(两者都包含在python stdlib中)相比,这种语法更适合于
此应用程序的要求。


基本结构
----


*配置文件被分成几个部分(上下文)。它必须至少有
"根"上下文。
*每个上下文都有一个规则列表。如果一行包含给定的正则表达式,则会触发这些规则。第一个匹配规则获胜。
*该行随后将被替换为包含在``replace`
值中的字符串。如果你用了抓捕格罗,你可以用回裁判常规表达式中的ups。颜色可以用`${color_name}``来表示。您应该在使用颜色后始终插入`${normal}``以重置为终端的默认值。
*规则可能会定义,该处理不应该*停止使用``continue:
yes``标志。在这种情况下,同一行也将与下面的
规则匹配。
*此外,规则可能会将另一个上下文"推"到堆栈上。如果这是
情况,则将处理规则,并将以下所有行与由"push"值命名的上下文中包含的规则匹配

*如果在非根上下文中,规则可以使用"pop:yes"操作从
堆栈中"弹出"当前上下文。

有关详细信息,请参见"配置引用"。

此部分必须存在!
根目录:
-匹配:'^(运行)(.*)
演示替换/和/着色
替换:'***${green}\1${normal}\2'

-匹配:'^(写入)(.*)
替换:'>>>;${yellow}\1${normal}\2'

-匹配:'^(重新(正在加载)(.*)
替换:'<;<;${blue}\1${normal}\2'

-匹配:'^(正在处理的依赖项)(.*)
替换:'${green}\1${normal}\2'
切换到"依赖项"上下文
推送:依赖项

-匹配:'^(ins正在安装*)
替换:'>>>>;${green}\1${normal}'

"依赖项"上下文
依赖项:
-匹配:'^(已完成对的依赖项的处理)'(.*)
替换:'${green}\1${normal}\2'
;还原到"根"上下文
pop:yes

-match:'^(搜索)(.*)$'
replace:'\1${blue}\2${normal}'
使用一个小的缩进和管道。
为此,我们指定一个"match all"正则表达式,替换该行,并使用
"continue"
-match:'(.*)
replace:'\1'
continue:是

请注意,在上述规则之后,所有行前面都会加上
附加文本。我们需要在regex中包含这个!
-匹配:'^ \(正在安装).'
替换:'>>>>>;${green}\1${normal}'

-匹配:'^ \(正在运行).'
替换:''${green}\1${normal}'

-匹配:'^\{(最佳匹配).*'
替换:''${green}\1${normal}

-匹配:'^ \(警告警告)'
replace:'${yellow}\1${normal}'

-匹配:'^ \ installed(.*)
替换:'installed\1\n'
pop:yes


config配置引用
==


main level
----



**根**
指定主上下文

所有其他键表示您在某处"推送"的上下文。



contexts
--


>上下文只是规则列表


-

**匹配**
*类型*:``string`

表达式`\如果这与输入
行中的某个地方匹配,则所有匹配项都将替换为
``replace``.

注意:虽然yaml不强制您将字符串括在引号中,但强烈建议您对regexp使用**单**引号来
避免字符串转义(反斜杠)的问题。

**替换**
*类型*:``string`

false(默认值),此字符串将被发送到
``stdout``。否则,this字符串将传递给下一个匹配的
规则。不是说下面的规则看到的是*modified*字符串!

…注意:虽然yaml不强制您将字符串括在引号中,但如果使用反引用(反斜杠),建议使用**单**引号。

**继续**
*类型*:``boolean``

*如果为true,则不要将字符串写入``stdout``。相反,将它传递给下一个匹配规则。来自``stdin``
的以下所有行将在新上下文中与agains规则匹配。

…注意:在以后的版本中,这可能会发生变化,以便为您提供更多的控制

**pop**
*type*:``boolean``

如果在"根"上下文中,这是禁止操作的。

…注意:在将来的版本中,这可能会有所改变,以便为您提供更多的控制


屏幕截图
==

==

==
==
==
==
==
==
==
==
==
==
================== ================

================= =================
Simple aptitude search
-----------------------------------
Before After
================= =================
|aptitude-shot-b| |aptitude-shot-a|
=========================================================================================================================================================================================================================access-shot-b阿帕奇access-shot-a
=============================


脚注
===


[1]``grc``使用`pyexpect``处理tty特殊性。但这会有两个副作用。首先,``stdout``将与
``stderr``组合。第二,终端宽度可能没有得到很好的尊重。| pysetup-shot-b图像::/screenshots/pysetup_before.png
…| pysetup-shot-a image::/screenshots/pysetup_after.png
。| aptitude-shot-b image::截图/aptitude-before.png
…| aptitude-shot-a图像::/screenshots/aptitude-after.png
…| apache_access-shot-b image::/screenshots/apache_access_before.png
| apache_access-shot-a image::截图/apache_access_after.png

…_ Linux FHS:http://www.pathname.com/fhs/
。_源代码访问:https://github.com/exhuma/grc
…_ yaml:http://www.yaml.org
。_ python正则表达式:http://docs.python.org/library/re.html正则表达式语法

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序