
Soy nuevo en AIX y extraño algunos trucos que funcionan bien en otras versiones de *nix.
Necesito una CTRLsecuencia en scripts ksh, como ^[
( CTRL-[) y para hacer eso tengo la costumbre de usar ctrl-v [, pero aquí no funciona.
En este momento estoy obligado a usar un cuadro de Windows con PuTTY, por lo que ni siquiera puedo editar los scripts en mi cuadro de Linux y transferirlos al servidor AIX.
¿Sabes por qué y cómo puedo solucionar el problema?
Para resumir las respuestas:
@Dennis:
Hay algunas otras formas de utilizar el escape en un script de shell Korn:
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 los colores de los terminales
man 5 terminfo
La notación $'' permite el escape ANSI-C:
green=$'\e[01;32m'
Puede ser que ksh88 no admita $''
Utilizo un ksh88, pero puedo cambiar a 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,
pero no expande la secuencia de escape. En ksh93 $''
el mismo problema
green="$'\e[01;32m'"
El uso de mayúsculas E
resolvió el problema (¡¡raro!!!):
print $'\E[01;32m hello'
Para resumir:
\E works
\e NO
\033 works just with echo
^[ ^v^[ do not work at all
Respuesta1
Prueba esto:
stty -a
y ver si lnext
es ^V
. Si no, prueba:
stty lnext ^V
donde escribirá "^" (carácter) y "V" como caracteres separados. Ahora intenta ver si puedes escribir un escape usando ^V^[
(¿ ^VEsc
funciona en tu teclado?).
Además, verifique si está en modo emacs.
Dependiendo de cómo lo uses, hay algunas otras formas de usar el escape en un script de shell Korn:
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"
Por supuesto, normalmente no generarías escape por sí solo.
Respuesta2
Si mal no recuerdo con AIX, la secuencia de escape Ctrl+ Vdebería funcionar, sin embargo, también recuerdo que el TÉRMINO predeterminado en AIX no siempre fue el que cabría esperar. Comprueba tu $TERM
variable. Si es raro:
export TERM=xterm
o
export TERM=vt100
Si $TERM
está equivocado, incluso si Ctrl+ Vfunciona, es posible que Ctrl+ [no haga nada. Es una secuencia VT100.