Назад | Перейти на главную страницу

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

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

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

На данный момент я вынужден использовать окно Windows со шпатлевкой, поэтому я даже не могу редактировать сценарии на своем компьютере с 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,

но это не расширяет escape-последовательность. На кш93 $'' та же проблема

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

Попробуй это:

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 сам по себе.

Если я помню, с AIX, Ctrl+V escape-последовательность должна работать, однако я также помню, что TERM по умолчанию в AIX не всегда соответствовал вашим ожиданиям. Проверьте свои $TERM переменная. Если это странно:

export TERM=xterm  

или

export TERM=vt100

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