【问题标题】:Ignore a path entry with bash tab-completion使用 bash 制表符完成忽略路径条目
【发布时间】:2023-03-23 20:07:01
【问题描述】:

我有两个命令,foofoo-bar,其中foo 是指向foo-bar 的符号链接。我希望能够输入f+TAB(假设这些是路径上仅有的两个以f 开头的命令)并完成其中一个(意思是全名后面的空格)。

最终发生的事情是,由于foo-bar,它只完成了foo(没有空格)。然后按空格键显然不需要太多工作,但这会打断我的流程。

一些额外的细节:

  • foofoo-bar 在同一个目录中。
  • 不能删除/移动foo(我隐藏了一些细节)。

有没有办法忽略特定的路径条目?

【问题讨论】:

    标签: bash path autocomplete tab-completion


    【解决方案1】:

    你使用了FIGNORE,虽然它有一些奇怪的属性。

    FIGNORE 需要正确的后缀。所以忽略 foo-bar,任何这些都可以工作:

    FIGNORE=bar
    FIGNORE=-bar
    FIGNORE=r
    FIGNORE=oo-bar
    

    导入的东西不是尝试FIGNORE=foo-bar,因为它不是正确的后缀。

    【讨论】:

      【解决方案2】:

      试试这个:

      FIGNORE=foo-bar
      

      【讨论】:

      • 这几乎可以工作,但正如在接受的解决方案中指出的那样,FIGNORE 需要一个适当的后缀。
      • @Ed:抱歉,我误读了您的问题,我将其设置为忽略 foo 而不是 foo-bar。但是,FIGNORE=foo-bar 对我有用。
      • 奇怪,不知道为什么FIGNORE=foo-bar 适合你(不适合我)。 FIGNORE=oo-bar 不过对我有用。
      • @Ed:我在带有 Bash 3.2.49(23)-release 的 Cygwyn 和带有 4.0.33(1)-release 的 Ubuntu 上都试过了。你的是什么版本的?
      • 我在 bash 3.2.39(1)-release (openSUSE 11.1) 和 bash 3.2.48(1)-release (OS X 10.6) 和 bash 4.0.35(1)-release ( Fedora 核心 12)。在所有这些版本中,它仅在我使用正确的后缀时才有效。不知道为什么你会看到不同的东西。
      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      相关资源
      最近更新 更多