免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1131 | 回复: 0
打印 上一主题 下一主题

bash中绑定特殊键 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-05 16:52 |只看该作者 |倒序浏览

                                  下午远程登录到Solaris时,发现按下delete键输出~符号而不是删除光标下的字符,于是google一番,总结成以下这篇文章。
  现在的键盘大多有一些特殊键,一般情况下能在Windows正常使用,但在Unix-like系统下就极有可能不能正常工作,甚至连像delete这样的常用键都有问题。许多从Windows转到Unix-like系统的朋友经常被类似这样的小问题困扰,然后就武断地认为Unix-like系统比不上Windows。其实,很多这样那样的问题根本不算是问题,只是我们受Windows的影响太严重,观念上转变不过来罢了。就像一个杯子装满了水,再往杯子里倒水,就会装不下去了,因此我们要先把杯中的水倒掉。Unix-like系统最吸引人的其中一点就是它可的可定制性高,满足我们DIY的欲望。下面来说一下具体的操作。
  首先,我们需要知道按下某个键时向系统发送的是什么信号。在本例中,按下delete键,key sequence是什么呢?可以用read命令来捕获:
$read
^[[3~
得到该值后,我们用bind命令进行绑定。bash中删除键的readline-function为delete-char,所以我们用下面的命令绑定:
bind '"\e[3~":delete-char'
值行注意的是,^[相当于[ESC]键,在shell中是用\e来表示的。所以,^[[24~要表示为\e[24~,其他键类似。另外,Ctrl
和Alt怎么表示呢?bash中分别用\C和\M代替。例如,Ctrl-t表示为\C-t,Alt-t表示为\M-t。至于bash的readline-
function可以从man手册中查看,可以用bind -l显示列表,bind
-P显示目前绑定的键。bash默认就有很多很好用的快捷键,各位有空可以熟悉一下。
  bind除了可以绑定bash的一些readline-function,还可以绑定shell命令,只需加上-x参数即可。例如:
  
bind -x '"\C-t" : "ls -l"'
bind -x '"\M-t" : "ls -a"'
  bind命令绑定默认不保存绑定的值,退出shell后即失效,我们可以把命令加到shell的启动脚本(如:~/.bashrc)中去。
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/42898/showart_334937.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP