返回顶部
首页 > 资讯 > 操作系统 >Linux怎么实现自动补全命令
  • 525
分享到

Linux怎么实现自动补全命令

2023-06-28 13:06:14 525人浏览 泡泡鱼
摘要

这篇文章主要介绍“linux怎么实现自动补全命令”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux怎么实现自动补全命令”文章能帮助大家解决问题。linux命令自动补全Centos7下执行yum

这篇文章主要介绍“linux怎么实现自动补全命令”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux怎么实现自动补全命令”文章能帮助大家解决问题。

linux命令自动补全

Centos7下执行yum install bash-completion之后重启系统正常。

Docker命令自动补全

yum install docker后,会有一个文件: /usr/share/bash-completion/completions/docker ; 显然,该脚本是用于bash自动补全的,但是,直接 source 执行该脚本后,docker命令后敲tab,会有错误。

 yum install -y bash-completion后就可以解决。

kubectl命令自动补全

kubectl这个命令行工具非常重要,与之相关的命令也很多,我们也记不住那么多的命令,而且也会经常写错,所以命令自动补全是非常有必要的,kubectl命令行工具本身就支持complication,只需要简单的设置下就可以了。以下是linux系统的设置命令:

 source > ~/.bashrc

python shell自动命令补全

  1. 创建文件 .Pythonrc, 添加如下内容

     import rlcompleter, readline  readline.parse_and_bind('tab:complete')
  2. 在 .bashrc 文件尾追加如下内容

      export PYTHONSTARTUP=~/.pythonrc
  3. 更新环境变量 source ./.bashrc

shell命令补全

在shell命令行可以使用“Tab”键自动补全命令或文件名,这种功能其实可以在shell脚本中实现,使得使用“Tab”键可以自动补全自定义的shell函数,相关命令有三个,compgen、complete和compopt。

1、compgen

 compgen [option] [Word]

compgen命令根据option生成与word可能匹配的补全,并打印到标准输出中,这些选项可以是内建命令complete所支持的任何选项,但不能是“-p”和“-r”,如果使用了“-F”或“-C”,则由可编程补全功能设置的各个shell变量虽然仍可以使用,但它们的值却没什么作用。补全条目以相同的方式生成,就好像可编程补全代码用相同的补全选项直接生成了补全条目一样,如果指定了word,则只显示与之匹配的条目。

2、complete

 complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...]  complete -pr [-DE] [name ...]

complete命令指定如何对各个名称进行补全。如果指定了选项“-p”或者没有指定任何选项,则把已有的补全方法用一种可以重新作为作为输入的格式打印出来。选项“-r”用以删除指定名称的补全方法,不指定名称时删除所有的名称的补全方法。选项“-D”的意思是其后的选项和动作将应用到默认命令补全,也就是说之前未定义的补全命令也可以补全。选项“-E”的意思是其后的选项和动作将应用到空命令补全,也就是说补全空白行。对于选项“-G”、“-W”、“-X”、“-P”和“-S”,应该使用括号进行保护,防止补全开始前被扩展。

“-o bashdefault”:如果没有生成补全条目,就使用bash默认的其它补全。 

“-o default”:如果没有生成补全条目,就使用“readline”默认的文件名补全。 

“-o dirnames”:如果没有生成补全条目,就进行目录名补全。 

“-o filenames”:告诉“readline”生成文件名,以便进行与文件名相关的处理,例如在目录名后面加上斜杠,引用特殊字符,去掉行尾的空格,目的是用于shell函数。 

“-o noquote”:告诉“readline”不引用文件名,默认会进行引用。 

“-o nospace”:告诉“readline”在补全的名称后不添加空格,默认添加空格。 

“-o plusdirs”:生成补全条目之后,还会进行目录名补全并把结果添加到其它动作得到的结果中。 

“-A alias”:别名,同选项“-a”。 “-A arrayvar”:数组变量名。 “-A binding”:“readline”键绑定名。 

“-A builtin”:shell内建命令名,同选项“-b”。 

“-A command”:命令名,同选项“-c”。 

“-A directory”:目录名,同选项“-d”。

“-A disabled”:不可用的shell内建命令名。 

“-A enabled”:可用的shell内建命令名。 

“-A export”:导出的shell变量名,同选项“-e”。 

“-A file”:文件名,同选项“-f”。

“-A function”:shell函数名。 

“-A group”:组名,同选项“-g”。 

“-A helptopic”:内建命令help支持的帮助主题。 

“-A hostname”:主机名,从shell环境变量HOSTFILE中获取。

“-A job”:作业名,同选项“-j”。 

“-A keyword”:shell保留字,同选项“-k”。 

“-A running”:正在运行的作业名。 

