AIX上的ctrl-v密钥

我是AIX的新手,我怀念一些在其他* nix风格上运行良好的技巧。

我需要一个在ksh脚本中的CTRL序列,像^[CTRL- [ ),并且我习惯使用ctrl-v [ ,但是在这里不起作用。

目前,我有义务使用带有putty的windows box,所以我甚至不能编辑我的Linux机器上的脚本,并在AIX服务器上传输脚本。

你知道为什么以及如何解决这个问题吗?

恢复答案:

@Dennis:

有一些其他的方法可以在Korn shell脚本中使用escape:

 print '\E' escape1='\033' # contains the literal characters as shown echo -e "$escape1" printf '%b' "$escape1" print "$escape1" escape2=$'\e' # contains an actual escape echo "$escape2" printf '%s' "$escape2" print "$escape2" 

对于terminal的颜色

man 5 terminfo

$''符号允许ANSI-C转义:

green=$'\e[01;32m'

这可能是ksh88不支持$''

我使用ksh88,但我可以切换到ksh93。

 ctrl-v on command line Version M-11/16/88i /usr/dt/bin/dtksh print ${.sh.version} Version M-12/28/93d green=$'\e[01;32m' doesn't give me any error on ksh88, 

但不会扩展转义序列。 在ksh93 $''同样的问题

 green="$'\e[01;32m'" 

使用大写E解决了这个问题(怪异的!!!):

 print $'\E[01;32m hello' 

总结:

 \E works \e NO \033 works just with echo ^[ ^v^[ do not work at all 

尝试这个:

 stty -a 

看看下一个是否是^V 如果不是,请尝试:

 stty lnext ^V 

您将在哪里input“^”(插入符号)和“V”作为单独的字符。 现在尝试看看你是否可以使用^V^[ (在你的键盘上工作^VEsc ?)键入一个转义^VEsc

另外,请检查您是否处于emacs模式

根据你使用它的方式,在Korn shell脚本中有一些使用escape的方法:

 print '\E' escape1='\033' # contains the literal characters as shown echo -e "$escape1" printf '%b' "$escape1" print "$escape1" escape2=$'\e' # contains an actual escape echo "$escape2" printf '%s' "$escape2" print "$escape2" 

当然,你通常不会输出所有的自身。

如果我回想起AIX, Ctrl + V转义序列应该可以工作,但是我也记得AIX中的默认TERM并不总是您期望的。 检查你的$TERMvariables。 如果它很奇怪:

 export TERM=xterm 

要么

 export TERM=vt100 

如果你的$TERM是错误的,那么即使Ctrl + V有效, Ctrl + [也许什么也不做。 这是一个VT100序列。