3

argparseパラメーターを使用すると、bashタブ補完で返されるファイルが少なくなることに気付きました。どうすればそれを変更/制御できますか?

最小限のサンプルコード

me@here:~/test$ cat argparsetest.py 
import argparse
parser.add_argument('-i', help='input', required=True)

bashの完了例:

# shows all the files 
me@here:~/test$ python argparsetest.py 
argparsetest.py  result.png       u1.py  

# does not show the image result.png I am actually interested in
me@here:~/test$ python argparsetest.py -i
argparsetest.py  u1.py            

すでに2つの同様の質問がありますが、私はそれらが役に立たなかったと思います。

4

1 に答える 1

8

これは、argparseやPython自体とは関係ありません。「プログラム可能なbash補完」が有効になっている可能性がありますが、コマンドラインが「python」で始まるため、補完ルールが混乱しています。

これを回避する最も簡単な方法は、Pythonファイルの先頭に追加することです。

#!/usr/bin/env python

次に、Pythonスクリプトを実行可能にします。

me@here:~/test$ chmod u+x argparsetest.py 

次に、明示的に「python」を呼び出さずに、直接呼び出します。

me@here:~/test$ ./argparsetest.py<TAB>
argparsetest.py  result.png       u1.py  

me@here:~/test$ ./argparsetest.py -i<TAB>
argparsetest.py  result.png       u1.py  

または、bashの完了を完全にオフにすることもできます。

complete -r

また、今後のセッションで無効にする場合は、コメントアウトするか、〜/.bashrcまたは/etc/bashrcの次のような行を削除してください。

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
于 2012-05-01T14:51:25.600 に答える