通用着色剂
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正则表达式语法
``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正则表达式语法