Bash和readline:如何将键绑定到" silent命令"我自己在bash?

时间:2015-05-31 12:28:12

标签: bash libreadline

我想要做的很简单:使用readline启动文件inputrc为我的程序之一添加一个键绑定,但是,由于我的程序没有产生任何输出,我不希望命令名出现在stdout上。

我的问题是:

.inputrc内容:

"\e[1;5A":'pipe_send\n'

当我按下ctrl + uparrow时,会出现命令行" pipe_send":

[ alexkag@$$$$$:: / ]                                                  
$ pipe_send

我喜欢的不是pipe_send出现在命令行上,就像readline提供的命令一样,例如history-search-backward,history-search-forward等。 你知道怎么办?也许shoudn我使用readline?注意:我的键绑定只能在bash中显示,而不能在整个系统中显示。

1 个答案:

答案 0 :(得分:0)

正如gniourf_gniourf的评论所述,解决方案是:

bind -x '"\e[1;5A":pipe_send'
只要按下某个键,

bind -x就会告诉bash执行命令:

  

-x keyseq:shell-command

     

导致在输入keyseq时执行shell命令。执行shell-command时,shell将READLINE_LINE变量设置为Readline行缓冲区的内容,将READLINE_POINT变量设置为插入点的当前位置。如果执行的命令更改了READLINE_LINE或READLINE_POINT的值,则这些新值将反映在编辑状态中。

\e[1;5A是为 Ctrl Up 发送的终端代码