|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。
在Linux体系中,输出一个命令,再按两次TAB键,就会列出一切以输出字符开首的可用命令。这其实不奇怪,极可能你已晓得了这个。这个功效被称作命令补全。默许情形下,bash命令行能够主动补全文件或目次称号。不外,我们可使bash命令行补全实行更多的操纵,经由过程补全命令可让它成绩下一个光辉。
这个教程申明了我们是如何利用可编程的命令行补全功效(programmablecompletion)把主动补全的功效使用于选项大概命令行参数。
比方:在输出write命令以后,假如你按两次TAB按键,主动补全功效会供应实行write操纵的列表。- $write[TAB][TAB]balarajjasonrandyjohnritumaylathomasnishawww-data
复制代码 鄙人面的例子中,输出telnet命令将会显现可用了主机名:- $telnet[TAB][TAB]localhostdev-dbfileserver
复制代码 要让可编程命令补全功效在你的终端起感化,你只必要实行/etc/bash_completion便可,就像上面展现出来的操纵: 你也能够作废/etc/bash.bashrc(关于UbuntuLinux13.04体系)上面的正文,如许,你就能够不必要实行下面的命令了,- enablebashcompletionininteractiveshellsif!shopt-oqposix;thenif[-f/usr/share/bash-completion/bash_completion];then./usr/share/bash-completion/bash_completionelif[-f/etc/bash_completion];then./etc/bash_completionfifi
复制代码 假如你没有发明这些代码,也没有找到/etc/bash_completion文件,那末你只必要经由过程利用apt-get命令来安装bash_completion包便可。
1、检察现有的bash补全命令
启用可编程的bash命令行补全功效,就能够界说一套bash补全命令。命令行补全能够用来界说bash补全命令。
来看一下现有的bash补全功效,利用完全的命令,以下: 选项-p是可选择的。
2、Bash中尺度补全的列表
Bash为linux用户默许供应了上面的尺度补全命令。
- 变量名补全(Variablenamecompletion)
- 用户名补全(Usernamecompletion)
- 主机名补全(Hostnamecompletion)
- Path路径补全(Pathnamecompletion)
- 文件名补全(Filenamecompletion)
我们已在更早的一篇文章bashstandardcompletion中会商了这些。
3、为猎取命令界说补全命令
利用-c参数界说一个补全命令来取得可以使用的命令列表。鄙人面的例子中,为which命令界说了补全命令,- $complete-cwhich$which[TAB][TAB]Displayall2116possibilities?(yorn)
复制代码 就像下面看到的,假如按”y”,一切的命令城市显现出来。
4、为取得目次界说补全命令
利用参数d,界说一个只取得目次称号的补全命令,上面的例子中,界说了ls的补全命令- $lscountfiles.shdir1/dir2/dir3/$complete-dls$ls[TAB][TAB]dir1/dir2/dir3/
复制代码 就像下面看到的,一连按两次TAB,就能够看到目次称号。
5、为取得背景功课称号取得补全命令
经由过程利用complete命令,把取得job称号作为参数是同意的。参数j用来把job称号作为参数传到命令行,展现以下:- $jobs[1]-Stoppedcat[2]+Stoppedsedp$complete-j./list_job_attrib.sh$./list_job_attrib.sh[TAB][TAB]catsed
复制代码 想要懂得更多的背景义务,能够经由过程这些案例来懂得下怎样办理Linux背景义务。
6、利用前缀和后缀补全命令
补全命令能够经由过程被前缀(在前面增加)和后缀(增加在前面)来界说。鄙人面的例子中,前缀和后缀在list_job_attrib.sh中被界说。- $jobs[1]+Stoppedcat$complete-P">-S<"./list_job_attrib.sh$./list_job_attrib.sh[TAB][TAB]$./list_job_attrib.sh">cat<"
复制代码 7、具有扫除功效的文件名和目次补全
看看上面的剧本,输入output目次上面的文件:- $cdoutput/$lsall_calls.txtincoming_calls.txtoutgoing_calls.txtmissed_calls.txtparser_mod.tmpextract.o
复制代码 在下面的例子中,假如你想要扫除以.tmp和.o为后缀的文件,完成ls命令的主动补全功效,能够如许:- $telnet[TAB][TAB]localhostdev-dbfileserver0
复制代码 FIGNORE是一个shell变量,它包括了扫除在主动补全行列中的文件的文件名的后缀。
8、经由过程IFS变量支解String字符串,失掉被支解后的值。
单词表能够经由过程利用w参数被IFS变量中界说的字符串支解成多个单词。终极每一个单词城市被分隔,被显现出来。- $telnet[TAB][TAB]localhostdev-dbfileserver1
复制代码 如上所述,被IFS支解以后,单词就会被扩大开,以是也大概有上面展现的这些变量。- $telnet[TAB][TAB]localhostdev-dbfileserver2
复制代码 9、编写你本人的函数以完成主动补全功效
你能够声明一个函数来界说补全功效。利用-F参数,被传进到补全命令的函数名,能够实行并。比方,函数能够写成上面的款式。- $telnet[TAB][TAB]localhostdev-dbfileserver3
复制代码 在下面的函数中,
- COMPREPLY:存储在按下[TAB][TAB]以后打印信息的数组。
- COMP_WORDS:在命令行输出的单词数组
- COMP_CWORD:COMP_WORDS数组的索引,能够会见命令行中不必地位的单词。
- compgen:利用-W参数,持有current_arg变量中尽量完全的、分隔的内容。
文件中parser_option函数经由过程source实行以下:- $telnet[TAB][TAB]localhostdev-dbfileserver4
复制代码 这个函数链接到剧本剖析器以下:- $telnet[TAB][TAB]localhostdev-dbfileserver5
复制代码 就像下面所看到的,剖析器的参数能够经由过程_parser_options函数天生。
注重:检察/etc/bash_completion文件,懂得更多的可编程的命令行补全功效函数。
10、当第一标准没有举行婚配时,就必要实行第二标准
经由过程界说的补全标准,没有举行婚配,那末经由过程-o参数界说的completion就会实行。- $telnet[TAB][TAB]localhostdev-dbfileserver6
复制代码 同上,经由过程利用_count_files文件中界说的_count_files函数界说的completion,假如_count_files函数没有举行婚配,那末就会实行目次补全。- $telnet[TAB][TAB]localhostdev-dbfileserver7
复制代码 原文链接:BalakrishnanMariyappan翻译:极客范-踏雁寻花
对于开发环境的选择尽量要轻量级和高度可定制,航空母舰级别的工具往往会让你迷惑不解; |
|