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