linux终端里为啥不能直接输入转义序列
linux终端里为什么不能直接输入转义序列?
书上说
我有疑问的是为什么不能直接在konsole中按下ESC+[2j这4个字符.我现在知道需要通过另外某些途径才行.比如在一个C文件中,或者是按键绑定中,或者是linux的某些配置文件中.甚至不一定是ESC,连\r这种转义序列也是.
但这些我都说不清为什么.谁能具体解释下?
------解决思路----------------------
其实linux terminal是支持的,不过输入这些special control char比较麻烦而已
不怎么用konsole,用putty给楼主举个例子,我的term是linux
$infocmp
# Reconstructed via infocmp from file: /usr/share/terminfo/l/linux
linux
------解决思路----------------------
linux console,
am, bce, ccc, eo, mir, msgr, xenl, xon,
...
clear=\E[H\E[J, cnorm=\E[?25h\E[?0c, cr=^M,
所以在这个term里面,clear screen的sequence 是 "escape + [ + H + escape + [ + J" , \E 表示 escape键
如果我想在shell里面输入这个sequence来达到clear screen的效果,有几种办法
a) 直接执行clear,这个util会输出这串sequence到当前term
如果检查clear的输出结果就会看到一样的sequence
$clear
------解决思路----------------------
od -tx1
0000000 1b 5b 48 1b 5b 4a
0000006
b) 用echo的 -e 模式来输入
/bin/echo -e "\x1b\x5b\x48\x1b\x5b\x4a"
注意用/bin/下面的echo而不是shell builtin的echo
c) 楼主所要求的raw 输入, 是用ctl-v来实现的, 键盘序列为
ctrl-V + escape + [ + H + ctrl-V + escape + [ + J + enter
会看到类似这样的显示
$^[[H^[[J
书上说
当konsole在其显示的文本流中看到一个ESC字符时,
它会非常仔细地查看后面几个字符.如果后面的前三个字符是[2j,
该序列命令konsole执行清屏操作.
我有疑问的是为什么不能直接在konsole中按下ESC+[2j这4个字符.我现在知道需要通过另外某些途径才行.比如在一个C文件中,或者是按键绑定中,或者是linux的某些配置文件中.甚至不一定是ESC,连\r这种转义序列也是.
但这些我都说不清为什么.谁能具体解释下?
------解决思路----------------------
其实linux terminal是支持的,不过输入这些special control char比较麻烦而已
不怎么用konsole,用putty给楼主举个例子,我的term是linux
$infocmp
# Reconstructed via infocmp from file: /usr/share/terminfo/l/linux
linux
------解决思路----------------------
linux console,
am, bce, ccc, eo, mir, msgr, xenl, xon,
...
clear=\E[H\E[J, cnorm=\E[?25h\E[?0c, cr=^M,
所以在这个term里面,clear screen的sequence 是 "escape + [ + H + escape + [ + J" , \E 表示 escape键
如果我想在shell里面输入这个sequence来达到clear screen的效果,有几种办法
a) 直接执行clear,这个util会输出这串sequence到当前term
如果检查clear的输出结果就会看到一样的sequence
$clear
------解决思路----------------------
od -tx1
0000000 1b 5b 48 1b 5b 4a
0000006
b) 用echo的 -e 模式来输入
/bin/echo -e "\x1b\x5b\x48\x1b\x5b\x4a"
注意用/bin/下面的echo而不是shell builtin的echo
c) 楼主所要求的raw 输入, 是用ctl-v来实现的, 键盘序列为
ctrl-V + escape + [ + H + ctrl-V + escape + [ + J + enter
会看到类似这样的显示
$^[[H^[[J