将终端设置为原始模式时出现意外的缩进行为-为什么会发生这种情况?


27

根据我所阅读的内容,当终端处于原始模式时,终端驱动程序不处理字符,而是直接发送字符。

我使用命令将终端设置为原始模式stty raw,并且我注意到每次输出都向右缩进,直到没有更多空间为止。这就是我的意思:

在此处输入图片说明

为什么会发生这种现象?

Answers:


45

其中一个stty设置(onlcr)告诉终端驱动程序转换换行符(实际上是ASCII换行),以回车加换行。

类似于Unix的系统只需在换行符上写入换行符,让终端驱动程序做正确的事情(将换行符转换为回车加换行符)。

回车“走”,换行“走”。

当您将终端设置为原始模式时,换行符将不再转换为回车加换行符。缺少回车符,您将获得楼梯效果。


要深入了解,您可以看一下@stéphane-chazelas的真正好帖子:unix.stackexchange.com/questions/151916/…,它显示了许多有关终端转换(及其副作用)的有趣信息。 。简而言之:仅“ ssh -t”可使用交互式命令,但在脚本中,如果您想获得命令生成的确切内容,则仅使用ssh(例如:在ssh一侧创建并在其上读写的tar文件)另一面:请勿添加“ -t”,否则可能会(...将使您的二进制文件混乱))
Olivier Dulac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.