仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 325|回复: 7
打印 上一主题 下一主题

[其他Linux] Linux教程之Linux中10个有效的命令行补齐命令

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-15 22:14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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



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

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

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

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

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

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

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

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

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

  你能够声明一个函数来界说补全功效。利用-F参数,被传进到补全命令的函数名,能够实行并。比方,函数能够写成上面的款式。
  1. $telnet[TAB][TAB]localhostdev-dbfileserver3
复制代码
  在下面的函数中,

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

  经由过程界说的补全标准,没有举行婚配,那末经由过程-o参数界说的completion就会实行。
  1. $telnet[TAB][TAB]localhostdev-dbfileserver6
复制代码
  同上,经由过程利用_count_files文件中界说的_count_files函数界说的completion,假如_count_files函数没有举行婚配,那末就会实行目次补全。
  1. $telnet[TAB][TAB]localhostdev-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操作系统有着广泛的应用空间。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-21 18:05:24 | 只看该作者
硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。
只想知道 该用户已被删除
6#
发表于 2015-3-6 21:44:10 | 只看该作者
对我们学习操作系统有很大的帮助,加深我们对OS的理解。?
因胸联盟 该用户已被删除
7#
发表于 2015-3-13 22:33:55 | 只看该作者
Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。
活着的死人 该用户已被删除
8#
发表于 2015-3-20 22:08:30 | 只看该作者
应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-25 00:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表