国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Linux中10個有用的命令行補齊命令

系統 Linux
在Linux系統中,輸入一個命令,再按兩次TAB鍵,就會列出所有以輸入字符開頭的可用命令。這并不新鮮,很可能你已經知道了這個。這個功能被稱作命令補全。本文詳細說明了使用可編程的命令行補全功能把自動補全的功能應用于選項或者命令行參數。

在Linux系統中,輸入一個命令,再按兩次TAB鍵,就會列出所有以輸入字符開頭的可用命令。這并不新鮮,很可能你已經知道了這個。這個功能被稱作命令補全。默認情況下,bash命令行可以自動補全文件或目錄名稱。不過,我們可以使bash命令行補全執行更多的操作,通過補全命令可以讓它成就下一個輝煌。

這個教程說明了我們是怎樣使用可編程的命令行補全功能(programmable completion)把自動補全的功能應用于選項或者命令行參數。

例如:在輸入write 命令之后,如果你按兩次TAB按鍵,自動補全功能會提供執行write操作的列表。

  1. $ write [TAB][TAB] 
  2. bala      raj 
  3. jason     randy 
  4. john      ritu 
  5. mayla     thomas 
  6. nisha     www-data 

在下面的例子中,輸入telnet命令將會顯示可用了主機名:

  1. $ telnet [TAB][TAB] 
  2. localhost  dev-db  fileserver 

要讓可編程命令補全功能在你的終端起作用 ,你只需要執行/etc/bash_completion即可,就像下面展示出來的操作:

  1. # . /etc/bash_completion 

你也可以取消/etc/bash.bashrc(對于Ubuntu Linux 13.04系統)下面的注釋,這樣,你就可以不需要執行上面的命令了,

  1. enable bash completion in interactive shells 
  2. if ! shopt -oq posix; then 
  3. if [ -f /usr/share/bash-completion/bash_completion ]; then 
  4. . /usr/share/bash-completion/bash_completion 
  5. elif [ -f /etc/bash_completion ]; then 
  6. . /etc/bash_completion 
  7. fi 
  8. fi 

如果你沒有發現這些代碼,也沒有找到/etc/bash_completion文件,那么你只需要通過使用apt-get命令來安裝bash_completion 包即可。

1、查看現有的bash補全命令

啟用可編程的bash命令行補全功能,就可以定義一套bash補全命令。命令行補全可以用來定義bash補全命令。

來看一下現有的bash補全功能,使用完整的命令,如下:

  1. complete -p | less 

選項 -p 是可選擇的。

2、Bash中標準補全的列表

Bash為linux用戶默認提供了下面的標準補全命令。

  • 變量名補全(Variablename completion)
  • 用戶名補全(Username completion)
  • 主機名補全(Hostname completion)
  • Path路徑補全(Pathname completion)
  • 文件名補全(Filename completion)

我們已經在更早的一篇文章bash standard completion 中討論了這些。

3、為獲取命令定義補全命令

使用-c參數定義一個補全命令來獲得可使用的命令列表。在下面的例子中,為which命令定義了補全命令,

  1. $ complete -c which 
  2. $ which [TAB][TAB] 
  3. Display all 2116 possibilities? (y or n) 

就像上面看到的,如果按”y”,所有的命令都會顯示出來。

4、為獲得目錄定義補全命令

使用參數d,定義一個只獲得目錄名稱的補全命令,下面的例子中,定義了ls的補全命令

  1. $ ls 
  2. countfiles.sh  dir1/          dir2/          dir3/ 
  3. $ complete -d ls 
  4. $ ls [TAB][TAB] 
  5. dir1/          dir2/          dir3/ 

就像上面看到的,連續按兩次TAB,就可以看到目錄名稱。

5、為獲得后臺作業名稱獲得補全命令

