AIX의 Ctrl-V 키

AIX의 Ctrl-V 키

저는 AIX를 처음 접했고 다른 *nix 버전에서 잘 작동하는 몇 가지 트릭을 놓치고 있습니다.

( ) CTRL와 같은 ksh 스크립트에 시퀀스가 ​​필요 하고 그렇게 하려면 을 사용하는 습관이 있지만 여기서는 작동하지 않습니다.^[CTRL-[ctrl-v [

지금은 퍼티가 포함된 Windows 상자를 사용해야 하므로 Linux 상자에서 스크립트를 편집하고 AIX 서버로 스크립트를 전송할 수도 없습니다.

문제가 발생하는 이유와 해결 방법을 알고 계시나요?

답변을 재개하려면:

@데니스:

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"  

터미널 색상의 경우

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

답변1

이 시도:

stty -a

그리고 가 lnext있는지 확인하세요 ^V. 그렇지 않은 경우 다음을 시도하십시오.

stty lnext ^V

여기서는 "^"(캐럿)과 "V"를 별도의 문자로 입력합니다. 이제 ^V^[( ^VEsc키보드에서 작동합니까?)를 사용하여 이스케이프를 입력할 수 있는지 확인해 보십시오 .

또한 emacs 모드에 있는지 확인하십시오.

사용 방법에 따라 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"

물론, 일반적으로 escape 자체를 출력하지는 않습니다.

답변2

AIX를 기억한다면 Ctrl+ V이스케이프 시퀀스가 ​​작동해야 하지만 AIX의 기본 TERM이 항상 예상한 것과는 달랐다는 것도 기억합니다. 변수를 확인하세요 $TERM. 이상한 경우 :

export TERM=xterm  

또는

export TERM=vt100

당신의 생각이 틀렸다면 +가 작동 $TERM하더라도 +는 아무것도 하지 않을 수도 있습니다. VT100 계열입니다.CtrlVCtrl[

관련 정보