“ bind -x”可以访问当前命令行吗?

时间:2019-03-29 12:46:52

标签: bash readline

当我键入某些命令时,有时我想阅读该命令的帮助。例如,当我输入

sort --overwrite some_texI # I is a cursor

,我想检查sort命令是否具有--overwrite选项,读取sort --help的输出或我所做的任何选项摘要。我希望bind -x可以实现这一点,但不知道如何传递(一部分)当前命令行信息(在本例中为“ sort”一词)。当然,bind -x 'KEY: "sort --help"'可以很好地工作,但是我希望它适用于所有命令。因此,伪命令为bind -x 'KEY: "CURRENT_COMMAND --help"'

有人可以提供解决方案或提示吗?

1 个答案:

答案 0 :(得分:0)

您可以使用bash的READLINE_LINE变量。 man bash

  

bind [-m键映射] keyseq:readline-command

     

(剪裁)

     

-x keyseq:shell-command

     

(snip)执行shell命令时,shell将READLINE_LINE变量设置为readline行缓冲区的内容

因此,您想要的是READLINE_LINE的第一个单词。因此,解决方案是bind -x 'KEY": "array=($READLINE_LINE); ${array[0]} --help"'