![回显文本作为 bash 中的建议提示](https://linux22.com/image/82621/%E5%9B%9E%E6%98%BE%E6%96%87%E6%9C%AC%E4%BD%9C%E4%B8%BA%20bash%20%E4%B8%AD%E7%9A%84%E5%BB%BA%E8%AE%AE%E6%8F%90%E7%A4%BA.png)
是否可以更改出现在$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
#!/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“此处有一些文本””。