<code id='0sj6t'><strong id='0sj6t'></strong></code>

  1. <ins id='0sj6t'></ins>

    1. <span id='0sj6t'></span><i id='0sj6t'><div id='0sj6t'><ins id='0sj6t'></ins></div></i>
      <fieldset id='0sj6t'></fieldset>
    2. <tr id='0sj6t'><strong id='0sj6t'></strong><small id='0sj6t'></small><button id='0sj6t'></button><li id='0sj6t'><noscript id='0sj6t'><big id='0sj6t'></big><dt id='0sj6t'></dt></noscript></li></tr><ol id='0sj6t'><table id='0sj6t'><blockquote id='0sj6t'><tbody id='0sj6t'></tbody></blockquote></table></ol><u id='0sj6t'></u><kbd id='0sj6t'><kbd id='0sj6t'></kbd></kbd>
    3. <acronym id='0sj6t'><em id='0sj6t'></em><td id='0sj6t'><div id='0sj6t'></div></td></acronym><address id='0sj6t'><big id='0sj6t'><big id='0sj6t'></big><legend id='0sj6t'></legend></big></address>

    4. <i id='0sj6t'></i>

      <dl id='0sj6t'></dl>

          Linux中10个你不知道的命令补齐技巧

          • 时间:
          • 浏览:6
          • 来源:124软件资讯网

              默认情形下  ,bash下令行可以自动补全文件或目录名称  。不外  ,我们可以使bash下令行补全执行更多的操作 ,通过补全下令可以让它成就下一个绚烂  。

              这个教程说明晰我们是怎样使用可编程的下令行补全功效(programmable completion)把自动补全的功效应用于选项或者下令行参数  。

              例如:在输入write 下令之后  ,若是你按两次TAB按键  ,自动补全功效会提供执行write操作的列表  。

              代码如下:

              $ write [TAB][TAB]

              bala raj

              jason randy

              john ritu

              mayla thomas

              nisha www-data

              在下面的例子中  ,输入telnet下令将会显示可用了主机名:

              代码如下:

              $ telnet [TAB][TAB]

              localhost dev-db fileserver

              要让可编程下令补全功效在你的终端起作用 ,你只需要执行/etc/bash_completion即可  ,就像下面展示出来的操作:

              代码如下:

              # . /etc/bash_completion

              你也可以作废/etc/bash.bashrc(对于Ubuntu Linux 13.04系统)下面的注释  ,这样  ,你就可以不需要执行上面的下令了  ,

              代码如下:

              enable bash completion in interactive shells

              if ! shopt -oq posix; then

              if [ -f /usr/share/bash-completion/bash_completion ]; then

              . /usr/share/bash-completion/bash_completion

              elif [ -f /etc/bash_completion ]; then

              . /etc/bash_completion

              fi

              fi

              若是你没有发现这些代码  ,也没有找到/etc/bash_completion文件  ,那么你只需要通过使用apt-get下令来安装bash_completion 包即可 。

              1、检察现有的bash补全下令

              启用可编程的bash下令行补全功效  ,就可以界说一套bash补全下令  。下令行补全可以用来界说bash补全下令 。

              来看一下现有的bash补全功效  ,使用完整的下令 ,如下:

              代码如下:

              complete -p | less

              选项 -p 是可选择的  。

              2、Bash中尺度补全的列表

              Bash为linux用户默认提供了下面的尺度补全下令  。

              变量名补全(Variablename completion)

              用户名补全(Username completion)

              主机名补全(Hostname completion)

              Path路径补全(Pathname completion)

              文件名补全(Filename completion)

              3、为获取下令界说补全下令

              使用-c参数界说一个补全下令来获得可使用的下令列表  。在下面的例子中 ,为which下令界说了补全下令  ,

              代码如下:

              $ complete -c which

              $ which [TAB][TAB]

              Display all 2116 possibilities? (y or n)

              就像上面看到的  ,若是按”y”  ,所有的下令都市显示出来  。

              4、为获得目录界说补全下令

              使用参数d ,界说一个只获得目录名称的补全下令  ,下面的例子中 ,界说了ls的补全下令

              代码如下:

              $ ls

              countfiles.sh dir1/ dir2/ dir3/

              $ complete -d ls

              $ ls [TAB][TAB]

              dir1/ dir2/ dir3/

              就像上面看到的  ,一连按两次TAB  ,就可以看到目录名称  。

              5、为获得后台作业名称获得补全下令

              通过使用complete下令  ,把获得job名称作为参数是允许的  。参数j用来把job名称作为参数传到下令行 ,展示如下:

              代码如下:

              $ jobs

              [1]- Stopped cat

              [2]+ Stopped sed 'p'

              $ complete -j ./list_job_attrib.sh

              $ ./list_job_attrib.sh [TAB][TAB]

              cat sed

              想要相识更多的后台使命  ,可以通过这些案例来相识下怎样治理Linux 后台使命  。

              6、使用前缀和后缀补全下令

              补全下令可以通过被前缀(在后面添加)和后缀(添加在后面)来界说 。在下面的例子中 ,前缀和后缀在list_job_attrib.sh中被界说  。

              代码如下:

              $ jobs

              [1]+ Stopped cat

              $ complete -P '">' -S '<"' ./list_job_attrib.sh

              $ ./list_job_attrib.sh [TAB][TAB]

              $ ./list_job_attrib.sh ">cat<"

              7、具有清除功效的文件名和目录补全

              看看下面的剧本  ,输出output 目录下面的文件:

              代码如下:

              $ cd output/

              $ ls

              all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt

              parser_mod.tmp extract.o

              在上面的例子中  ,若是你想要清除以.tmp和.o为后缀的文件  ,实现ls下令的自动补全功效  ,可以这样:

              代码如下:

              $ export FIGNORE='.tmp:.o'

              $ complete -f -d ls

              $ cd output

              $ ls [TAB][TAB]

              all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt

              FIGNORE 是一个shell变量  ,它包罗了清除在自动补全行列中的文件的文件名的后缀  。

              8、通过IFS变量支解String字符串 ,获得被支解后的值  。

              单词表可以通过使用w参数被IFS 变量中界说的字符串支解成多个单词  。最终每个单词都市被离开 ,被显示出来 。

              代码如下:

              $ export IFS=" "

              $ complete -W "bubble quick" ./sort_numbers.sh

              $ ./sort_numbers.sh [TAB][TAB]

              bubble quick

              如上所述  ,被IFS支解之后  ,单词就会被扩睁开 ,以是也可能有下面展示的这些变量  。

              代码如下:

              $ echo $SORT_TYPE1

              bubble

              $ echo $SORT_TYPE2

              quick

              $ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh

              $ ./sort_numbers.sh [TAB][TAB]

              bubble quick

              9、编写你自己的函数以实现自动补全功效

              你可以声明一个函数来界说补全功效  。使用 -F 参数  ,被传入到补全下令的函数名 ,可以执行并  。例如  ,函数可以写成下面的样式  。

              代码如下:

              _parser_options()

              {

              local curr_arg;

              curr_arg=${COMP_WORDS[COMP_CWORD]}

              COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) );

              }

              在上面的函数中  ,

              1.COMPREPLY :存储在按下[TAB][TAB]之后打印信息的数组 。

              2.COMP_WORDS :在下令行输入的单词数组

              3.COMP_CWORD :COMP_WORDS 数组的索引  ,可以会见下令行中不用位置的单词  。

              4.compgen :使用-W参数  ,持有current_arg变量中尽可能完整的、离开的内容  。

              文件中parser_option 函数通过source执行如下:

              代码如下:

              $ source parser_option

              这个函数链接到剧本剖析器如下:

              代码如下:

              $ complete -F _parser_options ./parser.pl

              $ ./parser.pl [TAB][TAB]

              -i --incoming -o --outgoing -m --missed

              就像上面所看到的 ,剖析器的参数可以通过_parser_options函数天生  。

              注重:检察/etc/bash_completion文件  ,相识更多的可编程的下令行补全功效函数 。

              10、当第一规范没有举行匹配时  ,就需要执行第二规范

              通过界说的补全规范  ,没有举行匹配  ,那么通过-o参数界说的completion 就会执行  。

              代码如下:

              $ complete -F _count_files -o dirnames ./countfiles.sh

              同上  ,通过使用_count_files 文件中界说的_count_files 函数界说的completion ,若是_count_files函数没有举行匹配 ,那么就会执行目录补全  。

              代码如下:

              $ ls

              countfiles.sh dir1/ dir2/ dir3/

              $./countfiles.sh [TAB][TAB]

              dir1 dir2 dir3