如何使bash tab-completion像windows'cmd.exe一样工作?

Mat*_*aus 6 macos bash bash-completion iterm2

假设我有一个包含文件的文件夹,其名称如下:

  • log_1.log
  • log_2.log
  • log_2.gz

我想在log_2.gz上执行一些操作,比如说移动.

在Windows cmd.exe中,我习惯于执行以下步骤:

  1. 输入move(没有别的)
  2. tabtabtab 遍历制表符完成选项,直到我到达 log_2.gz
  3. 类型 destination

但是在bash shell中(在Mac OS X 10.8.3上的iTerm2中),我必须做这样的事情:

  1. 类型 mv l
  2. tab它带我log_去做一个恼人的哔哔声
  3. 类型 2
  4. tab它带我log_2.去做一个恼人的哔哔声
  5. 类型 g
  6. tab带我去log_2.gz,并且令人满意地保持沉默
  7. 类型 destination

正如您所看到的,即使您知道目标文件名,bash也需要更多步骤,但想象一下您不确定文件名究竟是什么的场景(可能ls太长了).我经常发现自己在这种情况下经过一些tab+键入后被迫放弃命令,ls再次运行,复制文件名,甚至可以运行一个pwd与文件夹连接,然后从我离开的地方继续.这非常烦人.

jay*_*ngh 7

您可以在.inputrc(如果没有,然后创建)文件中添加以下内容.添加后,请获取文件或注销并重新登录.

set show-all-if-ambiguous on
set completion-ignore-case on
TAB: menu-complete
Run Code Online (Sandbox Code Playgroud)

  • 注意:如果你创建`~/.inputrc`,一定要在顶部加上`$include /etc/inputrc`,否则用户的副本将覆盖系统副本。 (2认同)