如何查看键盘发送的各种控制字符

问题描述

通常我会使用 xxd 来查看我输入的字符转换为十六进制。例如:

$ xxd

hello
00000000: 0a68 656c 6c6f 0a                        .hello.

但是,我将如何为:

  • Ctrlz
  • Ctrld
  • Ctrlc

当我输入这三个中的任何一个时,它似乎在 xxd 程序之外“执行某些操作”,而不是被识别为我想查看其十六进制代码键盘输入。那么如何查看键盘为所有字符组合发送的值?

解决方法

在命令行控制台中,您可以通过先输入 Ctrl-V 来输入类似 Ctrl-Z 的代码。

例如,如果您输入以下内容:

xxd Ctrl-VCtrl-A'

然后您应该看到以下输出:

00000000: 010a                                     ..

(其中,我相信您已经意识到,01 对应于 ^A,而 0a 是它之后的换行符)

在 ANSI 终端上,您也可以通过这种方式输入 escape codes。例如,输入:

echo 'Ctrl-VEsc[1;31mHelloCtrl-VEsc[0m world'

以鲜红色打印一个单词,以默认颜色打印另一个单词。