使箭头和删除键在KornShell命令行中起作用

use*_*854 18 unix shell ksh

我是Unix新手,正在使用sun solaris(我认为是v10).我把我的shell设置为KornShell(ksh).

我想知道如何在命令行中制作箭头键并删除键工作.我已经设置了-o emacs和退格键,但没有箭头键和删除键.

是否可以设置向上和向下箭头键以循环显示命令行历史记录?

小智 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
Run Code Online (Sandbox Code Playgroud)

请注意,等号左侧的字母前面有两个下划线字符.在等于的右侧,目标是获得分配给别名的适当控制字符.这个脚本的方式是运行命令(通过后台)

echo "\020"
Run Code Online (Sandbox Code Playgroud)

获取分配给__B的control-n字符.

  • 如果您能说出上面几行的作用会更有帮助吗? (2认同)

小智 9

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

set -o emacs
Run Code Online (Sandbox Code Playgroud)

注意:这些是实际的控制字符.在vi中,键入i ctrl-v然后键入ctrl-P(如果你想要一个ctrl-p)

alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F
Run Code Online (Sandbox Code Playgroud)

并添加以下行:

alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F
Run Code Online (Sandbox Code Playgroud)


小智 7

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

$ bash
Run Code Online (Sandbox Code Playgroud)

如果您的管理员没有帮助,您可以执行.profile.以下是管理员将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
Run Code Online (Sandbox Code Playgroud)