Я новичок в 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.