bash之命令行自动补全

写在前面

在前一阵子,我在系统上安装了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 库及编程简介

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值