Сделать стрелку и удалить ключи в командной строке KornShell

Я новичок в Unix, и я использую sun solaris (думаю, я думаю, 10). У меня установлена ​​оболочка как KornShell (ksh).

Мне интересно, как сделать клавиши со стрелками и удалить ключ в командной строке. Я сделал set -o emacs и работает backspace, но не клавиши со стрелками и клавиши удаления.

Также возможно установить стрелку вверх и вниз для циклического перехода по истории командной строки?

Ответы

Ответ 1

Для клавиш со стрелками вы можете поместить это в свой файл .kshrc в свой домашний каталог:

set -o emacs
alias __A=`echo "\020"`     # up arrow = ^p = back a command
alias __B=`echo "\016"`     # down arrow = ^n = down a command
alias __C=`echo "\006"`     # right arrow = ^f = forward a character
alias __D=`echo "\002"`     # left arrow = ^b = back a character
alias __H=`echo "\001"`     # home = ^a = start of line
alias __Y=`echo "\005"`     # end = ^e = end of line

Обратите внимание, что перед буквами на левой стороне знака равенства есть два символа подчеркивания. В правой части равенства цель состоит в том, чтобы получить соответствующий контрольный символ, присвоенный псевдониму. Способ, которым этот script делает это, - это запустить команду (через обратную связь)

echo "\020"

чтобы получить символ управления-n, присвоенный __B.

Ответ 2

Я использовал следующий и работает нормально:

set -o emacs

Примечание: это фактические управляющие символы. В vi, введите я ctrl-v, затем ctrl-P (если u хочет ctrl-p)

alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F

и добавьте ниже строки:

alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F

Ответ 3

Не бойся. Просто администратор изменит оболочку по умолчанию на bash. bash входит в состав Solaris 10, имеет высокую совместимость с ksh и поддерживает сопоставления клавиш, которые вам нравятся. Вы можете запустить bash, просто набрав:

$ bash

Вы можете выполнить bash из вашего .profile, если ваш администратор не поможет. Вот что сделает ваш администратор, чтобы изменить user1 на bash (с правами root):

# passwd -e user1
Old shell: /bin/ksh
New shell: /usr/bin/bash        <- You type this, use whence bash to look up the path
passwd: password information changed for user1

Ответ 4

По умолчанию ksh может быть ksh88, который не поддерживает макросы псевдонима __. Ksh93 делает. В принципе, если он не работает - вы, вероятно, используете ksh88.