【发布时间】:2012-05-07 14:05:37
【问题描述】:
这是一个让我发疯的问题,我想不出解决办法。我的程序:
#!/usr/bin/sh
ssh -t myuser@anotherhost "cat ~/severalLineFile"
和anotherhost 上的~/severalLineFile 看起来像:
line1
line2
line3
line4
line5
line6
当我自己运行我的程序时,我的终端的输出看起来像预期的那样。但是,当调整我的终端大小使其只有 5 行,并将我的程序通过管道传输到更少时,它看起来像:
line1
line2
line3
line4
:
当此时按下空格键时,它会打印出line5 和line6(以及任何其他行),例如:
line5
line6
现在我明白这是在伪终端中运行 ssh 的结果,并且由于回车符包含在换行符中而发生这种阶梯式。我试过使用stty ocrnl,但这并没有达到我想要的效果,即在我按下空格键后,最初打印的 less 表现得像所有东西一样。
顺便说一句,我需要在-t 模式下运行ssh,因为我希望所有ctrl+C 键盘中断都能进入远程进程。如果在这方面有解决方案,我会全力以赴。我在 Linux Server 6.1 上,终端是通过 Mac OS 10.6.8
我也尝试将伪终端生成的\r\n 替换为\n,但这并不能解决问题。
【问题讨论】: