当前位置 博文首页 > astrotycoon:bash之命令行自动补全

    astrotycoon:bash之命令行自动补全

    作者:[db:作者] 时间:2021-08-17 15:41

    写在前面

    在前一阵子,我在系统上安装了elfutils软件包,然后在使用eu-readelf的过程中,发现无法支持命令参数自动补全功能,但是系统自带的readelf在输入“--”之后连续按两次<TAB>键是可以自动补全的。后来在网上找到的解决办法是在.bashrc中添加“complete -F _longopt eu-readelf”解决了这个问题,由于当时没时间想这个,就把这个问题抛之脑后了。

    然后近几天,我在学习使用tmux这个终端复用神器,功能强大归强大,但美中不足的是tmux也没有命令参数自动补全功能,这让我很恼火,总不至于每次都手动慢慢输入完整的命令参数吧?于是满心欢喜的在.bashrc中添加“complete -F _longopt tmux”,奢望着这次也可以解决问题,但是结果是令人失望的,尽然毫无效果!!!

    由此才意识到我对天天使用的工具思考的太少,把按<TAB>键自动补全功能认为是理所当然了,从来没想过这背后究竟发生了什么。

    在了解了相关的知识后,才发现原来命令行的自动补全功能并不是程序自身的功能,而是我们天天与之打交道的shell的功能(本文限定使用的shell是bash)。bash提供有三个内置命令complete、compgen以及compopt以及几个相关的内置环境变量控制自动补全功能。因此才有了本文。

    PS:关于tmux参数自动补全的功能,网上已经有大牛做好了:tmux-bash-completion

    《让你提升命令行效率的 Bash 快捷键 [完整版]》


    参考链接:

    《编写 Bash 补全脚本》

    《我使用过的Linux命令之complete - 强劲的bash参数补全功能》

    《Tmux会话管理(自动补全)》

    《Custom bash autocomplete script》

    《详解Linux命令行自动补全及编程实现方法》

    《使用Bash中Complete自动补全命令》

    《linux shell中的命令自动补全(compgen complete)与 命令行参数解析》

    《Shell脚本参数自动补全》

    《?【Bash百宝箱】shell命令行自动补全(compgen、complete、compopt)》

    《详解Linux Shell命令自动补全》

    《跟我一起写shell补全脚本》

    《10 Useful Linux Bash_Completion Complete Command Examples (Bash Command Line Completion on Steroids)》(Linux 中 10 个有用的命令行补全例子)

    《命令行自动补全原理》

    《Improving Command Line Productivity with GNU Readline》

    《Accessing tab-completion programmatically in Bash》

    《Bash Completion, Part 1: Using Tab Completion》

    《Linux十个命令补全技巧(上)》

    《Linux中10个有用的命令行补齐命令》

    《Snippet 0x0B: Bash completion with sub-commands and dynamic options》


    《GNU Readline 库及编程简介》

    cs
    下一篇:没有了