mar*_*arc 4 python bash shell readline
假设我有一个名为的程序script.py,它允许使用命令行选项-i,该选项需要一个附加的关键字参数,例如
python script.py -i foo
Run Code Online (Sandbox Code Playgroud)
现在假定在我的工作目录中有一个名为的文件tags.txt,其中包含字符串列表。现在,我希望shell -i根据中给出的字符串列表自动完成调用脚本时执行的操作tags.txt。想法是-i在该文件中存储一些常见的输入参数,以减少键入错误并确保更快的输入。纯Python解决方案有可能吗?
在bash中,自动完成程序可以运行命令或bash函数来动态生成自动完成程序列表。假设您的脚本称为foo。一种选择是创建一个名为foo_completer的脚本。您可以在.bash_profile中将其注册为:
complete -C foo_completer foo
Run Code Online (Sandbox Code Playgroud)
现在,只要您使用foo命令选择自动完成选项,就会从bash中调用foo_completer。但是,使用-C并不是创建动态完成程序的唯一方法。这里有一些链接可以帮助您入门。
我见过的最复杂的完成器之一是用python编写的aws cli自动完成器。
由于您使用的是python,请签出python argcomplete项目。
这是另一个例子
我能想到的最接近的(再次同意一个家伙提出的另一点,这比Python更像是一个shell问题/答案),而不是tags.txt是一个文件,而是将其创建为一个目录,并带有指向你想要的文件。但是,要获得自动完成功能,您需要包含目录名称。
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |