我最近在shell中花费了很多时间,我想知道标签自动完成是如何工作的。它背后的机制是什么? bash如何知道每个目录的内容?bash选项卡完成如何工作?
回答
有两个部分来自动完成:
Readline库,如已经fixje提到,管理命令行编辑,并在按下标签时调回bash,以启用完成。然后,Bash给出(参见下一个点)可能完成的列表,并且readline将插入尽可能多的字符,这些字符是已经输入的字符明确标识的。(您可以非常详细地配置readline库,请参阅Bash手册的Command line editing部分详细信息)。
Bash本身有buildin
complete
来定义个别命令的完成机制。如果对于当前命令没有定义,则它使用文件名完成(使用opendir/readdir,如Ignacio所述)。在Programmable Completion部分描述了定义自己的完井部分。总之,使用
complete «options» «command»
您可以定义某个命令的完成。例如complete -u su
表示 当完成su
命令的参数时,搜索当前系统的用户。如果是更复杂的比 正常选项可以覆盖, 可以使用
-F function
,然后将调用一个shell函数生成的列表(取决于参数指标,或者根据之前的参数例如不同的完井)可能的完成。 (这是例如用于git的完成,这是非常复杂的,这取决于子,有时 在选项中给出,并使用有时分支的名称(这是什么庆典知道)。
你可以使用简单的complete
列出当前bash环境中定义的现有完成,以便对可能的情况有一个印象。如果安装了bash-completion软件包(或者它已在系统上命名),那么可以完成很多命令正如Wrikken所说的那样,/ etc/bash_completion包含一个bash脚本,该脚本通常在shell启动时执行以配置此脚本。其他自定义脚本可以放在/etc/bash_completion.d中;那些都来自/ etc/bash_completion。
如果您对基本知识感兴趣: Bash使用readline,它具有历史记录和基本完成功能。如果你想得到详细的理解,你可以检查来源。 此外,还可以使用输入行以完成建立自己的CLI界面
- 1. 如何使PowerShell的选项卡完成的工作像猛砸
- 2. 如何使用gflags让自己的项目获得bash选项卡完成项?
- 3. SFTP选项卡完成
- 4. 是否editline选项卡完成应该工作?
- 5. CQLSH选项卡完成和历史记录不工作
- 6. zsh选项卡完成目录堆栈不工作
- 7. 与Ubuntu的bash选项卡完成问题12.04
- 8. 无法在Bash/Zsh中找到Rubygem的选项卡完成
- 9. Bash选项卡在固定目录中完成文件
- 10. jquery选项卡 - 如何使它工作?
- 11. 如何完成某项工作
- 12. Emacs选项卡不工作
- 13. IE:AJAX选项卡不工作
- 14. 窗口中的python选项卡完成
- 15. PowerShell cmdlet参数值选项卡完成
- 16. 在Windows下Ant的选项卡完成?
- 17. 获得ipdb的IPython选项卡完成
- 18. zsh:强制单选项卡完成
- 19. 挂钩进C选项卡完成C
- 20. PowerShell选项卡完成问题
- 21. 编程自定义选项卡完成
- 22. 限制zsh选项卡完成行为
- 23. 如何使bash选项卡完成行为与vim选项卡完成一样并通过匹配匹配循环?
- 24. 卡夫卡的工作队列选项
- 25. 这个bash完成函数是如何工作的? (for cloudfoundry cli)
- 26. 如何让bash自动完成在行中间工作?
- 27. 如何获取Powershell选项卡完成数组参数?
- 28. 如何禁用python shell中的选项卡完成?
- 29. 如何让我的程序使用选项卡完成?
- 30. 如何让IPython按类组织选项卡完成可能性?
您可能想要检查'/ etc/bash_completion'(至少,这是Debian中很多魔术的地方)。 – Wrikken 2011-04-06 18:18:12
@Wrikken:这是bash_completion,它依赖于制表符完成,但不完全如此。 – 2011-04-06 18:35:50
关于* nix stackexchange还有几个问题,包括:http://unix.stackexchange.com/questions/4738/an-easy-bash-completion-tutorial http://unix.stackexchange.com/questions/1800/custom-autocomplete http://unix.stackexchange.com/questions/12356/how-does-tab-auto-complete-find-options-to-complete以及SU上的至少一个:http://superuser.com/问题/ 289539 /定制的bash标签完成 – Cascabel 2012-02-15 02:20:12