在expect脚本中发送INSERT和F12

met*_*lah 6 unix bash expect

我知道为了在expect脚本中发送return,我会这样做:

send -- "\r"
Run Code Online (Sandbox Code Playgroud)

什么是INSERTF12键的发送命令?我已经在线查看,无法在任何地方找到它.

pyn*_*exj 2

我不得不说最初接受的答案是不正确的,因为

  1. 对于不同的终端类型,真实的字符序列并不相同;
  2. send -- "[2~"是错误的,因为
    1. [在 Tcl 中具有特殊含义(命令替换),因此应该使用反斜杠转义;
    2. 字符ESC\E如 的infocmp输出)丢失;

正确的做法:

set kf12 [exec tput kf12]
set kins [exec tput kich1]
... ...
send $kf12
Run Code Online (Sandbox Code Playgroud)

如果您需要手动指定 TERM 类型,请使用tput -T

  • -T

    表示终端类型。通常这个选项是不必要的,因为默认值是从环境变量中获取的TERM。如果-T指定了,那么 shell 变量 LINESCOLUMNS也将被忽略。

对于魔术字符串kf12和,请在terminfo 手册kich1页中搜索。