奇怪的 shell tab 完成行为

问题描述 投票:0回答:1

我在脚本中使用

argparse
Python 模块,如下所示:

import argparse

def get_info(line: str) -> tuple:
    print(line.split("|"))
    
def main():
    p = argparse.ArgumentParser()

    p.add_argument("-f", "--file")
    p.add_argument("-d", "--directory")
    p.add_argument("-o", "--output",
                    default="stdout",
                    required=False)
                    
    args = p.parse_args()

if __name__ == "__main__":
    main()

当我尝试像这样运行它时:

python script.py path/to/my/

然后按 Tab,它会显示可能的文件和目录的列表;这里没问题,没问题

但是,如果我尝试使用

-f
标志运行它:

python script.py -f path/to/my/

然后按 Tab,它会自动用目录补全,如果有更多目录,它会列出它们,但它完全忽略文件,我不知道为什么。

如果我用双破折号运行它(

--file
):

python script.py --file path/to/my/

然后就又可以正常工作了。

是shell问题还是Python问题?

python argparse
1个回答
0
投票

正如@metatoaster所说,我用

complete -r
删除了所有自定义完成条目,我首先用
complete -p > backup.sh
进行了备份,这似乎已经解决了问题!非常感谢大家!

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.