通過使用complete命令,把獲得job名稱作為參數是允許的。參數j用來把job名稱作為參數傳到命令行,展示如下:

  1. $ jobs 
  2. [1]-  Stopped                 cat 
  3. [2]+  Stopped                 sed 'p' 
  4. $ complete -j ./list_job_attrib.sh 
  5. $ ./list_job_attrib.sh [TAB][TAB] 
  6. cat   sed 

想要了解更多的后臺任務,可以通過這些案例來了解下如何管理Linux 后臺任務。

6、使用前綴和后綴補全命令

補全命令可以通過被前綴(在后面添加)和后綴(添加在后面)來定義。在下面的例子中,前綴和后綴在list_job_attrib.sh中被定義。

  1. $ jobs 
  2. [1]+  Stopped                 cat 
  3. $ complete -P '">' -S '<"' ./list_job_attrib.sh 
  4. $ ./list_job_attrib.sh [TAB][TAB] 
  5. $ ./list_job_attrib.sh ">cat<

7、具有排除功能的文件名和目錄補全

看看下面的腳本,輸出output 目錄下面的文件:

  1. $ cd output/ 
  2. $ ls 
  3. all_calls.txt   incoming_calls.txt   outgoing_calls.txt   missed_calls.txt 
  4. parser_mod.tmp  extract.o 

在上面的例子中,如果你想要排除以.tmp和.o為后綴的文件,實現ls命令的自動補全功能,可以這樣:

  1. $ export FIGNORE='.tmp:.o' 
  2. $ complete -f -d ls 
  3. $ cd output 
  4. $ ls [TAB][TAB] 
  5. all_calls.txt   incoming_calls.txt   outgoing_calls.txt   missed_calls.txt 

FIGNORE 是一個shell變量,它包含了排除在自動補全隊列中的文件的文件名的后綴。

8、通過IFS變量分割String字符串,得到被分割后的值。

單詞表可以通過使用w參數被IFS 變量中定義的字符串分割成多個單詞。最終每個單詞都會被分開,被顯示出來。

  1. $ export IFS=" " 
  2. $ complete -W "bubble quick" ./sort_numbers.sh 
  3. $ ./sort_numbers.sh [TAB][TAB] 
  4. bubble   quick 

如上所述,被IFS分割之后,單詞就會被擴展開,所以也可能有下面展示的這些變量。

  1. $ echo $SORT_TYPE1 
  2. bubble 
  3. $ echo $SORT_TYPE2 
  4. quick 
  5. $ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh 
  6. $ ./sort_numbers.sh [TAB][TAB] 
  7. bubble   quick 

9、編寫你自己的函數以實現自動補全功能

你可以聲明一個函數來定義補全功能。使用 -F 參數,被傳入到補全命令的函數名,可以執行并。例如,函數可以寫成下面的樣式。

  1. _parser_options() 
  2. local curr_arg; 
  3. curr_arg=${COMP_WORDS[COMP_CWORD]} 
  4. COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) ); 

在上面的函數中,

COMPREPLY :存儲在按下[TAB][TAB]之后打印信息的數組。

COMP_WORDS :在命令行輸入的單詞數組

COMP_CWORD :COMP_WORDS 數組的索引,可以訪問命令行中不用位置的單詞。

compgen :使用-W參數,持有current_arg變量中盡可能完整的、分開的內容。

文件中parser_option 函數通過source執行如下:

  1. $ source parser_option 

這個函數鏈接到腳本解析器如下:

  1. $ complete -F _parser_options ./parser.pl 
  2. $ ./parser.pl [TAB][TAB] 
  3. -i       --incoming       -o       --outgoing       -m       --missed 

就像上面所看到的,解析器的參數可以通過_parser_options函數生成。

注意:查看/etc/bash_completion文件,了解更多的可編程的命令行補全功能函數。

10、當第一規范沒有進行匹配時,就需要執行第二規范

通過定義的補全規范,沒有進行匹配,那么通過-o參數定義的completion 就會執行。

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

