为什么 Linux 在将文本粘贴到 shell 时允许退格?

Cur*_*ma_ 3 shell security terminal-emulator terminal

在我遇到的许多 Linux 发行版中,将文本粘贴到 shell 时会包含退格字符。为什么不阻止粘贴这些字符——或者这个特性是否提供了一些有用的功能?

换句话说,Linux shell 是否“知道”它是粘贴的字符串——还是手动输入的?

这种行为如何处理?

Tho*_*key 8

shell 只是在终端中运行的应用程序。对于粘贴,只有模拟器相关,但仍然有“真正的”终端(提示:Linux 控制台不是其中之一)。

不考虑各种控制台实现,因为粘贴文本是以更有限的方式完成的,在 X 中运行的终端是问题的重点。终端仿真器只是看到一系列事件。键入的键或粘贴的文本在终端模拟器上看起来是一样的。

仅考虑终端模拟器(并在它们之间选择/粘贴),退格键不是问题,因为选择/粘贴与终端窗口上显示的内容一起使用。也就是说,如果用户在终端窗口上选择文本,则只有可打印的文本(可能带有制表符作为特殊情况)。没有任何退格字符(除非有人的终端实现有问题),因为退格会告诉终端将光标向左移动。终端没有可打印的驻留可供选择。还有数百个其他终端的控制器可能被使用,但退格键是简单的和广泛使用。

Backspace 是一些实施不佳的应用程序的问题,例如浏览器(它确实应该提供可打印文本的显示......),显然会存储一些脚本编写者决定应该存储在屏幕上的任何内容。

所以......与其问为什么终端模拟器仍然允许 BS,人们可能会问为什么 GUI 浏览器允许这种行为。

  • 但是您确实在 292 (http://invisible-island.net/xterm/xterm.log.html#xterm_292) 中添加了控制字符的剥离,大概是为了防止那些损坏的应用程序(如浏览器)首先将它们添加到那里(请注意,其他像 gvim 或任何将选择设置为任意数据的东西也可以),但为什么不是 BS(或 DEL)?用例是什么? (4认同)