Заставьте клавиши со стрелками и delete работать в командной строке KornShell
Вопрос
Я новичок в Unix и использую sun solaris (по-моему, v10).У меня есть оболочка, установленная как KornShell (ksh).
Мне интересно, как заставить клавиши со стрелками и клавишу удаления работать в командной строке.Я выполнил set -o emacs, и backspace работает, но не с клавишами со стрелками и клавишами удаления.
Также можно ли настроить клавиши со стрелками вверх и вниз для циклического просмотра истории командной строки?
Решение
Что касается клавиш со стрелками, вы можете поместить это в свой файл .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
Обратите внимание, что перед буквами в левой части знака равенства стоят два символа подчеркивания.В правой части значения equal цель состоит в том, чтобы получить правильный управляющий символ, присвоенный псевдониму.Способ, которым этот скрипт делает это, заключается в выполнении команды (через back-tics)
echo "\020"
чтобы получить управляющий символ-n, присвоенный __B.
Другие советы
Я использовал следующее, и оно работает нормально:
set -o emacs
Примечание:это фактические управляющие символы.В vi введите i ctrl-v, затем ctrl-P (если вам нужен 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
Не сопротивляйся этому.Просто попросите вашего администратора изменить вашу оболочку по умолчанию на 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
ksh по умолчанию может быть ksh88, который не поддерживает макросы alias __ keyboard.Ksh93 так и делает.В принципе, если это не сработает - вы, вероятно, используете ksh88.