同上,通過使用_count_files 文件中定義的_count_files 函數定義的completion ,如果_count_files函數沒有進行匹配,那么就會執行目錄補全。

  1. $ ls 
  2. countfiles.sh    dir1/      dir2/      dir3/ 
  3. $./countfiles.sh [TAB][TAB] 
  4. dir1    dir2    dir3 

原文鏈接: Balakrishnan Mariyappan 翻譯: 極客范 踏雁尋花

譯文鏈接: http://www.geekfan.net/8169/

責任編輯:黃丹 來源: 極客范
相關推薦

2015-10-08 09:01:51

2015-09-28 11:22:55

命令行補全Linux

2022-01-14 07:28:20

Linux 命令行組合

2015-09-29 16:03:43

2022-03-20 07:07:23

MySQL數據庫命令行工具

2019-09-09 15:43:29

UnixLinux命令行

2012-07-11 13:35:25

UnixLinux

2009-12-23 14:14:09

Linux高級命令行

2025-08-05 07:52:41

man 命令Linux命令行

2009-12-09 09:25:52

Linux命令行svn命令

2010-09-01 14:23:54

Linux命令行開發

2010-10-12 17:29:22

MySQL命令行

2015-06-16 10:36:45

Linux命令行

2015-07-30 11:04:08

Linux命令行工具

2015-07-29 10:34:50

Linux系統命令行工具

2015-07-30 11:24:47

Linux 系統命令行工具

2017-08-30 19:11:38

Linux命令行tab

2009-12-24 14:51:39

Linux命令行

2010-08-24 09:10:14

Linux命令行工具

2014-02-18 10:45:48

點贊
收藏

51CTO技術棧公眾號

