gpt4 book ai didi

bash - 我可以通过扩展名制作制表符完成过滤器文件吗?

转载 作者:行者123 更新时间:2023-11-29 08:59:37 25 4
gpt4 key购买 nike

假设 myprogram 只使用 *.data 文件作为命令行参数。在终端中,当我们这样做时

$ myprogram <tab>

我们只希望列出 *.data 文件以供选项卡自动完成。这种行为是如何实现的?使用的 shell 是 Bash。

最佳答案

选项1

在你的 bash shell 中输入以下内容

complete -f -X '!*.data' myprogram

-f 选项告诉 complete 只根据文件名而不是目录来完成。 -X 选项允许您指定过滤模式。

选项 2

注意:此解决方案是全局性的。它会影响每个目录和每个命令的制表符完成(意思是 cdrm,以及 myprogram)。它的工作原理是允许您指定不会出现在制表符完成中的文件扩展名。这不完全是您所要求的,但是如果您的工作目录中除了 *.data 之外没有很多文件,则排除所有选项不会太麻烦。由于这两个原因,此选项可能不是您想要的,但仍然值得注意。

在文件 ~/.bash_profile 中添加行

FIGNORE=".py:.txt:.out:.exe:.c:<etc>"

其中的语法用于创建以冒号分隔的要忽略的文件扩展名列表。保存新的 .bash_profile 后,您必须键入 。 ~/.bash_profile 使您所做的更改生效。

更多信息

有关完整命令的更多信息,请查看 Programmable Completion Builtins在 Bash 手册中。

关于bash - 我可以通过扩展名制作制表符完成过滤器文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32189015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com