我已经开始使用 nektos/act 存储库在本地运行我的 Github 操作,我想要做的是仅显示 .github/workflows/lint.yml
工作流程中步骤的
原始颜色日志。由于
--verbose
标志不允许我过滤这些日志,因此我一直在使用 grep
并且它可以通过以下命令按预期工作。
act push --secret-file .secrets --rm | grep -ivw -e "🐳" -e "🚀"
输出为:
但是,如果没有 grep (仅 act 命令),则以以下内容开头的行:
[clang-format-lint/cpp-linters]
有颜色:
有谁知道如何保留行为格式,但仅使用原始颜色(黄色/蓝色)过滤步骤?
解决方案:
unbuffer act push --secret-file .secrets --rm | grep -Ev "🐳|🚀"
发生这种情况的原因是,如果输出文件是终端设备,程序通常只打印终端控制序列(颜色)。如果输出通过管道传输或重定向到常规文件,通常不会打印控制序列。
如果命令没有强制颜色的选项(如
--color=always
或类似的),您可以使用 unbuffer
包中的 expect
程序,使程序的行为就像打印到终端一样。
unbuffer act ... | grep
请注意,输出将包含控制序列字符串,这可能会干扰文本过滤(使用 grep 之类的东西)。