Bash-completion:始终显示所有文件

Ale*_*ger 3 bash

我最近安装了bash-completion(通过自制程序)。它现在省略了我希望它显示的完成列表中的文件,并完全省略了有效选项,例如:

[alex@mbp foo]$ ls
bar.csv foo.csv
[alex@mbp foo]$ sh ../dosomething.sh fo<TAB>
((nothing shown))
Run Code Online (Sandbox Code Playgroud)

作为一个重度命令行用户,这是非常烦人的。谁能告诉我如何禁用这种行为?我在文档或谷歌中找不到任何有用的东西。

bash-completion FAQ说:

问:bash 完成代码禁止某些命令在我的环境中具有合法扩展名的文件上完成。我是否必须禁用该命令的完成才能完成我需要的文件?

答:不可以。使用 M-/(用 bash 手册页的话说)尝试在光标左侧的文本上完成文件名。这将规避 bash 完成代码设置的任何文件类型限制。

但这对我来说不是一个可以接受的解决方案 - 我希望“TAB”显示所有文件/目录,无论扩展名是否对文件有效(这就是它在过去 20 年中对我来说运作良好的方式)。

我怎样才能实现这个目标?

我更喜欢.bashrc/.bash_profile设置而不是删除全局完成脚本。以下是我目前包含 bash-completion 的方式(这只是一个普通的自制软件安装):

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
Run Code Online (Sandbox Code Playgroud)

更新:我已经看到了这个Bash 文件名选项卡完成,但它并不完全是我想要的,因为它需要为地球/我的系统上的每个可能的文件扩展名进行太多的手动工作。

小智 5

也为此烦恼,所以我阅读了bash手册。我相信将此作为您的~/.inputrc文件可以实现所需的行为:

TAB: complete-filename
M-/: complete
Run Code Online (Sandbox Code Playgroud)

具有全套规则的常规补全映射到 ,Meta-/仅文件名补全映射到TAB.