【问题标题】:Utilizing Bash Completion in a script在脚本中使用 Bash 补全
【发布时间】:2014-10-24 18:16:17
【问题描述】:

我有一个以 UUID 作为参数的脚本。当我手动运行它时,我可以使用我编写的自定义选项卡完成来访问它。有没有办法在 shell 脚本中访问这个补全?

~/myscript stop 0011<tab>

它将完成到:

~/myscript stop 0011-1111-1111-1111

编辑: 例如:

#!/bin/bash
echo "~/myscript stop \t" | bash -i 

bash 补全已经写好了。我目前正在另一个交互式 shell 中执行它,有没有办法执行这是同一个 shell?

【问题讨论】:

  • 您在编写脚本时?也许吧,但这将由你的编辑器提供,而不是 shell。
  • 脚本中的 id [command] 将为您完成工作.. 不要从外部接受参数
  • 您是在问是否可以运行~/myscript stop 0011-1111-1111-1111 并让myscript 访问值0011-1111-1111-1111
  • 我正在开发一个启用了 bash 补全功能的 python 程序。当我通过终端访问它时,我可以通过启动参数并按 Tab 来使用 bash 完成。但是,如果我把它放到一个 shell 脚本中,我希望能够访问相同的选项卡完成。目前我正在通过将它管道到一个新的交互式外壳中来访问它。 echo "~/myscript stop 0011\t" | bash -i
  • @Ashish UUID != 用户 ID

标签: bash shell tab-completion


【解决方案1】:

我不确定您为什么不能将完整的 UUID 放入脚本中。但我希望您可以使用内置的 bash compgen 做您想做的事情。

我没有经常使用compgen 并且我从未使用过自定义选项卡完成,所以我不能给你详细的说明,但是使用compgen 来生成可能的文件名完成列表很容易。

例如,在我的主目录中,

compgen -f .ba

打印

.bash_history
.bashrc.dpkg-old
.bashrc
.bash_logout
.bashrc~

【讨论】:

  • 啊这很有用,这就是我要找的。真的不知道从哪里开始。
猜你喜欢
  • 2010-11-06
  • 1970-01-01
  • 2015-02-18
  • 2011-03-08
  • 1970-01-01
  • 2016-03-31
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多