“-A service”:服务名,同选项“-s”。

“-A setopt”:内建命令set的选项“-o”可用的参数。 

“-A shopt”:内建命令shopt可接受的选项名。 

“-A signal”:信号名。 

“-A stopped”:暂停的作业名。 

“-A user”:用户名,同选项“-u”。

“-A variable”:所有的shell变量名,同选项“-v”。 

“-C command”:在子shell中执行命令,并把其结果作为补全条目。 

“-F function”:在当前的shell环境中执行函数function,执行时,参数“$1”表示那个参数正在进行补全的命令名,参数“$2”表示补全的名称,参数“$3”表示补全的名称前面的单词,表示结束执行时,从数组变量COMPREPLY中获取补全条目。 “-G globpat”:使用文件名扩展模式globpat进行扩展以生成可能的补全条目。 

“-P prefix”:在所有的选项应用到补全结果后,在结果前添加前缀prefix。 

“-S suffix”:在所有的选项应用到补全结果后,在结果后添加后缀suffix。 

“-W wordlist”:使用特殊变量IFS中的字符拆分单词列表wordlist,并扩展拆分后的每个单词,结果中与待补全单词 匹配的条目就是补全条目。 

“-X filterpat”:filterpat是进行文件名扩展时使用的模式,它作用于通过前面的选项和参数生成的补全列表,并把每个与过滤模式匹配的条目删除,模式中前导的叹号表示否定,这时会删除与过滤模式不匹配的条目。

3、compopt

 compopt [-o option] [-DE] [+o option] [name]

compopt命令修改每个名称指定的补全选项,如果没有指定名称则修改当前执行的补全的选项,如果也没有指定选项,则显示每个名称或当前补全所用的选项。选项可能的取值就是上面的内建命令complete的有效选项。

4、相关变量

除了命令compgen、complete和compopt之外,shell命令行自动补全还要用到一些shell自带的变量,如下。

COMP_CWORD:在包含当前光标位置的单词“${COMP_WORDS}”中的下标,这个变量只能在可编程补全的shell函数中使用。 COMP_LINE:当前命令行,这个变量只能在可编程补全的shell函数中使用。 

