我是Unix的新手,正在使用sun solaris (v10)操作系统。我的shell设置为KornShell(ksh)。
我想知道如何使箭头键和删除键在命令行中工作。我已经执行了set -o emacs命令,回退键有效,但箭头键和删除键无效。
同时,是否可以将上箭头键和下箭头键设置为循环浏览命令历史记录?
对于箭头键,你可以将以下内容放入你的主目录下的 .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
请注意等号左侧的字母之前有两个下划线字符。在等号右侧,目标是将正确的控制字符分配给别名。这个脚本实现这一点的方法是通过运行命令 (使用反引号)
echo "\020"
获取将控制字符"control-n"分配给 "__B"的方法。
我使用了以下代码,目前运行正常:
set -o emacs
注意:这些是实际的控制字符。在vi中,输入i ctrl-v,然后ctrl-P(如果您想要一个ctrl-p)。
注意:这些是实际的控制字符。在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
不要与之抗争。 只需让管理员将您的默认shell更改为bash即可。 bash已包含在Solaris 10中,高度兼容ksh,并支持您喜欢的键映射。 您只需输入以下命令即可启动bash:
$ bash
# 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
chsh
命令? - Josh Lee默认的ksh可能是ksh88 - 不支持别名__键盘宏。 Ksh93可以。 基本上,如果不起作用,您可能正在使用ksh88。
由于我花费了很长时间才弄明白Mac上的删除键,为了让删除键正常工作,您可以将stty erase ^?
添加到您的.kshrc
文件中。而不是键入实际字符^?
,您只需按下删除键即可输出^?
。 因此,结合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
.mkshrc
文件。 - thecarpy^?
,该怎么办? - knueser