【发布时间】:2016-02-11 20:23:52
【问题描述】:
我想编写一个 shell 脚本,它可以通过在命令行提示符后打印来建议命令。 然后,在脚本退出后,用户只需按 [enter] 键即可运行此建议的命令。
鉴于我是 bash 新手,我什至不知道是否可以这样做。我想过使用复制过去命令,移动光标,使用 $PS1 变量,但没有找到合适的方法..
有没有人知道如何实现这样的功能?
【问题讨论】:
-
只是打印到标准输出然后让他们复制粘贴?在您退出之前询问他们是否要运行它,如果他们说是则为他们运行它?
-
我认为这不可能。
readline不提供以编程方式将文本添加到输入缓冲区的方法。 -
可能可以使用 xte 之类的东西在后台运行延迟脚本的情况下输入终端,但这不是一个实用的解决方案,如果 shell 在脚本运行时失去焦点,(看似)随机按键将发生在新聚焦的窗口上。
-
我刚刚测试过了。您可以使用 xte 将按键“模拟”到 shell 中,因此可以将此功能构建到 bash 脚本中,它只是有问题并且可能是零星的。这是我的快速测试的 sn-p:(在 cmets 中格式化。)
01:43 PM lando ~ xte 'key v'; xte 'key i'; xte 'key m' vim01:43 PM lando ~ vim -
@Landen 感谢您的建议,我已经能够获得所需的行为!
标签: linux bash command-line prompt