我注意到如果使用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
已经有两个类似的问题,但我没有发现它们有用。
答案 0 :(得分:6)
这与argparse甚至Python本身无关。您可能启用了“programmable bash completion”,并且完成规则被混淆,因为您的命令行以“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