fan*_*ngo 18 python bash xterm
我正在编写各种实用程序,我真的很喜欢彩色文本.没有什么好看的,只是使用转义序列.我创建了一个具有pprint(msg,color)函数的简单类.在这里找到代码后,我已经很容易地工作了.
我遇到的问题是我应该能够在打印后关闭颜色.例如,假设一个用户运行我的程序,它打印几乎所有的默认终端颜色,但有一个错误,我想以红色打印错误.我的错误消息前缀为'\ 033 [0; 32m',消息为红色.不幸的是,在我更改之前,所有文本都是红色的.在我的程序运行时,这通常很好,因为我知道消息应该是什么颜色.但是,程序结束后颜色仍然存在.基本上,我想在程序启动时读取当前颜色,并在完成后恢复它.与退出时脚本恢复pwd的方式相同.
如何读取当前的转义序列?
系统:Red Hat 5.x Bash Python 2.3
谢谢您的帮助.
Sie*_*geX 95
而不是使用混淆的转义序列,tput而是使用该工具.以下是~/.bashrc我用于PS1提示的摘录:
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
LIME_YELLOW=$(tput setaf 190)
POWDER_BLUE=$(tput setaf 153)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
BRIGHT=$(tput bold)
NORMAL=$(tput sgr0)
BLINK=$(tput blink)
REVERSE=$(tput smso)
UNDERLINE=$(tput smul)
Run Code Online (Sandbox Code Playgroud)
要重置颜色信息,使后续文本处于正常的终端颜色,您将附加${NORMAL}到末尾,如下所示:
echo "${RED}this is red ${NORMAL}this is normal"
实际上, xterm和兼容终端可能是 \xe2\x80\x94 。
\n例如,xtermcontrolOSC 10使用控制序列来检索默认的前景色/背景色。自 2002 年起,它就被记录在 xterm 中。
对于其他终端:
\nOSC 10(使用等效的 CentOS 5 进行测试)。好奇它是何时添加的,请记住 VTE 的开发人员不编写文档。所以...研究 git 日志显示
\ncommit 1b8c6b1aac587b79476a60a5830385abc939430d \nAuthor: Egmont Koblinger <egmont@gmail.com> \nDate: Wed Jan 22 00:13:51 2014 +0100\n\n emulation: Add support for OSC 1?1[017] (fg, bg, highlight colors)\n\n https://bugzilla.gnome.org/show_bug.cgi?id=567444\nRun Code Online (Sandbox Code Playgroud)\n另一方面,默认颜色与当前颜色不同。自1999 年补丁 #93起,用户就可以使用 xterm使用DECRQSS控制序列来执行此操作。也就是说,将终端置于原始模式并执行类似的操作
printf \'\\033P$m\\033\\\\\'\nRun Code Online (Sandbox Code Playgroud)\n会得到它回复用 SGR 参数填写的字符串。
\n如果使用 SGR 设置颜色,这些代码将成为回复的一部分,例如
\n\\033P1$r0;33m\\033\\\\\nRun Code Online (Sandbox Code Playgroud)\n表示前景色编号 3(编码为33)。
您可以停在那里(因为您可以提取这些参数并重用它们以将终端设置为相同的状态),但随后可以使用OSC 4. 您可以使用颜色编号(来自 SGR 序列),并发送如下内容:
printf \'\\033]4;3;?\\033\\\\\'\nRun Code Online (Sandbox Code Playgroud)\n所以用 xterm 肯定是可行的。DECRQSSxterm 的下一次更新中将有一个演示/测试脚本。
对于其他项目,您需要更多时间:
\nxtermcontrol 的开发人员忽视了DECRQSS(它没有设置/获取 SGR 代码的功能)。
VTE 的开发人员复制 xterm 功能以响应错误报告;VTE 来源没有提及DECRQSS。它的 git logOSC 4在 2009 年提到过,但实现不完整(它只允许设置颜色,而不允许获取颜色)。
| 归档时间: |
|
| 查看次数: |
17189 次 |
| 最近记录: |