亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux怎么實現自動補全命令

發布時間:2022-01-26 15:53:39 來源:億速云 閱讀:1343 作者:iii 欄目:開發技術

這篇文章主要介紹“Linux怎么實現自動補全命令”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Linux怎么實現自動補全命令”文章能幫助大家解決問題。

linux命令自動補全

centos7下執行yum install bash-completion之后重啟系統正常。

docker命令自動補全

yum install docker后,會有一個文件: /usr/share/bash-completion/completions/docker ; 顯然,該腳本是用于bash自動補全的,但是,直接 source 執行該腳本后,docker命令后敲tab,會有錯誤。

 yum install -y bash-completion后就可以解決。

kubectl命令自動補全

kubectl這個命令行工具非常重要,與之相關的命令也很多,我們也記不住那么多的命令,而且也會經常寫錯,所以命令自動補全是非常有必要的,kubectl命令行工具本身就支持complication,只需要簡單的設置下就可以了。以下是linux系統的設置命令:

 source > ~/.bashrc

python shell自動命令補全

  1. 創建文件 .pythonrc, 添加如下內容

     import rlcompleter, readline
     
     readline.parse_and_bind('tab:complete')
  2. 在 .bashrc 文件尾追加如下內容

      export PYTHONSTARTUP=~/.pythonrc
  3. 更新環境變量 source ./.bashrc

shell命令補全

在shell命令行可以使用“Tab”鍵自動補全命令或文件名,這種功能其實可以在shell腳本中實現,使得使用“Tab”鍵可以自動補全自定義的shell函數,相關命令有三個,compgen、complete和compopt。

1、compgen

 compgen [option] [word]

compgen命令根據option生成與word可能匹配的補全,并打印到標準輸出中,這些選項可以是內建命令complete所支持的任何選項,但不能是“-p”和“-r”,如果使用了“-F”或“-C”,則由可編程補全功能設置的各個shell變量雖然仍可以使用,但它們的值卻沒什么作用。補全條目以相同的方式生成,就好像可編程補全代碼用相同的補全選項直接生成了補全條目一樣,如果指定了word,則只顯示與之匹配的條目。

2、complete

 complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...]
 
 complete -pr [-DE] [name ...]

complete命令指定如何對各個名稱進行補全。如果指定了選項“-p”或者沒有指定任何選項,則把已有的補全方法用一種可以重新作為作為輸入的格式打印出來。選項“-r”用以刪除指定名稱的補全方法,不指定名稱時刪除所有的名稱的補全方法。選項“-D”的意思是其后的選項和動作將應用到默認命令補全,也就是說之前未定義的補全命令也可以補全。選項“-E”的意思是其后的選項和動作將應用到空命令補全,也就是說補全空白行。對于選項“-G”、“-W”、“-X”、“-P”和“-S”,應該使用括號進行保護,防止補全開始前被擴展。

“-o bashdefault”:如果沒有生成補全條目,就使用bash默認的其它補全。 

“-o default”:如果沒有生成補全條目,就使用“readline”默認的文件名補全。 

“-o dirnames”:如果沒有生成補全條目,就進行目錄名補全。 

“-o filenames”:告訴“readline”生成文件名,以便進行與文件名相關的處理,例如在目錄名后面加上斜杠,引用特殊字符,去掉行尾的空格,目的是用于shell函數。 

“-o noquote”:告訴“readline”不引用文件名,默認會進行引用。 

“-o nospace”:告訴“readline”在補全的名稱后不添加空格,默認添加空格。 

“-o plusdirs”:生成補全條目之后,還會進行目錄名補全并把結果添加到其它動作得到的結果中。 

“-A alias”:別名,同選項“-a”。 “-A arrayvar”:數組變量名。 “-A binding”:“readline”鍵綁定名。 

“-A builtin”:shell內建命令名,同選項“-b”。 

“-A command”:命令名,同選項“-c”。 

“-A directory”:目錄名,同選項“-d”。

“-A disabled”:不可用的shell內建命令名。 

“-A enabled”:可用的shell內建命令名。 

“-A export”:導出的shell變量名,同選項“-e”。 

“-A file”:文件名,同選項“-f”。

“-A function”:shell函數名。 

“-A group”:組名,同選項“-g”。 

“-A helptopic”:內建命令help支持的幫助主題。 

“-A hostname”:主機名,從shell環境變量HOSTFILE中獲取。

“-A job”:作業名,同選項“-j”。 

“-A keyword”:shell保留字,同選項“-k”。 

“-A running”:正在運行的作業名。 

“-A service”:服務名,同選項“-s”。

“-A setopt”:內建命令set的選項“-o”可用的參數。 

