клавиша ctrl-v на AIX

клавиша ctrl-v на AIX

Я новичок в AIX и мне не хватает некоторых приемов, которые хорошо работают в других версиях *nix.

Мне нужна CTRLпоследовательность в скриптах ksh, например ^[( CTRL-[), и для этого я привык использовать ctrl-v [, но здесь это не работает.

На данный момент я вынужден использовать Windows-компьютер с Putty, поэтому я даже не могу редактировать скрипты на моем Linux-компьютере и переносить скрипты на сервер AIX.

Знаете ли вы, почему и как можно решить эту проблему?

Продолжим ответы:

@Деннис:

Есть еще несколько способов использования escape в скрипте оболочки 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" как отдельные символы. Теперь попробуйте набрать escape с помощью ^V^[( ^VEscработает ли на вашей клавиатуре?).

Также проверьте, находитесь ли вы в режиме emacs.

В зависимости от того, как вы его используете, есть еще несколько способов использования escape в скрипте оболочки 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+ Vescape должна работать, однако я также помню, что TERM по умолчанию в AIX не всегда был таким, как вы ожидаете. Проверьте переменную $TERM. Если она странная:

export TERM=xterm  

или

export TERM=vt100

Если вы $TERMошибаетесь, то даже если Ctrl+ Vработает, Ctrl+ [может ничего не сделать. Это последовательность VT100.

Связанный контент