亚洲精品在线电影| 久久艳片www.17c.com| 成人在线播放网址| 欧美日本不卡| 亚洲人永久免费| 日本中文字幕伦在线观看| 欧美激情一区在线观看| 日本免费在线视频观看| 国内精品久久久久久久影视麻豆 | 五月天国产在线| 天天色图综合网| 成年人在线观看视频免费| 免费美女久久99| 97影院在线午夜| 美腿丝袜亚洲图片| 欧美成人激情在线| 人人草在线视频| 北条麻妃国产九九精品视频| 国产精品一区二区三区久久久 | 鲁一鲁一鲁一鲁一澡| 精品美女一区| 久久在线观看免费| 97涩涩爰在线观看亚洲| 国产精品aaa| 清纯唯美亚洲激情| 亚洲精品乱码久久久久久自慰| 五月天电影免费在线观看一区| 最近久乱中文字幕| 成年人视频在线看| 国产99在线观看| 红桃视频国产精品| av一本久道久久综合久久鬼色| 综合久久五月天| avav在线看| 欧美性69xxxx肥| 国产精品日韩在线一区| 国产精品xnxxcom| 亚洲精品一区二区久| 女人让男人操自己视频在线观看| 制服丝袜亚洲网站| 少妇视频在线| 亚洲黄页网在线观看| 国产网红在线观看| 日韩久久免费电影| 日韩视频网站在线观看| 精品小视频在线| 亚洲第一会所001| 日韩中文字幕久久| 日韩08精品| 欧美亚洲成人网| 国产日韩欧美综合| 性欧美xxx69hd高清| 99视频国产精品| 欧美一级高清免费| 三级毛片在线免费看| 国产情人综合久久777777| 日本高清久久天堂| 成年视频在线观看| 国产一区二区三区不卡av| 成人激情小说乱人伦| 久久久久久噜噜噜久久久精品| 日本香蕉视频在线观看| 久久蜜桃av| 久久99精品久久久久久秒播放器| 国内综合精品午夜久久资源| 97视频在线免费| 国产精品99久久久久久久女警 | 色综合久久99| h动漫在线视频| 91国在线观看| 人人澡人人添人人爽一区二区| 亚洲欧洲在线免费| 日韩最新av| 国产一区二区色| 蜜桃视频第一区免费观看| 乱熟女高潮一区二区在线| 国产精品成人午夜| 欧洲不卡av| 裸体女人亚洲精品一区| 欧美亚洲国产日韩| 成人在线免费播放视频| 欧美日韩高清一区二区三区| 好吊的妞视频这里都有| 欧美性高潮床叫视频| 久久久久免费精品| 99精品国产在热久久| 国产成人久久婷婷精品流白浆| 亚洲国产日韩a在线播放| 国产麻豆日韩| 高清日韩一区| 精品动漫一区二区三区在线观看| 中文字幕资源网在线观看免费| 日本精品va在线观看| 91免费欧美精品| 天堂一区二区在线免费观看| 狠狠97人人婷婷五月| 欧美尤物美女在线| 成人激情视频在线播放| 26uuu成人网一区二区三区| 中文在线一二区| 免费成人av在线播放| 亚洲无毛电影| 少妇av在线| 久久久免费在线观看| 日本免费在线视频不卡一不卡二| 鲁大师精品99久久久| 国语自产精品视频在免费| 国产精品啊啊啊| 凹凸国产熟女精品视频| 国产剧情av在线播放| 明星乱亚洲合成图.com| 精品成人免费观看| 51亚洲精品| 亚洲欧美日产图| 欧美日韩午夜视频在线观看| 欧美性www| 蜜桃欧美视频| 亚洲精品国产a| 成人日韩在线观看| 精品一区二区日本| 中文字幕日韩精品一区| 牛牛精品一区二区| 成人两性免费视频| 日本一区二区视频在线| 天堂√8在线中文| 国产久一道中文一区| 一区二区三区日韩| 亚洲男男av| wwwjizzjizzcom| 欧美在线小视频| 日本久久精品| 美女av在线免费观看| 久久亚洲精品一区二区| 国产一区二三区| 丝袜综合欧美| 精品国产日本| 日本韩国一区二区| 久久国产小视频| 91美女在线免费观看| 欧美激情videos| 久久中文字幕电影| 日韩毛片网站| 国产成人无码a区在线观看视频| 亚洲国产精品大全| 日日摸夜夜添夜夜添亚洲女人| 91视频在线观看| 91嫩草国产在线观看| 一区二区三区在线影院| 日韩福利视频一区| 色综合小说天天综合网| 久久久久久久av| 国产精品欧美一区二区三区| 精品视频一区二区三区| 69sex久久精品国产麻豆| 亚洲欧美国产另类| 国产传媒日韩欧美成人| 在线看欧美视频| 91专区在线观看| 欧美成aaa人片免费看| 久久久www成人免费毛片麻豆| 国产一区二区视频在线看| 欧美韩国日本在线| 欧美精品久久一区二区| 国产精品久久久久久户外露出| 欧美日韩一区二区三区不卡视频| 免费在线观看羞羞视频| 国产不卡av在线免费观看| 亚洲免费av在线| 色偷偷综合网| 精品视频一二区| 国产一区二区三区色淫影院| 欧美高清精品3d| 美国十次了思思久久精品导航| av综合电影网站| 国产精品免费成人| 97国产在线视频| 黄色成人在线免费| 伊人久久大香线蕉av超碰演员| 国产午夜精品久久久久免费视| 亚洲视频小说| 日韩一中文字幕| 亚洲精品大片www| 欧美日韩一区二区三区四区在线观看 | 成人在线小说| 亚洲综合精品伊人久久| 欧美午夜精品一区二区三区| 午夜亚洲性色视频| 成人免费av电影| 国产真实伦在线观看| 国产精品白丝jk白祙| 日韩高清av在线| 国产三级欧美三级日产三级99| 精品国产一区二区三区久久久樱花 | 亚洲欧洲日韩在线| 国产精品久久天天影视| 久草免费在线| 日本黄网站免费| 91手机在线视频| 在线日韩第一页| 国产亚洲精品7777|