标签: ansi-escape

了解Python交互式解释器中的打印字节

我偶然发现了我只能将其描述为Python交互式解释器中的错误.虽然这个bug相当无关紧要,但我觉得这是一个有趣的问题,并且很有可能学习python,低级计算和调试.

问题出现在这里:

pic = open("blurry.jpg", "rb")
data = pic.read()
for byte in data:
    print byte
Run Code Online (Sandbox Code Playgroud)

这导致......

#prints the entire file byte by byte_
?

0
?
?
>>> 1;2c
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我发现[] {}\@ ^已分别替换为Ä,Å,ä,å,ö,É,'Ü'.有趣的是,他们仍然保持功能.例如,list = Ä1,2,3,4Å不会引发任何错误.此外,可能更有趣......即使在我退出解释器并重新进入bash之后,这种行为仍在继续.

此外,我只能在使用特定图像时重新创建此行为,我在此处托管:http://imgur.com/lTo6m

我还没有弄清楚我会在哪里开始分析这样的问题,所以我希望有人可以提供一些见解.

一如既往地谢谢!

python terminal byte ansi-escape

1
推荐指数
1
解决办法
310
查看次数

ANSI转义码序列“ ESC [> c”是什么?

在bash中输入“ vi [FILENAME]”后,得到以下结果:

.... \r\"gu1.txt\" 16L, 87C ESC[>cESC[1;1H 111\r\n1112.....

该行中标记的第一个文本是文件名称,紧随vi结果的行数和列数。

第二课包含两个我不理解它们含义的转义序列:ESC[>cESC[1;1H

最后的文本包括作为vi结果显示的文本,即文件的内容。

您能否解释一下ANSI转义码序列是什么ESC[>c,以及它与紧随其后的转义码序列之间的关系ESC[1;1H

提前致谢

bash terminal ansi-escape

1
推荐指数
1
解决办法
634
查看次数

在“cygwin”终端下未处理的转义序列

我有一个 Java 应用程序,它使用ANSI 转义序列来显示颜色、定位光标等。

它在常规 Unices 下xterm以及在和mintty(在Cygwin 中)下都可以正常工作,但是我在cygwin终端下运行它时遇到了问题(即bash从 启动cmd.exe)。

正如您从屏幕截图中看到的:

在此处输入图片说明

转义序列“按原样”输出,无需处理。另一方面,我可以轻松地运行 smth 之类的echo -e '\033[1;31mTest'- 并且彩色文本就在那里。

同时,如果我从Midnight Commander子shell启动完全相同的应用程序,应用程序生成的转义序列将被正确解释:

在此处输入图片说明

此外,如果我使用 SSH 登录到我的 Windows 机器(即用远程连接替换本地连接,但保留相同的cygwin终端),同样,转义序列处理得很好。

看起来当创建某种类型的子外壳(mcssh)时,终端会被置于其他模式。但是玩与stty没有帮助,也没有 export'ing TERM=ansi

任何人都可以请提出任何解决方案吗?

我在跑

CYGWIN_NT-6.3 UNIT-725 2.5.1(0.297/5/3) 2016-04-21 22:14 x86_64 Cygwin
Run Code Online (Sandbox Code Playgroud)

和 Windows 8.1。

java windows cygwin ansi-escape

1
推荐指数
1
解决办法
1180
查看次数

我如何“手动”让我的终端返回其(字符)大小?

诸如resize询问终端其大小之类的程序。最终,他们将向标准输出发送一些(ANSI)转义序列,并期望终端对这些序列本身做出反应,返回一些字节。

\n\n

该机制的效果通过以下交互式 Python 代码片段可见:

\n\n
>>> print('\\x1b[21;t')\n
Run Code Online (Sandbox Code Playgroud)\n\n

Gnome 终端将在标准输入上插入与窗口标题相关的可见内容。

\n\n

哪个脚本片段将促使终端写入\xe2\x80\x99s 大小(以字符为单位)?如果返回的大小不可见,则应进行一些简单的转换才能看到某些内容。Shell、Python、Perl,任何语言都可以。由于这将是特定于终端的,因此任何常见的终端仿真器都可以(例如 xterm、gnome-terminal、terminator 等)。

\n\n

澄清:我不关心告诉我大小的程序。我知道 TIOCGWINSZ,它不能通过串行线路工作。我想查看使用转义序列的代码,它实际上在串行线路上工作。

\n

python terminal ansi-escape terminal-emulator

1
推荐指数
1
解决办法
2487
查看次数

如何从文本文件中去除 ANSI 转义码?

我正在使用 VSCode 1.51(此时为最新版本),并且在terraform plan ..从集成 PowerShell(此工作站上为 5.1)运行时,我注意到如果我将输出重定向到文本文件,可以通过运算符 ( .. > .\a.txt) 或通过 Tee-Object ( .. | Tee-Object -FilePath .\a.txt) 生成的输出文件被ASCII 转义序列破坏;特别是通过控制序列引入器 (CSI) 序列,例如 ESC[1m。到目前为止,在我看到的输出文件中,我仅观察到以下 6 个序列:

- ESC[0m
- ESC[1m
- ESC[4m
- ESC[31m
- ESC[32m
- ESC[33m
Run Code Online (Sandbox Code Playgroud)

我正在使用 Notepad++ 7.8.7 读取文件,如何用单个空格字符 (' ') 替换上述序列?

更新

显然,如果能够从terraform plan输出中删除 ASCII 转义序列那就更好了。

regex notepad++ ansi-escape terraform

1
推荐指数
2
解决办法
3390
查看次数

带有 jq 的 ANSI 颜色代码

尝试使用jqANSI 颜色代码。

测试用例:

$ echo '{"a":"b","c":"d"}' | jq -r .c
d # Matches my expected output

$ echo '{"a":"b","c":"\033[31md\033[0m"}' | jq -r .c
parse error: Invalid escape at line 1, column 31 # returns err code 4

$ echo '{"a":"b","c":"d"}' | jq -r '"foo"+.c+"bar"'
foodbar # Correct

$ echo '{"a":"b","c":"d"}' | jq -r '"\033[31m"+.c+"\033[0m"'
jq: error: Invalid escape at line 1, column 4 (while parsing '"\0"') at <top-level>, line 1:
"\033[31m"+.c+"\033[0m"
jq: error: Invalid escape at line 1, …
Run Code Online (Sandbox Code Playgroud)

bash json colors ansi-escape jq

1
推荐指数
1
解决办法
674
查看次数

如何通过编程删除stdout中的字符?

我想在编程中模拟退格键并按如下方式实现。

// del.cpp
#include <iostream>
using namespace std;

int main()
{
    cout << "123456";
    cout << "\b\b\b" /* backspace key */<< '\x7f' /* DEL key */ << '\x7f' << '\x7f';
    cout << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但我得到这样的结果 在此输入图像描述

如何获得如下所示的结果而不需要用空格替换尾部

123
Run Code Online (Sandbox Code Playgroud)

也就是说如何删除而不是替换光标后退格的那些字符。

c++ terminal escaping ansi-escape

0
推荐指数
1
解决办法
5672
查看次数

如何判断stdout是否支持ANSI转义码

在不支持ANSI转义码的终端中,输出\033[0m这样的颜色控制码不仅没有任何效果,还会干扰终端。

我知道一个json格式化工具叫jq,它判断终端是否可以使用ANSI转义码。

我想知道,如何通过C语言实现这个功能?

c stdout ansi-escape jq

0
推荐指数
1
解决办法
593
查看次数

用于更改终端名称的 ANSI 序列

我使用 bash 脚本 ( konsole-name.sh ) 来更改终端名称,如下所示:

#!/usr/bin/bash
echo -en "\e]30;$1\a"
Run Code Online (Sandbox Code Playgroud)

我想使用与检查 GPU 温度相同的 perl 脚本方法,以便定期更新窗口标题。

然而我没有找到方法。我尝试了这两个:

$comm='echo -en "\e]30;T=$t\a"';
`$comm`;
Run Code Online (Sandbox Code Playgroud)

这是使用我的 bash 脚本:

$comm="konsole-name.sh T=$t";
`$comm`;
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到吗?

terminal perl ansi-escape

-1
推荐指数
1
解决办法
981
查看次数

如何使用转义序列保持空格stringbuilder c#

我有一个stringbuilder带有转义序列的设置来显示像艺术到文本的ASCII.我正在使用ASP.NET Web窗体.这是我的代码:

sb.AppendLine(@"   _____ ______   ___  ___  ________                                        ");
sb.AppendLine(@"  |\   _ \  _   \|\  \|\  \|\   ___ \                                       ");
sb.AppendLine(@"  \ \  \\\__\ \  \ \  \\\  \ \  \_|\ \                                      ");
sb.AppendLine(@"   \ \  \\|__| \  \ \  \\\  \ \  \ \\ \                                     ");
sb.AppendLine(@"    \ \  \    \ \  \ \  \\\  \ \  \_\\ \                                    ");
sb.AppendLine(@"     \ \__\    \ \__\ \_______\ \_______\                                   ");
sb.AppendLine(@"      \|__|     \|__|\|_______|\|_______|                                   ");
sb.AppendLine(@"                                                                            ");
Run Code Online (Sandbox Code Playgroud)

这是输出:

 _____ ______ …
Run Code Online (Sandbox Code Playgroud)

c# asp.net whitespace ansi-escape

-2
推荐指数
1
解决办法
333
查看次数