Pet*_*rch 4 terminal telnet stty
我从我的 (xterm|gnome-terminal) telnet 到 HP 交换机。退出远程登录。这打破了终端的行为。(如果您没有连接到 telnet 的 HP 开关,则可以在终端中使用cat
此文件)。
现在输入一个很长的命令(不止一行,并且看到第二行没有换行到下一行,而是“留在当前行”。这使得无法编辑先前的命令或使用终端任何超过一行的内容。
看到cat filewithlonglines.txt
或git log -p
只显示超过 80 个字符的行的前 80 个字符。
reset
不起作用。stty -g > stty.works
, 运行 telnet,stty $(stty.works)
恢复更改的stty
设置,但行为仍然被破坏。
我必须关闭终端并开始一个新的终端。:-(
在 telnet 后,除了保存/恢复以修复损坏的终端之外reset
,我还能做什么stty
?
编辑:我发现如果我screen
在以下命令之一中使用like:
screen bash -c "cat hptelnet.escape ; bash"
Run Code Online (Sandbox Code Playgroud)
或者
screen telnet hpswitch
Run Code Online (Sandbox Code Playgroud)
然后我的终端在屏幕退出时仍然正常工作。因此,解决方法是将 screen 放在弄乱我的终端的命令前面,但我仍然想知道如何恢复已经弄乱的终端...
在HP开关引起的问题的具体案例中,我发现(通过使用script
,记录发送到终端的每个字节),终端的自动换行模式是通过VT100代码“ <ESC>[?7l
”关闭的,然后永远不会被打开重新开始。†
重新打开自动换行的 VT100 代码是“ <ESC>[?7h
”,您可以使用以下命令将其发送到终端:
printf "\033[?7h"
Run Code Online (Sandbox Code Playgroud)
但是,这假设您的终端兼容 VT100,虽然这是一个不错的选择,但并不确定。‡ 更正确的方法是依靠您的 terminfo 设置并运行以下命令:
tput smam
Run Code Online (Sandbox Code Playgroud)
printf
假设使用 VT100 样式的终端,它会生成与上述命令完全相同的输出。terminfo 功能“smam”是“设置模式:自动边距”。它的搭档是“rmam”:“重置模式:自动边距”。
顺便说一句,我真的希望ssh
有一个“LocalEndCommand”配置选项(类似于“LocalCommand”),这样我就可以让它在每个 HP 交换机 ssh 连接结束时自动运行这个 un-fucker。
‡ 您认为惠普是否会下这个赌注?我猜他们这样做了,并且总是发送 VT100 代码。在这种情况下,如果您的终端与 VT100 不兼容,您就不会遇到这个问题。
归档时间: |
|
查看次数: |
2799 次 |
最近记录: |