bash的自動補全機制三件套complete/compgen/compopt之一的complete有一個參數是-C command,shell
這個參數的用法在幫助裏面有點語焉不詳bash
-C command command is executed in a subshell environment, and its output is used as the possible completions. 在子shell中執行命令, 並將其結果做爲補全條目
因此我嘗試摸索了一下它的套路app
腳本auto_complete.shcode
#!/bin/bash echo 腳本名字:$0 命令名字:$1 當前參數:$2 前一個參數:$3
將auto_complete.sh做爲app1命令的補全腳本it
complete -C ./auto_complete.sh app1
辣麼(注:<tab>是按TAB鍵的意思)io
app1 <tab> app1 腳本名字:./auto_complete.sh 命令名字:app1 當前參數: 前一個參數:app1
app1 100<tab> app1 腳本名字:./auto_complete.sh 命令名字:app1 當前參數:100 前一個參數:app1
app1 888 999<tab> app1 888 腳本名字:./auto_complete.sh 命令名字:app1 當前參數:999 前一個參數:888
app1 10 20 30 40 50<tab> app1 10 20 30 40 腳本名字:./auto_complete.sh 命令名字:app1 當前參數:50 前一個參數:40
總結一下,class
complete -C command 在子shell中執行命令command, 並將其結果做爲補全條目sed
傳遞的command的參數有4個,分別是 command的名字 命令的名字 當前(待補全)的參數 前一個參數command
command的輸出是一行時自動補全,總結
command的輸出是多行時每一行表明一個候選詞, 列出供選擇