精灵巫婆 发表于 2015-1-15 22:14:31

Linux教程之Linux中10个有效的命令行补齐命令

虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。
  在Linux体系中,输出一个命令,再按两次TAB键,就会列出一切以输出字符开首的可用命令。这其实不奇怪,极可能你已晓得了这个。这个功效被称作命令补全。默许情形下,bash命令行能够主动补全文件或目次称号。不外,我们可使bash命令行补全实行更多的操纵,经由过程补全命令可让它成绩下一个光辉。



  这个教程申明了我们是如何利用可编程的命令行补全功效(programmablecompletion)把主动补全的功效使用于选项大概命令行参数。
  比方:在输出write命令以后,假如你按两次TAB按键,主动补全功效会供应实行write操纵的列表。
$writebalarajjasonrandyjohnritumaylathomasnishawww-data  鄙人面的例子中,输出telnet命令将会显现可用了主机名:
$telnetlocalhostdev-dbfileserver  要让可编程命令补全功效在你的终端起感化,你只必要实行/etc/bash_completion便可,就像上面展现出来的操纵:
#./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补全功效,利用完全的命令,以下:
complete-p|less  选项-p是可选择的。
  2、Bash中尺度补全的列表

  Bash为linux用户默许供应了上面的尺度补全命令。

[*]变量名补全(Variablenamecompletion)
[*]用户名补全(Usernamecompletion)
[*]主机名补全(Hostnamecompletion)
[*]Path路径补全(Pathnamecompletion)
[*]文件名补全(Filenamecompletion)
  我们已在更早的一篇文章bashstandardcompletion中会商了这些。
  3、为猎取命令界说补全命令

  利用-c参数界说一个补全命令来取得可以使用的命令列表。鄙人面的例子中,为which命令界说了补全命令,
$complete-cwhich$whichDisplayall2116possibilities?(yorn)  就像下面看到的,假如按”y”,一切的命令城市显现出来。
  4、为取得目次界说补全命令

  利用参数d,界说一个只取得目次称号的补全命令,上面的例子中,界说了ls的补全命令
$lscountfiles.shdir1/dir2/dir3/$complete-dls$lsdir1/dir2/dir3/  就像下面看到的,一连按两次TAB,就能够看到目次称号。
  5、为取得背景功课称号取得补全命令

  经由过程利用complete命令,把取得job称号作为参数是同意的。参数j用来把job称号作为参数传到命令行,展现以下:
$jobs-Stoppedcat+Stoppedsedp$complete-j./list_job_attrib.sh$./list_job_attrib.shcatsed  想要懂得更多的背景义务,能够经由过程这些案例来懂得下怎样办理Linux背景义务。
  6、利用前缀和后缀补全命令

  补全命令能够经由过程被前缀(在前面增加)和后缀(增加在前面)来界说。鄙人面的例子中,前缀和后缀在list_job_attrib.sh中被界说。
$jobs+Stoppedcat$complete-P">-S<"./list_job_attrib.sh$./list_job_attrib.sh$./list_job_attrib.sh">cat<"  7、具有扫除功效的文件名和目次补全

  看看上面的剧本,输入output目次上面的文件:
$cdoutput/$lsall_calls.txtincoming_calls.txtoutgoing_calls.txtmissed_calls.txtparser_mod.tmpextract.o  在下面的例子中,假如你想要扫除以.tmp和.o为后缀的文件,完成ls命令的主动补全功效,能够如许:
$telnetlocalhostdev-dbfileserver0  FIGNORE是一个shell变量,它包括了扫除在主动补全行列中的文件的文件名的后缀。
  8、经由过程IFS变量支解String字符串,失掉被支解后的值。

  单词表能够经由过程利用w参数被IFS变量中界说的字符串支解成多个单词。终极每一个单词城市被分隔,被显现出来。
$telnetlocalhostdev-dbfileserver1  如上所述,被IFS支解以后,单词就会被扩大开,以是也大概有上面展现的这些变量。
$telnetlocalhostdev-dbfileserver2  9、编写你本人的函数以完成主动补全功效

  你能够声明一个函数来界说补全功效。利用-F参数,被传进到补全命令的函数名,能够实行并。比方,函数能够写成上面的款式。
$telnetlocalhostdev-dbfileserver3  在下面的函数中,

[*]COMPREPLY:存储在按下以后打印信息的数组。
[*]COMP_WORDS:在命令行输出的单词数组
[*]COMP_CWORD:COMP_WORDS数组的索引,能够会见命令行中不必地位的单词。
[*]compgen:利用-W参数,持有current_arg变量中尽量完全的、分隔的内容。
  文件中parser_option函数经由过程source实行以下:
$telnetlocalhostdev-dbfileserver4  这个函数链接到剧本剖析器以下:
$telnetlocalhostdev-dbfileserver5  就像下面所看到的,剖析器的参数能够经由过程_parser_options函数天生。
  注重:检察/etc/bash_completion文件,懂得更多的可编程的命令行补全功效函数。
  10、当第一标准没有举行婚配时,就必要实行第二标准

  经由过程界说的补全标准,没有举行婚配,那末经由过程-o参数界说的completion就会实行。
$telnetlocalhostdev-dbfileserver6  同上,经由过程利用_count_files文件中界说的_count_files函数界说的completion,假如_count_files函数没有举行婚配,那末就会实行目次补全。
$telnetlocalhostdev-dbfileserver7  原文链接:BalakrishnanMariyappan翻译:极客范-踏雁寻花
对于开发环境的选择尽量要轻量级和高度可定制,航空母舰级别的工具往往会让你迷惑不解;

老尸 发表于 2015-1-17 17:12:21

Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。

海妖 发表于 2015-2-1 11:51:36

硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。

蒙在股里 发表于 2015-2-7 08:13:07

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

金色的骷髅 发表于 2015-2-21 18:05:24

硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。

只想知道 发表于 2015-3-6 21:44:10

对我们学习操作系统有很大的帮助,加深我们对OS的理解。?

因胸联盟 发表于 2015-3-13 22:33:55

Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。

活着的死人 发表于 2015-3-20 22:08:30

应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
页: [1]
查看完整版本: Linux教程之Linux中10个有效的命令行补齐命令