bash complete -C command

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的輸出是多行時每一行表明一個候選詞, 列出供選擇

相關文章
相關標籤/搜索