我正在使用 Bash 4.4。
[root@192 ~]# bash --version
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@192 ~]#
我想知道是否有任何方法可以使选项名称自动完成。例如,如果我输入realpath --re
并后跟一个Tab,它会帮助我填写选项名称中缺少的部分,然后我得到realpath --relative-to=
。
答案1
如果您启用了 bash-completion,那么命令选项已经存在,用于完成命令。您可以在类似的地方看到许多用于此目的的脚本和函数/usr/share/bash-completion
。安装的软件包喜欢git
将其脚本放入/etc/bash_completion.d/
.
仍然可能有一些脚本,例如realpath
或echo
,完成有限。要为长选项添加补全,realpath
您应该使用_longopt
,这是一个用于生成补全的 bash 函数,您可以使用 来查看它type -a
。
complete -F _longopt realpath
在执行此操作之前,您必须测试您尝试更改的内容是否已完成,方法是:
complete -p realpath
这可以说no completion specification
或现有规则,例如complete -F _minimal realpath
.新规则将覆盖它。因此,您不应该盲目地将任何功能(现有的或自定义的)分配给许多命令。命令的完成规则已经存在。
该更改适用于您当前的 shell。要使其永久化,您必须source
这样做,例如通过bashrc
。