Strg-V-Taste unter AIX

Strg-V-Taste unter AIX

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 Elö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. ^VWenn 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^[( ^VEscfunktioniert 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 $TERMVariable. Wenn sie seltsam ist:

export TERM=xterm  

oder

export TERM=vt100

Wenn Sie falsch liegen, kann es sein, dass + nichts bewirkt , $TERMauch wenn Ctrl+ Vfunktioniert . Es handelt sich um eine VT100-Sequenz.Ctrl[

verwandte Informationen