回显文本作为 bash 中的建议提示

回显文本作为 bash 中的建议提示

是否可以更改出现在$PS1.这是用户输入的内容。我想建议稍后my_function运行一些命令。当然,我应该能够使用退格键修改/删除它

root@linux: 
root@linux: ls
aplha beta gamma
root@linux: my_function
root@linux: echo_something_here (It should be deletable by me)

答案1

基于这个答案您可以使用expect(您可能必须先安装它):

#!/usr/bin/expect -f

# Get a Bash shell
spawn -noecho bash

# Wait for a prompt (in my case was '$', but your example only put ':')
expect ": "

# store the first argument in a variable
set arg1 [lindex $argv 0]

# Type something
send $arg1

# Hand over control to the user
interact

exit

现在您可以调用它(假设您将其另存为my_function):

root@linux: ./my_function "some text here"
root@linux: some text here

唯一的不良影响可能是它开始了新的狂欢。

答案2

如果我正确理解了问题,那么就有一个支持脚本

#!/bin/bash
 读-ei“$*”
 printf "%s\n" "$REPLY"

例如调用 ~/bin/iedit,那么你可以说

eval $( ~/bin/iedit "这里有一些文字" )

这将输出“此处有一些文本”,您可以对其进行编辑。完成编辑后,将执行生成的命令。

这不是一个很好的代码示例。几乎总是您想使用“$@”而不是“$*”,并且通常应该尝试避免使用 eval。您可能还想添加历史记录 -s $REPLY。将这些放在一起,支持脚本可以是

#!/bin/bash
 读-ei“$*”
 历史 -s "$REPLY"
 FC-S

您可以将其调用为“source ~/bin/iedit“此处有一些文本””。

相关内容