我是 Unix 新手,正在使用 sun solaris(我认为是 v10)。我将外壳设置为 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
请注意,等号左侧的字母前有两个下划线字符。在等号的右侧,目标是获得分配给别名的正确控制字符。该脚本执行此操作的方式是运行命令(通过 back-tics)
echo "\020"
获取分配给 __B 的 control-n 字符。
我使用了以下并且工作正常:
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
不要与之抗争。只需让您的管理员将您的默认 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
默认的 ksh 可能是 ksh88 - 它不支持别名 __ 键盘宏。Ksh93 可以。基本上,如果它不起作用 - 您可能正在使用 ksh88。
因为我花了很长时间才弄清楚我的 Mac 上的删除键,所以要让删除键工作,你可以添加stty erase ^?
到你的.kshrc
文件中。无需为^?
您输入实际字符,只需点击删除键,它就会输出^?
. 所以结合蒂姆的回答,我的.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