精华内容
下载资源
问答
  • 命令行自动补全原理

    2021-05-10 10:26:46
    命令行自动补全原理概述bash 自动补全测试补全的脚本参数自动补全自定义补全zsh 自动补全参数自动补全自定义补全总结概述虽然CLI(命令行)类型的工具由于其高效,易定制的特性为很多人所喜爱(也包括我自己), 但是,...

    命令行自动补全原理

    概述

    bash 自动补全

    测试补全的脚本

    参数自动补全

    自定义补全

    zsh 自动补全

    参数自动补全

    自定义补全

    总结

    概述

    虽然CLI(命令行)类型的工具由于其高效,易定制的特性为很多人所喜爱(也包括我自己), 但是,相对于GUI工具,CLI工具给人的直观感觉就是不容易使用,如果看到工具中大量的参数说明后,更让人望而却步。

    因此,如果在自己命令行工具中加入 自动补全 的功能,就可以极大的提高工具的易用性,还可以保留命令行工具原有的高效。 这里所说的 自动补全 不仅仅是补全那些固定的参数(这些意义不大),更多的是补全动态的内容。

    本篇主要介绍两种主流的 shell(bash 和 zsh)中,如何实现命令行工具的补全。

    bash 自动补全

    测试补全的脚本

    简单编写一个测试脚本用来测试后面的自动补全:

    #!/bin/bash

    # filename: cli-test.sh

    UPCASE=false

    DATE=""

    usage() {

    echo "USAGE:"

    echo "cli-test "

    echo " -h : print help"

    echo " -u : print info upcase"

    echo " -p : print info"

    echo " -d : date in print info"

    }

    print() {

    if $UPCASE

    then

    echo -n $1 | tr a-z A-Z

    else

    echo -n $1

    fi

    if [ "$DATE" != ""]

    then

    echo " date:$DATE"

    else

    echo ""

    fi

    }

    while getopts "hup:d:" opt; do

    case "$opt"in

    h)

    usage

    exit 0

    ;;

    u)

    UPCASE=true

    ;;

    d)

    DATE=$OPTARG

    ;;

    p)

    print $OPTARG

    ;;

    esac

    done

    测试上面的脚本如下:

    bash-3.2$ chmod +x cli-test.sh

    bash-3.2$ ./cli-test.sh -h

    USAGE:

    cli-test

    -h : print help

    -u : print info upcase

    -p : print info

    -d : date in print info

    bash-3.2$ ./cli-test.sh -p hello

    hellobash-3.2$ ./cli-test.sh -p hello

    hello

    bash-3.2$ ./cli-test.sh -u -p hello

    HELLO

    bash-3.2$ ./cli-test.sh -u -d 2016-10-13 -p hello

    HELLO date: 2016-10-13

    参数自动补全

    参数的补全一般来说比较简单,因为一个命令行工具的参数一般都是固定的。 下面的参数补全脚本是针对 上面的 测试补全的脚本 cli-test.sh

    _complete_func() {

    local cur prev opts base

    COMPREPLY=()

    cur="${COMP_WORDS[COMP_CWORD]}"

    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="-h -u -d -p"

    if [[ ${cur} == -*]] ; then

    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )

    return 0

    fi

    }

    complete -F _complete_func cli-test.sh

    让自动补全脚本生效的方法如下:

    bash-3.2$ source bash_complete # 使自动补全脚本生效

    bash-3.2$ ./cli-test.sh - # 这里输入 - 之后,再输入2次就可以把所有能补全的参数列出来

    自定义补全

    上面的补全是补全固定的参数,简单,但是用处也不大,用户记不住的其实就是那些会变的参数内容。 下面尝试动态补全 cli-test.sh 的参数 -d 的内容(内容是当前日期以及前3天和后三天的日期) 修改 bash_complete 脚本如下:

    _complete_func() {

    local cur prev opts base

    COMPREPLY=()

    cur="${COMP_WORDS[COMP_CWORD]}"

    prev="${COMP_WORDS[COMP_CWORD-1]}"

    if [[ ${cur} == -*]] ; then

    opts="-h -u -d -p"

    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )

    else

    opts=$( _complete_d_option )

    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )

    fi

    return 0

    }

    _complete_d_option() {

    date -v -3d +"%Y-%m-%d"

    date -v -2d +"%Y-%m-%d"

    date -v -1d +"%Y-%m-%d"

    date +"%Y-%m-%d"

    date -v +1d +"%Y-%m-%d"

    date -v +2d +"%Y-%m-%d"

    date -v +3d +"%Y-%m-%d"

    }

    complete -F _complete_func cli-test.sh

    测试动态补全的效果

    bash-3.2$ source bash_complete # 使自动补全脚本生效

    bash-3.2$ ./cli-test.sh -u -d 2016-10-1 # 这是 2016-10-13 执行的结果,其他日子的结果会不一样

    2016-10-10 2016-10-11 2016-10-12 2016-10-13 2016-10-14 2016-10-15 2016-10-16

    上面就是动态补全,_complete_d_option 函数就是用来实现动态补全的。

    zsh 自动补全

    相比于bash,zsh 的补全机制更加强大,也更加直观。 同样,下面也通过例子来演示如何在 zsh 中实现上面 bash 中同样的补全功能。

    参数自动补全

    相比于 bash 的自动补全脚本,我觉得 zsh 的补全方式更加直观。

    #compdef cli-test.sh

    # filename: _cli-test.h

    _cli_test() {

    _arguments -C -s -S \

    '-h::' \

    '-u::' \

    '-d::' \

    '-p::'

    }

    _cli_test "$@"

    zsh 中有个 fpath 的内置变量,将自动补全脚本放在 $fpath 中,或者在 $fpath 中创建指向自动补全的脚本的软连接都可以。 下面是我的环境中 fpath 的值

    $ echo $fpath

    /usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.0.8/functions

    为了测试 zsh 下自动补全是否有效,我在 fpath 下给自己的自动补全脚本创建了软连接

    $ cd /usr/local/share/zsh/site-functions

    $ ln -s ~/projects/bash/autocomp/_cli-test.sh _cli-test.sh

    测试结果

    $ ./cli-test.sh -

    -d -h -p -u

    可以看出,zsh 的补全方法非常简单直观。稍微解释下上面的代码

    _arguments

    这个函数是 zsh 自带的,有点类似 bash 中的 compgen ,但是功能更加强大。

    '-h::' \

    这里 : 分割的3部分分别是 “待补全的参数:参数的说明:动态补全参数的内容“

    自定义补全

    根据上面的解释,要想动态补全 -d 参数非常简单,只要加个函数,并配置在 -d:: 之后即可

    #compdef cli-test.sh

    # filename: _cli-test.h

    _cli_test() {

    _arguments -C -s -S \

    '-h::' \

    '-u::' \

    '-d:auto complete date:__complete_d_option' \

    '-p::'

    }

    __complete_d_option() {

    local expl

    dates=( `generate_date` )

    _wanted dates expl date compadd $* - $dates

    }

    generate_date() {

    date -v -3d +"%Y-%m-%d"

    date -v -2d +"%Y-%m-%d"

    date -v -1d +"%Y-%m-%d"

    date +"%Y-%m-%d"

    date -v +1d +"%Y-%m-%d"

    date -v +2d +"%Y-%m-%d"

    date -v +3d +"%Y-%m-%d"

    }

    _cli_test "$@"

    测试动态补全的效果

    $ ./cli-test.sh -u -d 2016-10-

    2016-10-14 2016-10-15 2016-10-16 2016-10-17 2016-10-18 2016-10-19 2016-10-20

    总结

    2中shell环境下的自动补全都介绍完了,它们自动补全的机制都不难,只是 zsh 毕竟是新一点的shell,补全方式更加简单易懂。 特别是对于存在子命令和复杂的参数补全,以及参数内容动态补全的情况下,zsh 的机制更加易于维护。

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 03.命令行自动补全

    2021-04-07 20:23:09
    shell简化功能:命令行自动补全 来源:《Linux 命令、编程器、Shell编程、实例大全.pdf》 如果想对输入进行自动补全,只需输入初始的几个字符,然后按“tab”键,系统会自动匹配所需的其余输入。当有多种匹配时,...

    shell简化功能:命令行自动补全

    来源:《Linux 命令、编程器、Shell编程、实例大全.pdf》

    • 如果想对输入进行自动补全,只需输入初始的几个字符,然后按“tab”键,系统会自动匹配所需的其余输入。当有多种匹配时,系统会给出警告提示,按“ESC+?”或两次“Tab”键,可以列出所有可能的匹配
    1. 环境变量名补齐
      如果输入的文本以“$”开始,shell就以当前shell的一个环境变量补齐文本,如下:
    studytest@linux-nlzy:~> echo $P <tab><tab> //按两次tab键,系统列出环境变量中所有第一个字母
    											//为“P”的可能匹配,在显示所有的可能性后,
    											//返回原来命令行,等待用户的选择
    $PAGER          $PIPESTATUS     $PROFILEREAD    $PS2            $PWD
    $PATH           $PPID           $PS1            $PS4            $PYTHONSTARTUP
    
    studytest@linux-nlzy:~> echo $PATH  //输入了PAT<tab>,自动匹配了PATH,并返回PATH环境变量
    /usr/lib64/mpi/gcc/openmpi/bin:/home/studytest/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/home/studytest/bin
    

    如果仅输入“$”,则系统会按字母顺序列出所有的环境变量,如下:

    studytest@linux-nlzy:~> $ <tab><tab> //按两次tab键,系统列出所有的系统变量
    Display all 121 possibilities? (y or n)
    $_                           $HOSTNAME                    $OSTYPE
    $ALSA_CONFIG_PATH            $HOSTTYPE                    $PAGER
    $BASH                        $IFS                         
    ...
    
    1. 用户名补全
      如果输入的文本以“~”开始,shell会以用户名补全文本,如下:
    studytest@linux-nlzy:~> cd ~s <tab><tab> //按两次tab,系统列出所有以字母s开头的用户名
    ~smolt/      ~sshd/       ~statd/      ~studytest/  ~studyzsh/
    
    1. 命令、别名或函数的名字补齐
      如果文本以常规字符开始,shell将尝试利用命令、别名或函数名来补全文本,如下:
    studytest@linux-nlzy:/home> ls
    usera  studytest  studyzsh 
    studytest@linux-nlzy:/home> cd u <tab>//按一次tab,匹配了usera目录名
    studytest@linux-nlzy:/home/usera> 
    
    1. 主机名补全
      如果输入的文本以“@”符号,系统会利用/etc/hosts文件中的主机名来补齐文本,如下:
    studytest@linux-nlzy:~> mail root@ <tab><tab>//按两次tab,系统列出所有可用的主机名
    
    

    自动补全快捷方式及说明

    快捷键说明
    Alt+~以一个用户名补全此处的文本
    Alt+$以一个变量补全此处的文本
    Alt+@以一个主机名补全此处的文本
    Ctrl+x+~列出可能的用户名补全
    Ctrl+x+$列出可能的环境变量补全
    Ctrl+x+@列出可能的主机名补全
    Ctrl+x+!列出可能的命令名补全
    展开全文
  • 文件名(或者目录名)是执行 ...考虑到这种情况,Shell(Bash)提供了一种称为“命令行自动补全”的功能,即在输入文件名的时候,只需要输入该文件名的前几个字符,然后按 Tab 键,Shell 就可以自动将文件名补全。举...

    文件名(或者目录名)是执行 Linux 命令中最常见的参数,例如前面介绍的 cd、mkdir、cp 等命令,都涉及到了文件名。然而对初学者来说,输入完整的文件名感觉很麻烦,尤其面临文件名(目录名)特别长的时候。

    考虑到这种情况,Shell(Bash)提供了一种称为“命令行自动补全”的功能,即在输入文件名的时候,只需要输入该文件名的前几个字符,然后按 Tab 键,Shell 就可以自动将文件名补全。

    举个例子,在 /etc 目录下,执行如下命令:

    [root@localhost ~]# cd /etc

    [root@localhost etc]# cd fs

    当按下 Tab 键时,你会发现 Shell 自动将 "fs" 补全成了 "fatab",这是因为当前 /etc 目录中只有 fstab 是以 "fs" 开头,因此 Shell 可以确定这里想要输入的文件名称为 fstab。

    那么,如果当前目录中含有多个以指定字符(或字符串)开头的目录或文件,Shell 还可以成功辨认吗?答案是否定的,但它会以列表的形式给出所有以指定字符或字符串开头的文件或目录,供用户选择。

    例如,还是在 /etc 目录下,执行如下命令:

    [root@localhost etc]# cd b

    bash_completion.d/ blkid/ bonobo-activation/

    bashrc bluetooth

    可以看到,当按一次 Tab 键时,Shell 没有任何反映,原因就是当前目录下以 "b" 为开头的文件或目录有多个(2 个以上),仅凭一个字符 "b" 无法精准判断出具体指的是哪个文件。而当再一次按下 Tab 键时,Shell 会列表的形式显示给用户当前目录下所有以 "b" 开头的文件或目录。

    事实上,Shell 提供的命令行补全功能不仅适用于补全文件名,也同样适用于所有 Linux 命令。举个例子,当输入 ca 并连续按下 2 次 Tab 键时,Shell 会罗列出所有以 "ca" 开头的 Linux 命令,如下所示:

    [root@localhost etc]# ca

    cacertdir_rehash cache_restore capsh catchsegv

    cache_check cal captoinfo

    cache_dump caller case

    cache_repair canberra-gtk-play cat

    另外,Shell 还有一套被称作通配符的转用符号(如表 1 所示),这些通配符可以搜索并匹配文件名的一部分,从而大大简化了文件名的输入。

    表 1 Shell 通配符及其作用

    符号

    作用

    *

    匹配任意数量的字符。

    ?

    匹配任意一个字符。

    []

    匹配括号内的任意一个字符,甚至 [] 中还可以包含用 -(短横线)连接的字符或数字,表示一定范围内的字符或数字。

    为了学习这些通配符的用法,首先需要建立一个空目录(如 test),并在该目录中创建一些文件(供测试用),执行命令如下:

    [root@localhost etc]# makdir test

    [root@localhost etc]# cd test

    [root@localhost test]# touch apple banana grape grapefruit watermelon

    [root@localhost test]# ls

    apple banana grape grapefruit watermelon

    在此基础上,继续执行如下命令:

    [root@localhost test]# ls a*

    apple

    [root@localhost test]# ls g*t

    grapefruit

    [root@localhost test]# ls *e*

    apple grape grapefruit watermelon

    [root@localhost test]# ls *n*

    banana watermelon

    结合以上实例,因为 * 可以匹配任何数量的字符,因此可以一一实现实例中标注的功能。

    接下来,列举一下使用 ? 匹配文件名的示例:

    [root@localhost test]# ls ????e

    apple grape

    [root@localhost test]# ls g???e*

    grape grapefruit

    因为 1 个 ? 只能匹配 1 个任意字符,因此该示例中第一个例子表示的是匹配任意包含 5 个字符但以 e 结尾的文件(apple 和 grape),第二例子表示匹配任何以 g 开头且第 5 个字符为 e 的文件(grape 和 grapefruit)。

    最后,列举一些使用括号 [] 匹配文件名的示例:

    [root@localhost test]# ls [abw]*

    apple banana watermelon

    [root@localhost test]# ls [agw]*[ne]

    apple grape watermelon

    此示例中,第一个例子表示匹配任何以 a、b 或 w 开头的文件;第二个例子中表示匹配任何以 a、g、w 开头,以 n 或 e 结尾的文件名。

    不仅如此,[] 中还可以通过 -(短横线)表示一定范围内的任意字符(或数字),例如:

    [root@localhost test]# ls [a-g]*

    apple banana grape grapefruit

    其中,[a-g]* 表示匹配以字母 a 到  g 之间任何一个字母开头的文件名。

    展开全文
  • mysql 命令行 自动补全

    2021-01-18 22:46:02
    HDU1075题目大意: 给你一本火星词典,每个火星单词对应一个英文单词. 然后给你一篇火星文章,要求你翻译成英文. 要求如下: 如果这个火星单词用英文单词可以表示,就翻译成英文,如果没有这个单词,就原样输出....

    HDU1075

    题目大意: 给你一本火星词典,每个火星单词对应一个英文单词. 然后给你一篇火星文章,要求你翻译成英文. 要求如下: 如果这个火星单词用英文单词可以表示,就翻译成英文,如果没有这个单词,就原样输出.遇到 ...

    正在使用MJRefresh &amp&semi; MJExtension的App

    框架地址:https://github.com/CoderMJLee已经有上百个App用到了MJRefresh & MJExtension框架(只列出了其中一部分App):

    SharpDX之Direct2D教程II——加载位图文件和保存位图文件

    本系列文章目录: SharpDX之Direct2D教程I——简单示例和Color(颜色) 绘制位图是绘制操作的不可缺少的一部分.在Direct2D中绘制位图,必须先利用WIC组件将位图加载到内存中,再 ...

    javascript 关于函数的返回值

    在javascript中根据调用方式的不同返回的内容也不同 1.  以函数的形式调用 当以函数的形式调用时, 返回值和函数定义时的 ruturn 有关, return的是数字就number类型, re ...

    &percnt;1 不是有效的 Win32 应用程序

    客户环境windows server 2008,iis 6.0. 站点配置与以往并无差别,更新类库后出现“%1 不是有效的 Win32 应用程序”错误,如下图: 系统登录页面可以正常加载,登录过程中出 ...

    从苹果系统InstallESD&period;dmg里提取IOS

    右键下载的Mac OS X Mountain Lion镜像:InstallESD.dmg,选择7-zip------打开压缩包 2.双击InstallMacOSX.pkg 3.选中InstallESD ...

    HP ProLiant DL380 G6 服务器 - 清 BIOS 的方法

    问题 HP ProLiant DL380 G6服务器的BIOS位置在哪里? 如何清BIOS,具体步骤是什么? 解决方案 DL380 G6服务器清BIOS过程分为三步: 1. 为服务器断电(拔掉电源线) ...

    《你不知道的JavaScript》整理(五)——值与原生函数

    一.值 1)数字 JavaScript只有一种数值类型:number(数字),包括"整数"和带小数的十进制数. //数字的语法 a.toExponential(); // &quo ...

    openlayers4 入门开发系列之地图标绘篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

    c&sol;c&plus;&plus; llinux epoll系列5 解除epoll&lowbar;wait状态

    linux epoll系列5 解除epoll_wait状态 有时候会有解除epoll_wait状态的需求. 实现方法: 1,给执行epoll_wait的程序发signal. 2,使用sockpair. ...

    展开全文
  • Ubuntu下安装命令root@master1:~# apt install -y bash-completion Reading package lists... Done Buildi...
  • 在Windows系统中,使用tab键可以自动补全命令,而在Mac中不能直接实现。要想实现自动补全,可以采用以下方法: Step 1 在命令行输入: nano .inputrc Step 2 进入 .inputrc 的编辑界面,输入如下语句: set ...
  • Windows 下配置使cmd命令行自动补全

    千次阅读 2019-08-20 16:56:24
    关于Redis 的下载安装稍后会进行叙述,这里先简单说一个,cmd想要拥有自动补全功能的事情。。。 二、实现 1.第一步,win+R打开cmd框,输入‘regedit’ 2.进去之后一直搜索目录,HKEY_LOCAL_MACHINE\Software\Mi...
  • 参考: Command-line completion from command history 方法1:匹配任意位置 输入Ctrl+R打开反向历史记录搜索,会出现如下信息。 lf@DESKTOP-8LB6JPN MINGW64 ~ (reverse-i-search)`': 然后输入需要搜索的内容,录入...
  • rocketmq 命令行自动补全工具大多数软件工程师都比较喜欢命令行交互,mqadmin作为rocketmq的管理端,为我们提供了众多功能,因其命令众多,不同命令参数也很多,通过这个命令行自动补全工具,让我们使用起来特别友善...
  • /usr/local/etc/bash_completion.d 转载于:https://www.cnblogs.com/shengulong/p/10534628.html
  • step1 下载 ...step2 加载到环境变量 source git-completion.bash ...step3 添加到shell启动文件可以实现自动加载环境变量 # 1 mv git-completion.bash /etc/profile.d/ # 2 vim ~/.bashrc # edit ...
  • bash之命令行自动补全

    千次阅读 2016-12-09 15:13:35
    在前一阵子,我在系统上安装了elfutils软件包,然后在使用eu-readelf的过程中,发现无法支持命令参数自动补全功能,但是系统自带的readelf在输入“--”之后连续按两次键是可以自动补全的。后来在网上找到的解决办法...
  • 刚入手一个Mac pro,下载了git,但是发现没法补全命令行。。。这对于我这种用惯了ubuntu的感觉超级不习惯。。 问了下前辈+网上搜索了一下发现有个东西:bash-completion 有了这个,我们就能够实现ubuntu一样的...
  • mysql命令行自动补全

    2020-05-06 11:13:41
    1、基于python安装pip [root@192~]# yum -y install python-pip python-devel [root@192~]# curl ...[root@192 ~]# python get-pip.py # 使用此命令出现黄字或类似字样出现不要担心,不是报错,只是...
  • 详解Linux命令行自动补全

    千次阅读 2016-09-03 16:26:00
    如果只有一个命令匹配到,按一次Tab键就自动将这个命令补全。比如,想更改密码,但只记得这个命令前几个字母是pass。这时候,按Tab键,shell就自动输出 passwd 命令,非常方便。 当然,除了命令补全,还有路径、...
  • python命令行自动补全

    2016-04-11 20:17:50
    为python命令行配置自动补全
  • ubuntu使用zsh进行命令行自动补全 1、zsh下载及配置 安装zsh $ sudo apt-get install cmake git zsh 安装ohmyzsh $ wget -p ~/ https://github.com/ohmyzsh/ohmyzsh/blob/master/tools/install.sh $ sudo chmod +x ...
  • 最近尝试在Mac上安装了一下Docker环境,发现安装方法很简单的,但安装之后docker命令不能自动补全,很不方便。查了一些资料找到了解决方法,在此跟大家分享一下。安装Homebrew首先需要安装Homebrew,可在官网首页...
  • Git 命令行自动补全

    千次阅读 2015-04-18 09:28:37
    Git 命令行自动补全 目录:  1. 介绍  2. git 安装  3. git 源码下载  4. 配置  5. 尝试  6. 参考资料 1. 介绍  git 命令并不支持自动补全功能,为了使我们的工作更加高效,就非常有...
  • 默认情况下,bash 命令行可以自动补全文件或目录名称。不过,我们可以增强 bash 命令补全功能,通过 complete 命令让它达到新的高度。这个教程说明了我们是怎样使用可编程的命令行补全功能(progra...
  • mysql命令行自动补全工具 mycli

    千次阅读 2015-10-14 15:32:49
    Linux下别问我Windows 我也不知道 首先你的服务器或者你电脑有Python 1,获取压缩包 wget ... 2解压 ...tar zxvf pip-7.1.2.tar.gz  ...python setup.py ins
  • template ~/.zshrc 三、更改默认 shell chsh -s /bin/zsh 然后重启终端,你会发现你的命令行变了 四、配置命令自动补全的插件 下载插件 git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/...
  • 把adb.rar解压到c盘根目录下,确保解压的2个文件在C:\adb目录下。 ...这时候重新打开命令行 进去点击adb shell进入Android 里面的输入首字母 按tab键 就可以补全对应字符了
  • 注意:在命令行下只有切换到数据库之后,才能补全表名,对于命令是不能补全的。 1、my.conf增加如下配置: [mysql] #no-auto-rehash auto-rehash #添加auto-rehash 重启mysql服务,然后用客户端连接即可。 ...
  • Linux命令行自动补全的10个小技巧

    千次阅读 2016-10-24 15:53:49
    默认情况下,bash 命令行可以自动补全文件或目录名称。不过,我们可以增强 bash 命令补全功能,通过 complete 命令让它达到新的高度。   本文将详细介绍怎样使用可编程的命令行补全功
  • 例: cd后键入首字母'm' 再键入两次TAB键可显示所有首字母为'm'的文件 输入后边有区别的字母后再键入TAB键就可以自动补全后面的内容了 TAB键 ↓就是它

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,056
精华内容 13,622
关键字:

命令行自动补全