可以将 Tab 热键添加到我的 shell 脚本中吗?

可以将 Tab 热键添加到我的 shell 脚本中吗?

我可以在 shell 中使用 Tab 热键在有输入的情况下自动完成吗

像这样:

在此输入图像描述

当我输入“test”并点击Tab热键时,“test”将自动补全为“test.md”。

欢迎大家提出建议,拜托!

答案1

您可以用来rlwrap向几乎任何命令行程序(包括 shell 脚本)添加 readline 支持(包括完成和历史记录/调用)。

请参阅man rlwrap参考资料 获取更多详细信息,和/或编辑您的问题以包含最小的示例 shell 脚本(如果您需要有关使用 rlwrap 的更具体建议)。

rlwrap已为大多数 Linux 发行版打包,您可以在以下位置找到源代码https://github.com/hanslub42/rlwrap

顺便说一句,debian rlwrap 包的描述字段显示:

Description-en: readline 功能命令行包装器 该软件包提供了一个小型实用程序,它使用 GNU readline 库来允许编辑任何其他命令的键盘输入。输入历史记录会在调用过程中被记住,对于每个命令都是单独的;历史补全和搜索工作与 bash 中一样,并且可以在命令行上指定补全单词列表。

顺便说一句,手册页中提到的一件有用的事情是:

在 shell 脚本中,在“一次性”模式下使用 rlwrap 作为 read 的替代

order=$(rlwrap -pYellow -S 'Your pizza? ' -H past_orders -P Margherita -o cat)

这将作为类似的替代品read -p 'Your order? ' order

相关内容