在我的终端中打印二进制文件如何改变字符映射?

在我的终端中打印二进制文件如何改变字符映射?

我不小心运行了cat二进制文件。 (它发生了)。
通常,我会看到大量随机的 unicode 字符,其中我点击了Ctrl+C
有时我会听到随机的铃声,因为文件中的'\' 'a'字符彼此相邻。

这次,它改变了我的整个字符映射(我认为):(图像显示了按 ctrl+C 并输入之前的 'd 文件
的一部分) catls在此输入图像描述

问题很容易解决,但我想知道是什么原因造成的。
我可以在终端中输入什么来产生相同的效果?

如果相关的话,我正在使用gnome-terminal,我的外壳是zsh.

答案1

这可能是一个终端转义序列;您可以提取这些内容并逐一打印它们,以查看特定序列是否会导致崩溃:

#!/usr/bin/env perl
use strict;
use warnings;

# turn off any encoding foo
use open IO => ':raw';

# "slurp" mode for whole file reads
local $/;

# for any STDIN or files given to us...
while (readline) {
    # extract ESC-followed by a number of not-ESC not-NUL characters...
    while (m/(\e[^\e\0]+)/g) {
        printf "what does '%vx' do?\n", $1;
        print $1;
        # is a listing borked or not?
        print qx(ls);
        sleep 1;
    }
}

相关内容