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

时间:2013-05-29 05:04:00

标签: macos bash bash-completion iterm2

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

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

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

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

  1. 输入move(没有别的)
  2. tab tab tab 遍历制表符完成选项,直到我到达log_2.gz
  3. 输入destination
  4. 但是在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
    8. 正如您所看到的,即使您知道目标文件名,bash也需要更多步骤,但想象一下您不确定文件名究竟是什么的情况(可能ls太长了)。在经过一些 tab +输入之后,我经常发现自己处于这种情况,我被迫放弃命令,再次运行ls,复制文件名,甚至可以运行pwd来与文件夹连接,然后从我离开的地方继续。这非常烦人。

1 个答案:

答案 0 :(得分:7)

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

set show-all-if-ambiguous on
set completion-ignore-case on
TAB: menu-complete