使箭头和删除键在KornShell命令行中起作用

时间:2009-10-26 05:40:03

标签: unix shell ksh

我是Unix新手,正在使用sun solaris(我认为是v10)。我把我的shell设置为KornShell(ksh)。

我想知道如何在命令行中创建箭头键并删除键工作。我已经设置了-o emacs和退格键,但没有箭头键和删除键。

是否可以设置向上和向下箭头键以循环显示命令行历史记录?

5 个答案:

答案 0 :(得分:32)

对于箭头键,您可以将其放入主目录中的.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

请注意,等号左侧的字母前面有两个下划线字符。在等于的右侧,目标是获得分配给别名的适当控制字符。这个脚本的方式是运行命令(通过back-tics)

echo "\020"

将控制字符分配给__B。

答案 1 :(得分:9)

我使用了以下内容并且工作正常:

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

答案 2 :(得分:7)

不要打架。 让管理员将您的默认shell更改为bash。 bash包含在Solaris 10中,具有高度ksh兼容性,并且它支持您喜欢的键映射。 您只需输入以下命令即可启动bash:

$ bash

如果您的管理员没有帮助,您可以从.profile中执行bash。 以下是管理员将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

答案 3 :(得分:0)

默认的ksh可能是ksh88 - 它不支持别名__键盘宏。 Ksh93呢。基本上,如果它不起作用 - 你可能正在使用ksh88。

答案 4 :(得分:0)

由于我花了我很长时间才能弄清Mac上的删除键,因此要使删除键正常工作,可以将stty erase ^?添加到.kshrc文件中。无需键入^?的实际字符,您只需按Delete键,它将输出^?。因此,结合Tim的答案,我的.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
stty erase                  # prevent command from being echoed
stty erase ^?               # allow for delete key to work