是否可以将文本添加到当前bash用户输入提示(而不是信息显示提示,在$
或#
之后输入),就好像用户键入了什么一样。
例如,(愚蠢的例子)
假设我想要一个在按下回车后在下一个提示中添加"sudo"的命令
user@computer ~$ runAsSudo # ENTER PRESSED
user@computer ~$ sudo █ # █ is the cursor
我真正的应用程序是有一个命令来撤销某些东西,例如副本,但它不是运行它或请求y/n,而是简单地将它添加到输入提示符中,用户可以在其中执行任何操作。
user@computer ~$ cp myFile /some/long/path/ # ENTER PRESSED
user@computer ~$ undo # ENTER PRESSED
user@computer ~$ cp /some/long/path/ myfile █ # █ is the cursor
Readline库没有这个功能(尽管为了参考,您可能想看看zsh
,它的内置行编辑器确实有这个功能)。不过,在这种情况下,您可以使用历史扩展来代替undo
命令。例如,键入!!
,然后键入Meta-^(通常为Alt-^,但可能为Esc-^,具体取决于您的设置)将展开历史展开,而无需实际执行命令,让用户编辑命令。