我是Unix新手,正在使用sun solaris(我认为是v10)。我把我的shell设置为KornShell(ksh)。
我想知道如何在命令行中创建箭头键并删除键工作。我已经设置了-o emacs和退格键,但没有箭头键和删除键。
是否可以设置向上和向下箭头键以循环显示命令行历史记录?
答案 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