我是Unix的新手,正在使用sun solaris(我认为是v10)。我的外壳设置为KornShell(ksh)。
我想知道如何使箭头键和删除键在命令行中起作用。我已经完成了set -o emacs和退格键的工作,但是没有完成箭头键和Delete键的设置。
还可以设置向上和向下箭头键来循环浏览命令行历史记录吗?
对于箭头键,您可以将其放入主目录中的.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
文件中。不用键入^?
的实际字符,您只需按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