在终端中显示转义序列?

tin*_*lyx 2 terminal

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

我遇到了这个 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'
Run Code Online (Sandbox Code Playgroud)

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

Jde*_*eBP 5

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

你猜错了。

% ptybandage git 状态。| grep 规则 | 控制台解码 ecma48
标签
SGR 31
'我'
'哦'
'd'
'一世'
'F'
'一世'
'e'
'd'
':'
' '
' '
' '
'r'
'你'
'我'
'e'
's'
0
CR
如果
% git 状态。| grep 规则 | 控制台解码 ecma48
标签
'我'
'哦'
'd'
'一世'
'F'
'一世'
'e'
'd'
':'
' '
' '
' '
'r'
'你'
'我'
'e'
's'
如果
% 

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

进一步阅读


egm*_*ont 5

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

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

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