加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash tab完成如何工作?

发布时间:2020-12-15 16:47:04 所属栏目:安全 来源:网络整理
导读:我最近花了很多时间在shell,我想知道如何标签自动完成工作。它背后的机制是什么? bash如何知道每个目录的内容? 自动完成有两个部分: 如已经由fixje所提到的,readline库管理命令行编辑,并在按下tab时调用bash以启用完成。 Bash然后给出(见下一点)一个可
我最近花了很多时间在shell,我想知道如何标签自动完成工作。它背后的机制是什么? bash如何知道每个目录的内容?
自动完成有两个部分:

>如已经由fixje所提到的,readline库管理命令行编辑,并在按下tab时调用bash以启用完成。 Bash然后给出(见下一点)一个可能的完成列表,并且readline插入与已经输入的字符明确识别的字符一样多(你可以非常多地配置readline库,参见Bash手册的第Command line editing节细节。)
> Bash本身具有完整的buildin来定义单个命令的完成机制。如果对当前命令没有定义,它使用完成文件名(使用opendir / readdir,如Ignacio所说)。

定义您自己的完成的部分在Programmable Completion部分中描述
完成?选项??命令?您定义一些命令的完成。例如完整的su说
当完成su命令的参数时,搜索当前系统的用户。

如果这比较复杂
正常选项可以覆盖(例如,取决于参数索引或取决于先前的参数的不同完成)
你可以使用-F函数,然后它将调用一个shell函数来生成可能的完成列表。
(这用于例如git完成,这是非常复杂,取决于子命令和有时
给出的选项,并且有时使用分支的名称(这些都不是什么bash知道的)。

您可以使用简单的完整列出在当前bash环境中定义的现有完成,以获得可能的结果。如果你安装了bash-completion软件包(或者在你的系统上命名了),那么会安装很多命令的完成,正如Wrikken所说,/ etc / bash_completion包含一个bash脚本,然后经常在shell启动时执行配置此。其他自定义完成脚本可以放在/etc/bash_completion.d中;这些都源自/ etc / bash_completion。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读