AIX の ctrl-v キー

AIX の ctrl-v キー

私は AIX を初めて使用するので、他の *nix フレーバーではうまく機能するいくつかのトリックがわかりません。

CTRLksh スクリプトでは^[( ) のようなシーケンスが必要ですCTRL-[が、そのためには を使用する習慣がありますctrl-v [が、ここでは機能しません。

現時点では、PuTTY を搭載した 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 シェル スクリプトで 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"

もちろん、通常は escape を単独で出力することはありません。

答え2

AIX の場合、Ctrl+Vエスケープ シーケンスは機能するはずですが、AIX のデフォルトの TERM が必ずしも期待どおりではなかったことも覚えています。$TERM変数を確認してください。おかしい場合は、次の操作を実行してください。

export TERM=xterm  

または

export TERM=vt100

間違っている場合は、 + が機能して$TERMも、+ は何も実行しない可能性があります。これは VT100 シーケンスです。CtrlVCtrl[

関連情報