
Sou novo no AIX e sinto falta de alguns truques que funcionam bem em outros sabores *nix.
Preciso de uma CTRLsequência em scripts ksh, como ^[
( CTRL-[) e para isso tenho o hábito de usar o ctrl-v [, mas aqui não funciona.
No momento sou obrigado a usar um windows box com putty então não consigo nem editar os scripts na minha box Linux e transferir os scripts no servidor AIX.
Você sabe por que e como posso resolver o problema?
Para retomar as respostas:
@Dennis:
existem algumas outras maneiras de usar escape em um script Korn Shell:
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"
Para as cores terminais
man 5 terminfo
A notação $'' permite o escape ANSI-C:
green=$'\e[01;32m'
Pode ser que ksh88 não suporte $''
Eu uso um ksh88, mas posso mudar para 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,
mas não expande a sequência de escape. No ksh93 $''
o mesmo problema
green="$'\e[01;32m'"
Usar letras maiúsculas E
resolveu o problema (estranho!!!):
print $'\E[01;32m hello'
Para resumir:
\E works
\e NO
\033 works just with echo
^[ ^v^[ do not work at all
Responder1
Experimente isto:
stty -a
e veja se lnext
é ^V
. Se não, tente:
stty lnext ^V
onde você digitará "^" (caret) e "V" como caracteres separados. Agora tente ver se você consegue digitar um escape usando ^V^[
( ^VEsc
funciona no seu teclado?).
Além disso, verifique se você está no modo emacs
Dependendo de como você o está usando, existem algumas outras maneiras de usar escape em um script Korn Shell:
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"
Claro, você normalmente não produziria escape sozinho.
Responder2
Se bem me lembro do AIX, a sequência de escape Ctrl+ Vdeve funcionar, mas lembro também que o TERM padrão no AIX nem sempre foi o que você esperaria. Verifique sua $TERM
variável. Se for estranho:
export TERM=xterm
ou
export TERM=vt100
Se você $TERM
estiver errado, mesmo que Ctrl+ Vfuncione, Ctrl+ [pode não fazer nada. É uma sequência VT100.