【问题标题】:Unix-bash cd command and then tab shows both directories and filesUnix-bash cd 命令,然后选项卡显示目录和文件
【发布时间】:2016-11-04 18:24:51
【问题描述】:

在 unix bash shell 中,当我输入 cd 然后按 Tab 键时,它会列出目录和文件作为可供选择的选项。显示目录和可能的目录链接必须是直观的。列出文件不是很直观吗?

比如./然后tab只列出有执行权限的项目,很聪明。

为什么 bash 没有与 cd 命令相同的智能?是bug吗?

【问题讨论】:

  • 我刚试过,没有注意到你描述的行为;你确定吗?
  • 显然,是的。我正在使用 Linux 2.6.32-431.el6.x86_64。即使在 Linux 5.9 中也是如此。 Bash 版本:GNU bash,版本 4.1.2(1)-release (x86_64-redhat-linux-gnu) 版权所有 (C) 2009 Free Software Foundation, Inc.
  • Thomas,你的意思是,cd+tab 只为你完成目录吗?您使用的是哪种 Linux?
  • 是的,它只完成目录;我尝试使用 Linux Mint 17 和 Raspbian Jessie。
  • 似乎我使用的每个发行版都启用了一组不同的完成规则。

标签: bash unix tab-completion rhel6 bash-completion


【解决方案1】:

将以下命令添加到您的bashrc

complete -d cd  # or ``complete -A directory cd''

那么它只会自动完成cd 命令的目录(包括指向目录的符号链接)。

详情请参阅 bash 手册中的 Programmable Completion Builtins

【讨论】:

    【解决方案2】:

    在这两种情况下,您都会获得文件名完成。 bash 具有足够的内置智能来识别命令名称必须具有可执行权限,因此它将 ./ + Tab 限制为可执行文件。将 arguments 补全到 cd 属于 programmable 补全的范畴(因为尽管不明智,但有可能用完全不同的命令隐藏内置命令不一定将目录作为参数)。

    bash 的可编程补全功能非常好,但无论出于何种原因,它实际上并没有在基础安装中包含任何此类补全。不过,有一个large set of completions available,包括cd

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 2015-01-01
      • 2012-05-11
      • 1970-01-01
      相关资源
      最近更新 更多