“-A shopt”:內建命令shopt可接受的選項名。 

“-A signal”:信號名。 

“-A stopped”:暫停的作業名。 

“-A user”:用戶名,同選項“-u”。

“-A variable”:所有的shell變量名,同選項“-v”。 

“-C command”:在子shell中執行命令,并把其結果作為補全條目。 

“-F function”:在當前的shell環境中執行函數function,執行時,參數“$1”表示那個參數正在進行補全的命令名,參數“$2”表示補全的名稱,參數“$3”表示補全的名稱前面的單詞,表示結束執行時,從數組變量COMPREPLY中獲取補全條目。 “-G globpat”:使用文件名擴展模式globpat進行擴展以生成可能的補全條目。 

“-P prefix”:在所有的選項應用到補全結果后,在結果前添加前綴prefix。 

“-S suffix”:在所有的選項應用到補全結果后,在結果后添加后綴suffix。 

“-W wordlist”:使用特殊變量IFS中的字符拆分單詞列表wordlist,并擴展拆分后的每個單詞,結果中與待補全單詞 匹配的條目就是補全條目。 

“-X filterpat”:filterpat是進行文件名擴展時使用的模式,它作用于通過前面的選項和參數生成的補全列表,并把每個與過濾模式匹配的條目刪除,模式中前導的嘆號表示否定,這時會刪除與過濾模式不匹配的條目。

3、compopt

 compopt [-o option] [-DE] [+o option] [name]

compopt命令修改每個名稱指定的補全選項,如果沒有指定名稱則修改當前執行的補全的選項,如果也沒有指定選項,則顯示每個名稱或當前補全所用的選項。選項可能的取值就是上面的內建命令complete的有效選項。

4、相關變量

除了命令compgen、complete和compopt之外,shell命令行自動補全還要用到一些shell自帶的變量,如下。

COMP_CWORD:在包含當前光標位置的單詞“${COMP_WORDS}”中的下標,這個變量只能在可編程補全的shell函數中使用。 COMP_LINE:當前命令行,這個變量只能在可編程補全的shell函數中使用。 

COMP_POINT:當前光標位置相對于當前命令行開頭的下標,如果當前光標位置在當前命令行的尾部,則這個變量的值就與“${#COMP_LINE}”相同,這個變量只能在可編程補全的shell函數中使用。 

COMP_TYPE:一個整數值,與觸發調用補全函數時試圖進行補全的類型相對應,正常補全為“TAB”,連續輸入制表符后的補全列表為“?”,列出其它部分補全條目為“!”,沒有修改單詞而列出補全條目為“@”,補全菜單為“%”,這個變量只能在可編程補全的shell函數中使用。 

COMP_KEY:觸發當前補全函數的鍵,或鍵序列中的最后一個鍵。 

COMP_WORDBREAKS:“readline”庫進行單詞補全時用作單詞分隔的字符,如果沒有設置這個變量,即使以后進行重置,它也會失去特殊作用。

 COMP_WORDS:一個數組變量,包含當前命令行的每個單詞,與“readline”一樣當前行被COMP_WORDBREAKS拆分成單詞,這個變量只能在可編程補全的shell函數中使用。 

COMPREPLY:一個數組變量,bash從這個變量中讀取可編程補全所調用的shell函數生成的補全條目。

5、例子

測試腳本如下:

 function autotab() {
 
     echo "function autotab called $@"
 
 }
 
 autotab_list=("aa" "bb" "cc" "dd" "123")
 
 function _autotab() {
 
     local cur
 
     COMPREPLY=()
 
     cur="${COMP_WORDS[COMP_CWORD]}"
 
     COMPREPLY=( $(compgen -W "${autotab_list[*]}" -- ${cur}) )
 
     return 0
 
 }
 
 complete -F _autotab autotab

例子中,在shell命令行執行命令autotab時,如果命令未輸完,按下Tab鍵就會補全這個命令,而且還會顯示或補全一些參數,這些都是通過命令complete及函數_autotab完成的,數組autotab_list的各元素擴展為命令的參數。

關于“Linux怎么實現自動補全命令”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜兰县| 滨州市| 正阳县| 海伦市| 金寨县| 乌海市| 铜川市| 九江市| 巴青县| 新晃| 弋阳县| 博乐市| 霍邱县| 策勒县| 桦甸市| 安徽省| 武冈市| 嘉鱼县| 桂林市| 涟源市| 枣阳市| 内黄县| 颍上县| 阿拉善右旗| 乌兰浩特市| 青浦区| 二连浩特市| 清徐县| 巴中市| 浦江县| 绥德县| 民权县| 新平| 通许县| 定襄县| 永川市| 启东市| 景宁| 浮山县| 平江县| 陇南市|