有没有办法让终端显示原始转义序列?(例如用于控制颜色的那些)
我遇到了这个 UNIX.SE 问题,并想过滤“红色”输出(按颜色过滤命令输出)
但是,答案中的命令不适用于我的输出(例如git status
“未跟踪文件”中的红色)。他们确实为那里的例子工作echo -e '\033[00;31mtest\033[00m' | grep --color=none '[[:cntrl:]]'
。过滤grep --color=none '[[:cntrl:]]'
我的输出,但也显示其他颜色的文本。
我猜我看到的红色一定是不同于 的红色\e[31m
。
有没有办法让终端输出原始转义序列?(这样我就可以使用正确的序列来过滤我看到的特定红色)
(重击,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
没有通过管道获得颜色也是正确的。
你猜错了。
您还没有
git
想到它正在写入终端,因此它不会产生颜色。进一步阅读
console-decode-ecma48
”。 小吃指南。软件。不确定我是否正确理解了您的问题。
我认为您想检查某个实用程序(如
git status
)发送到终端仿真器的内容。我对吗?启动该
script
实用程序,它会准确记录这一点。然后打电话git status
或任何你想要的。然后从script
's shell 退出,它会通知你一个名为的文件typescript
已经创建。在文本编辑器中打开此文件以查找您要查找的序列。