考虑这个单线程来激活complete -F _known_hosts foobar
的bash完成:
> foobar <TAB> <TAB>
这显示了
的完成选项列表> $(foobar <TAB> <TAB>
但不适用于
> `foobar <TAB> <TAB>
或
save as
我认为为反引号或$()内的表达式完成制表符很有意义。我怎样才能做到这一点?
答案 0 :(得分:1)
反勾或$()内的补全称为“命令替换”。
因此它看起来与其他一些问题类似:
对于基于Debian的Linux操作系统(如Ubuntu),问题是bash-completion应用程序中的一个已知错误:/ usr / share / bash-completion / completions
您可以在此处报告问题:
答案 1 :(得分:0)
如果只想完成命令,则可以执行以下操作:
1)打开文件/usr/share/bash-completion/bash_completion
。
2)转到功能_quote_readline_by_ref
。
3)将[[ ${!2} == \$* ]] && eval $2=${!2}
行替换为[[ ${!2} == \$\'* ]] && eval $2=${!2}
。
4)保存更改并退出。
此后,如果打开新选项卡并开始在引号或$()
中键入命令,则该命令将完成或显示正常发生的可能性。
请参见下面的示例:
[22:57]✓ -> echo $(ls
ls lsblk lscpu lshw lsipc lslogins
lsof lspcmcia lsusb lsattr
如果您遇到任何问题,请告诉我。
答案 2 :(得分:0)
尝试以下方法:
Esc + / (要完成文件名,即您输入了一些字符
Ctrl + x + / (列出可能的文件名-请注意;有2 +)
(我一直在寻找这个问题的答案;然后从bash手册页中获得了它:-))