Сделать стрелку и удалить ключи в командной строке 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.