首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fish完成脚本

Fish完成脚本
EN

Unix & Linux用户
提问于 2021-05-21 18:35:33
回答 1查看 178关注 0票数 1

我正在为一个命令编写一个完成脚本,而且我被困住了。我发现的文档和各种网站不适合我需要的东西。主命令是pacstall,它有标志:-I -S -R -C -U -V -L -Up -Qd -Qi。对于大多数标志,我需要完成作为命令的输出(如果我运行pacstall -I,那么选项卡,它将显示命令curl -s $(cat /usr/share/pacstall/repo/pacstallrepo.txt)/packagelist的输出。到目前为止,这就是我所拥有的:

代码语言:javascript
复制
set -l pacstall_commands "-I -S -R -C -U -V -L -Up -Qd -Qi"
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -I -d 'Install package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -S -d 'Search for package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -R -d 'Remove package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -C -d 'Change repository'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -U -d 'Update pacstall scripts'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -V -d 'Print pacstall version'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -L -d 'List packages installed'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Up -d 'Upgrade packages'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Qd -d 'Query the dependencies of a package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Qi -d 'Get package info'

此外,即使在输入标志之后,脚本仍会继续完成选项卡。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-05-22 11:48:11

完整命令的-n标志允许您指定完成发生的条件。在这种情况下,您可以使用__fish_seen_subcommand_from函数来指定是否已经看到了子命令-I

之后,可以使用-a标志指定要在()中运行的命令。

代码语言:javascript
复制
complete -f --command pacstall -n "__fish_seen_subcommand_from -I" -a "(curl -s (cat /usr/share/pacstall/repo/pacstallrepo.txt)/packagelist)"

请注意,在fish中,您在捕获命令结果时不使用$符号,这是您在问题中发布的。

至于你的最后一点。如果从set中删除引号,就会解决重复引用的问题。通过以这种方式使用引号,它指定了一个长命令,而不是单独的命令。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/650811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档