COMP_POINT:当前光标位置相对于当前命令行开头的下标,如果当前光标位置在当前命令行的尾部,则这个变量的值就与“${#COMP_LINE}”相同,这个变量只能在可编程补全的shell函数中使用。 

COMP_TYPE:一个整数值,与触发调用补全函数时试图进行补全的类型相对应,正常补全为“TAB”,连续输入制表符后的补全列表为“?”,列出其它部分补全条目为“!”,没有修改单词而列出补全条目为“@”,补全菜单为“%”,这个变量只能在可编程补全的shell函数中使用。 

COMP_KEY:触发当前补全函数的键,或键序列中的最后一个键。 

COMP_WORDBREAKS:“readline”库进行单词补全时用作单词分隔的字符,如果没有设置这个变量,即使以后进行重置,它也会失去特殊作用。

 COMP_WORDS:一个数组变量,包含当前命令行的每个单词,与“readline”一样当前行被COMP_WORDBREAKS拆分成单词,这个变量只能在可编程补全的shell函数中使用。 

COMPREPLY:一个数组变量,bash从这个变量中读取可编程补全所调用的shell函数生成的补全条目。

5、例子

测试脚本如下:

 function autotab() {      echo "function autotab called $@"  }  autotab_list=("aa" "bb" "cc" "dd" "123")  function _autotab() {      local cur      COMPREPLY=()      cur="${COMP_WORDS[COMP_CWORD]}"      COMPREPLY=( $(compgen -W "${autotab_list[*]}" -- ${cur}) )      return 0  }  complete -F _autotab autotab

例子中,在shell命令行执行命令autotab时,如果命令未输完,按下Tab键就会补全这个命令,而且还会显示或补全一些参数,这些都是通过命令complete及函数_autotab完成的,数组autotab_list的各元素扩展为命令的参数。

关于“Linux怎么实现自动补全命令”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网操作系统频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Linux怎么实现自动补全命令

本文链接: https://lsjlt.com/news/319792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux怎么实现自动补全命令
    这篇文章主要介绍“Linux怎么实现自动补全命令”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux怎么实现自动补全命令”文章能帮助大家解决问题。linux命令自动补全centos7下执行yum...
    99+
    2023-06-28
  • Qt QCompleter自动补全怎么实现
    这篇“Qt QCompleter自动补全怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Qt QC...
    99+
    2023-06-30
  • QtQCompleter自动补全的实现
    目录1.QCompleter类可以在输入框输入字符时,进行提示可以匹配上的字符2.设置model,自动补全3.一些常用设置1.QCompleter类可以在输入框输入字符时,进行提示可...
    99+
    2024-04-02
  • CSS怎么实现自动补全字符串
    本文小编为大家详细介绍“CSS怎么实现自动补全字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS怎么实现自动补全字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。很多...
    99+
    2024-04-02
  • Mysql命令自动补全-全网最全-支持语法高亮
    方法一 今天再推荐一款命令行神器 - Mycli.Mycli 是一个MySQL命令行客户端工具,具有自动完成和语法突出显示功能。它是由印度人基于python开发的一个工具,适合初学者或者对数据库熟悉但命令记...
    99+
    2024-04-02
  • python tab键自动补齐命令
    我的博客已迁移到xdoujiang.com请去那边和我交流 一、基础环境 1、角色、ip、版本、内核 serverA 10.1.10.117 3.2.0-4-amd64 7.8 python readline rlcompleter pyt...
    99+
    2023-01-31
    补齐 命令 python
  • Linux Vim中自动补全Python
    Pydiction 可以是我们使用Tab键自动补全Python代码在Vim,是一款非常不错的插件。Pydiction不需要安装,所有没有任何依赖包问题,Pydiction主要包含三个文件。python_pydiction.vim  -- V...
    99+
    2023-01-31
    Linux Vim Python
  • ubuntu自动补齐怎么实现
    这篇文章主要介绍“ubuntu自动补齐怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ubuntu自动补齐怎么实现”文章能帮助大家解决问题。ubuntu实现自动补齐的方法:以root权限利用v...
    99+
    2023-07-04
  • MySQL数据库自动补全命令的三种方法
    注意:第三种方法要在 XSell 中使用,在 finalsell 中使用不了 方式一:临时使用自动补全功能 方式二:永久使用自动补全功能 vim /etc/my.cnf [mysql] auto-reh...
    99+
    2022-05-28
    MySQL 自动补全命令 MySQL 自动补全
  • 利用eclipse怎么实现一个自动补全功能
    这期内容当中小编将会给大家带来有关利用eclipse怎么实现一个自动补全功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。解决代码的自动提示问题:打开 Eclipse -> Window ->...
    99+
    2023-05-31
    eclipse 全功能
  • eclipse自动补全怎么设置
    在Eclipse中,自动补全功能是默认开启的,但你可以根据自己的需求对其进行设置。要设置自动补全功能,可以按照以下步骤操作: 打...
    99+
    2024-04-02
  • Mac为docker和kubectl添加自动补全命令的方法
    kubectl简介 kubectl是操作k8s集群的命令行工具,安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通...
    99+
    2024-04-02
  • MySQL命令行自动完成和补全的小工具是什么
    小编给大家分享一下MySQL命令行自动完成和补全的小工具是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL的命令行客...
    99+
    2024-04-02
  • Linux中如何使用命令行补全
    这篇文章主要为大家展示了“Linux中如何使用命令行补全”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何使用命令行补全”这篇文章吧。在 Linux 系统中,当你输入一个命令,再按两...
    99+
    2023-06-16
  • Linux命令大全:2W多字,一次实现Linux自由
    前言 大家好,我是40岁老架构师尼恩,Linux 的学习对于一个程序员的重要性是不言而喻的。 学好它却是程序员必备修养之一。 同时,也是很多公司的面试题。 比如说,曾有一个网易的面试题是: 聊聊:你常用的几个Linux 命令? 这个 题目以...
    99+
    2023-08-18
    linux 运维 服务器
  • vue中怎么实现一个自动补全的输入框
    本篇文章给大家分享的是有关vue中怎么实现一个自动补全的输入框,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。显示div将内容撑开,改变其他组件...
    99+
    2024-04-02
  • 怎么在php中使用phpstorm实现自动补全代码
    怎么在php中使用phpstorm实现自动补全代码?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费...
    99+
    2023-06-14
  • Linux中命令行补全的示例分析
    这篇文章给大家分享的是有关Linux中命令行补全的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在 Linux 系统中,当你输入一个命令,再按两次TAB 键,就会列出所有以你输入字符开头的可用命令。这并不...
    99+
    2023-06-09
  • php怎么实现linux命令
    本文操作环境:linux5.9.8系统,PHP7.1版,Dell G3电脑。php怎么实现linux命令PHP实现linux命令tail -f今天突然想到之前有人问过我的一个问题,如何通过PHP实现linux中的命令tail -f,这里就来...
    99+
    2021-08-18
    php linux
  • 怎么自学Linux命令
    这篇文章将为大家详细讲解有关怎么自学Linux命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。每日提示学习Linux命令的一种渐进式方法是:在每次打开终端时,让它显示“每日提示”。这会向你介绍一些有用的...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作