终端如何以编程方式在 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\>的主要内容,如果未能解决你的问题,请参考以下文章