
私は 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[