如何将bash自动完成的结果作为字符串获取?

xti*_*tin 4 bash command-line autocomplete bash-scripting

我正在寻找的不是如何在 bash 中为另一个程序添加自动完成功能,而是一种将 bash 中发生的事情的结果转换为字符串的方法,基本上:

autocomplete "/etc/apa"
Run Code Online (Sandbox Code Playgroud)

会回来

/etc/apache2/
Run Code Online (Sandbox Code Playgroud)

所以我可以在我的脚本中使用它。

非常感谢任何帮助,因为我能找到的只是如何使用“完整”的 bash 函数,它做了一些不同的事情;)

干杯,拉斐尔

su.*_*oot 6

Bash有一个内置命令compgen可以帮助你很多。例如,如果您想知道键入时哪些目录会自动完成cd /etc/s<TAB>

$ compgen -d /etc/s
/etc/security
/etc/sgml
/etc/skel
/etc/ssh
/etc/ssl
/etc/subversion
/etc/sudoers.d
/etc/sysctl.d
$
Run Code Online (Sandbox Code Playgroud)

然后,以下命令会告诉您将进入哪个目录cd /etc/se<TAB>

$ compgen -d /etc/se
/etc/security
$
Run Code Online (Sandbox Code Playgroud)

compgen可以采用complete命令的大多数选项。有关更多详细信息,请参阅bash 的手册