今天研究了一下,解决了UG Machine上TTY字符识别的一个小问题。
症状
登录进入terminal以后,默认shell是csh,按<backspace>键以后整行的命令都消失了,直接提示下一个命令。
原因排查
键入`stty -a`,发现inter信号对应的键盘转义序列是^?,erase对应的是^H,而默认<backspace>的转义序列是^?和^H,这样你输入<backspace>的时候会发送中断信号。
解决方案
一句命令:
stty inter ^C
把发送中断信号设定回我们习惯的C-c命令即可。
事实上下面的命令也有效:
stty sane
其效果是设定所有的特殊字符值到默认。
小技巧
1. 想知道terminal下各不可见字符(例如<backspace>,<delete>,<page down>)的转义序列?
先按C-v,再按该键即可。
emacs下面则是先按C-q,再按该键。
2. 改变用户默认使用的SHELL:
chsh $USER $SHELL
本文探讨了在UGMachine上TTY字符识别时遇到的登录终端后默认使用csh shell的问题,按backspace键导致整行命令消失的情况。通过键入`stty-a`发现相关信号的转义序列,进而分析出问题原因在于默认的backspace键行为与期望不符。文中提供了将中断信号设定回习惯性的C-c命令的解决方案,以及改变用户默认使用的SHELL的方法。同时分享了一些实用的小技巧,如如何快速获取不可见字符的转义序列。
2894

被折叠的 条评论
为什么被折叠?



