Unix 使箭头键和删除键在KornShell命令行中工作

Unix 使箭头键和删除键在KornShell命令行中工作,unix,shell,ksh,Unix,Shell,Ksh,我是Unix新手,正在使用sun solaris(我想是v10)。我的外壳设置为KornShell(ksh) 我想知道如何使箭头键和删除键在命令行中工作。我已经完成了set-o emacs和退格操作,但没有使用箭头键和删除键 另外,是否可以设置向上和向下箭头键以循环浏览命令行历史记录?不要使用它。 只需让管理员将默认shell更改为bash即可。 bash包含在Solaris 10中,与ksh高度兼容,并且支持您喜欢的密钥映射。 您只需键入以下内容即可启动bash: $ bash 如果管理员没

我是Unix新手,正在使用sun solaris(我想是v10)。我的外壳设置为KornShell(ksh)

我想知道如何使箭头键和删除键在命令行中工作。我已经完成了set-o emacs和退格操作,但没有使用箭头键和删除键

另外,是否可以设置向上和向下箭头键以循环浏览命令行历史记录?

不要使用它。 只需让管理员将默认shell更改为bash即可。 bash包含在Solaris 10中,与ksh高度兼容,并且支持您喜欢的密钥映射。 您只需键入以下内容即可启动bash:

$ bash
如果管理员没有帮助,您可以从.profile中执行bash。 下面是管理员将user1更改为bash(作为root用户)的操作:

#passwd-e user1
旧外壳:/bin/ksh

新shell:/usr/bin/bash对于箭头键,您可以将其放入主目录中的.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)


要获取分配给uu B.

的control-n字符,默认的ksh可能是ksh88-它不支持别名键盘宏。Ksh93有。基本上,如果它不起作用-您可能正在使用ksh88。

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

set -o emacs
注:这些是实际控制字符。在vi中,键入i ctrl-v,然后键入ctrl-P(如果您想要一个ctrl-P)

并添加以下行:

alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F

由于我花了很长时间才在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

Solaris 10中没有
chsh
?如果您能知道上面几行的作用,这将更有帮助。此外,如果您没有.kshrc文件,请创建一个并将上述内容添加到其中。使用以下命令“ENV=$HOME/.kshrc;export ENV”设置ENV,并通过发出“printenv”命令再次确保。注意,pdksh和mksh都使用
.mkshrc
文件\uu A做什么?这是任意的还是绑定到向上箭头所必需的?如果我想为
^?
alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F
alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F
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