进一步阅读

进一步阅读

有没有办法让终端显示原始转义序列? (例如用于控制颜色的那些)

我遇到了这个 UNIX.SE 问题,并且想要过滤“红色”输出(按颜色过滤命令的输出

但是,答案中的命令不适用于我的输出(例如git status“未跟踪的文件”中的红色)。他们确实为那里的例子工作echo -e '\033[00;31mtest\033[00m' | grep --color=none '[[:cntrl:]]'。过滤适用grep --color=none '[[:cntrl:]]'于我的输出,但也显示其他颜色的文本。

我想我看到的红色一定是与 不同的红色\e[31m

有没有办法让终端输出原始转义序列?(这样我就可以使用正确的序列来过滤我看到的特定红色)

(bash,Ubuntu 18.04)

- 更新 -

为了澄清起见,我的问题是如何显示原始转义序列。

@egmont' 的回答使用script有效。基本上,我只需要用来script记录输出并使用上述答案之一问题找到红色文本,例如:

script /tmp/a.txt
git status
exit
cat /tmp/a.txt | grep -Eo $'\e\\[31m[^\e]*\e\\[[03]?m'

其他答案/评论也正确地指出我的使用git没有通过管道获得颜色。

答案1

不确定我是否正确理解你的问题。

我想你想要检查某个实用程序(例如git status)发送到终端模拟器的内容。我对吗?

启动该script实用程序,它会准确记录这一点。然后打电话git status或者任何你想要的。然后退出scriptshell,它会通知您一个名为 的文件typescript已创建。在文本编辑器中打开此文件以查找您要查找的序列。

答案2

我想我看到的红色一定是与 不同的红色\e[31m

你猜错了。

% ptybandage git 状态。 | grep 规则 |控制台解码 ECMA48
标签
SGR 31
'我'
'o'
'd'
'我'
'F'
'我'
'e'
'd'
':'
''
''
''
'r'
'你'
'l'
'e'
SGR 0
CR
如果
% git 状态。 | grep 规则 |控制台解码 ECMA48
标签
'我'
'o'
'd'
'我'
'F'
'我'
'e'
'd'
':'
''
''
''
'r'
'你'
'l'
'e'
如果
%

您还没有git认为它正在写入终端,因此它不会产生颜色。

进一步阅读

相关内容