7

stty, not a typewritter在 hpux 上看到了消息(尽管有交互式终端检查?),我猜测这些是由于我的 .kshrc 文件中的 stty 行:

case $- in
*i* )
    stty hupcl ixon ixoff
    stty erase '^?' kill '^U' intr '^C' eof '^D' susp '^Z'
;;
esac

两个问题:

1)我知道为什么有擦除线,因为没有它,退格键不起作用。我继承了这些 .kshrc 行,但不知道它们的作用。

有人知道 hupcl ixon ixoff 线的意义吗?stty 手册页并不是特别有启发性:

hupcl (-hupcl)           Hang up (do not hang up) modem connection on
                         last close.

ixon (-ixon)             Enable (disable) START/STOP output control.
                         Output is stopped by sending an ASCII DC3 and
                         started by sending an ASCII DC1.

ixoff (-ixoff)           Request that the system send (not send)
                         START/STOP characters when the input queue is
                         nearly empty/full.

2)是否有不同的方法来检查交互式终端。我有 tty -s ;如果 [ $? ] 之前,但这在 hpux 上似乎也很吵。

4

2 回答 2

16

ixon并且ixoff用于坚持Ctrl-s并且Ctrl-q被解释为控制流(滚动锁定)信号。它们是大多数系统的默认设置,但如果您的连接速度很快和/或预计终端无法处理大量输出,则可以关闭它们。

我通常使用stty -ixon -ixoff这样我可以回收Ctrl-sCtrl-q键绑定用于更现代的目的(例如“保存”和“退出”)。

有关更多详细信息:https ://unix.stackexchange.com/questions/12107/how-to-unfreeze-after-accidentally-pressing-ctrl-s-in-a-terminal#12146

于 2011-08-05T04:34:06.100 回答
2

\1。

由于您继承了您的 .kshrc,可能有一个原因是您的系统有时需要这些额外的hupcl, ixon, ixoff参数。它们现在可能已经过时,但它们可能是以惠普为中心的东西。或者可能是某些应用程序在包含它们的情况下效果更好。也许一个老计时器会知道。

任何人都知道 hupcl ixon ixoff 线的要点

对我来说,这些描述是不言而喻的,但后来我不得不以方式处理这些问题----yyyy 回来,并阅读Orielly termcap 和 terminfo来解决它。您可以man ascii查看 DC3 和 DC1 在它们的上下文中,或者谷歌搜索可能会为您提供一些有趣的东西。

现在,我希望除非您有特殊需求,否则这些并不能真正帮助您。您是否有特殊的 HP 硬件或特殊的 terminfo 应用程序。如果没有,请尝试将该行注释掉。

\2。交互测试

我喜欢你的case $- in *i* ...,应该足够好了。

别的

  if tty -s > /dev/null 2>&1 ; then ...

可能有帮助

或规范的

  if [[ -t 0 ]]; then

我希望这有帮助。

于 2011-06-21T21:11:49.613 回答