终端如何以编程方式在 shell 提示符下阻止退格,这样你就不能在它上面退格,例如$ 用于 bash 或 C:\blah\>

Posted

技术标签:

【中文标题】终端如何以编程方式在 shell 提示符下阻止退格,这样你就不能在它上面退格,例如$ 用于 bash 或 C:\\blah\\>【英文标题】:How do terminals programmatically block the backspace at a shell prompt so you can't backspace over it, e.g. $ for bash or C:\blah\>终端如何以编程方式在 shell 提示符下阻止退格,这样你就不能在它上面退格,例如$ 用于 bash 或 C:\blah\> 【发布时间】:2018-09-18 07:57:03 【问题描述】:

他们是在文本流中插入任何特殊的隐藏字符,还是只是以其他方式对其进行硬编码,然后在缓冲区滚动时更新位置? Bash 看起来可能是因为提示后通常有一个空格。如果是特殊字符,是什么字符?

【问题讨论】:

输入缓冲区和终端输出是两个独立的东西。您键入的输入未存储在终端屏幕中。 它们以原始无回声终端模式运行。这大致意味着拦截您输入的所有内容,用它做一些智能的事情,然后向您显示结果。你用过vim之类的全屏终端编辑器吗? Bash 也在做同样的事情,只有一行。 对我来说很有意义。谢谢你们。 【参考方案1】:

终端具有不同的输入和输出流。

您看到您输入的内容是因为终端正在将您的一些输入回显给您。

提示不是您的输入,因此您的退格键通常不会超过它并扭曲提示。

              me@host> ls -l
terminal's -> ^^^^^^^^^~~~~~ <- yours

【讨论】:

所以你有一个 X 大小的终端输入缓冲区,并且 echo 只是在你输入时将该缓冲区的内容一次一个字符复制回屏幕?好吧,谢谢,这很有意义。

以上是关于终端如何以编程方式在 shell 提示符下阻止退格,这样你就不能在它上面退格,例如$ 用于 bash 或 C:\blah\>的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程Shell基本概述与脚本执行方式

Shell编程Shell基本概述与脚本执行方式

如何使 iterm2 为退格发送 Control-H,使其适用于所有 Linux shell

保持终端对焦

解决linux下按退格键出现 ^? 的问题

如何以编程方式阻止应用程序读取计算机文件?