0

我试图准确地了解 TTY、内核、线路规则和 shell 中的谁实际上处理了我输入的任何给定部分。特别是,我一直在研究这篇文章:

TTY 揭开神秘面纱

我的问题:如果我想让实际的删除字符出现在 BASH 中,我可以使用 ^V 逐字逐句。例如,我可以使用 Ctrl+V 然后 Ctrl+H 有一个退格字符。漂亮整齐!

echo '3^H'
3

我的问题是这样的:如果我处于以规范模式读取的内容(我相信 cat 会这样做),我可以通过执行 Ctrl+V 然后 Ctrl+2(基本上是 Ctrl+@,这是插入符号)在其中放置一个空字符对于空字符)。

但是,BASH 不允许我在其中一行包含逐字空字符,而且看起来 python 和其他 readline 程序也不会。

有人知道这是为什么,还是通用的解决方法?

4

1 回答 1

1

C 库使用文字 null 作为字符串终止符,因此使用它的任何内容都无法表示包含文字 null 的字符串。

需要支持文字空值的程序定义了自己的字符串数据类型。

于 2013-04-13T19:13:30.237 回答