
Ich bin neu bei AIX und mir fehlen einige Tricks, die bei anderen *nix-Varianten gut funktionieren.
Ich brauche eine CTRLSequenz in einem KSH-Skript, wie ^[
( CTRL-[), und dazu verwende ich normalerweise ctrl-v [, aber hier funktioniert es nicht.
Im Moment bin ich gezwungen, eine Windows-Box mit Putty zu verwenden, sodass ich die Skripte nicht einmal auf meiner Linux-Box bearbeiten und auf den AIX-Server übertragen kann.
Wissen Sie, warum und wie ich das Problem beheben kann?
Um die Antworten zusammenzufassen:
@Dennis:
Es gibt noch einige weitere Möglichkeiten, Escape in einem Korn-Shell-Skript zu verwenden:
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"
Für die Terminalfarben
man 5 terminfo
Die Notation „$“ ermöglicht ANSI-C-Escapezeichen:
green=$'\e[01;32m'
Es kann sein, dass ksh88 $'' nicht unterstützt
Ich verwende ein KSH88, kann aber zu KSH93 wechseln.
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,
aber es erweitert die Escape-Sequenz nicht. Auf ksh93 $''
das gleiche Problem
green="$'\e[01;32m'"
Die Verwendung von Großbuchstaben E
löste das Problem (seltsam!!!):
print $'\E[01;32m hello'
Zusammenfassen:
\E works
\e NO
\033 works just with echo
^[ ^v^[ do not work at all
Antwort1
Versuche dies:
stty -a
und prüfen Sie, ob lnext
. ^V
Wenn nicht, versuchen Sie:
stty lnext ^V
Hier geben Sie "^" (Caretzeichen) und "V" als separate Zeichen ein. Versuchen Sie nun, ob Sie mit Escape eintippen können ^V^[
( ^VEsc
funktioniert das auf Ihrer Tastatur?).
Überprüfen Sie auch, ob Sie sich im Emacs-Modus befinden
Je nachdem, wie Sie es verwenden, gibt es noch einige andere Möglichkeiten, Escape in einem Korn-Shell-Skript zu verwenden:
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"
Natürlich würden Sie „escape“ normalerweise nicht allein ausgeben.
Antwort2
Wenn ich mich recht erinnere, sollte die Escape-Sequenz Ctrl+ unter AIX Vfunktionieren, allerdings erinnere ich mich auch, dass der Standard-TERM unter AIX nicht immer das war, was man erwarten würde. Überprüfen Sie Ihre $TERM
Variable. Wenn sie seltsam ist:
export TERM=xterm
oder
export TERM=vt100
Wenn Sie falsch liegen, kann es sein, dass + nichts bewirkt , $TERM
auch wenn Ctrl+ Vfunktioniert . Es handelt sich um eine VT100-Sequenz.Ctrl[