1

私の職務では

# Tab completion
if [ "$1" = "--complete" ]; then
    shift
    # Commands
    for line in $(compgen -ac "notes_$1" | sed 's/^notes_//'); do
        echo $line
    done
    # Notes
    for line in $(cd $NOTES_DIR; ls $1* 2>/dev/null); do
        echo $line
    done
    return

これにより、notes_で始まるすべてのコマンドと、あるディレクトリ内のすべてのファイルが一覧表示されます。これは、のように呼び出された場合に表示されnotes --completeます。ただし、タブ補完を使用しようとすると

complete -C 'notes --complete "$COMP_LINE"' notes

コマンドではなくファイルのみが表示されますか?

4

1 に答える 1

1

追加

echo "--$1--"

shift

問題は、

compgen -ac "notes_$1"

内容はあなたが期待するものではありません

あなたがそうするとき、 $1には値札があると思います

$ notes <TAB>

また、 PATHに notes_notes* エイリアスまたはコマンドがありません

エイリアス notes_notesWHATEVER を追加して、オートコンプリートを再試行することを確認します

于 2012-08-27T22:52:01.703 に答える