我的bash脚本简化了生成一些长终端命令,例如
git diff "file.one" "file.two" "file.million"
之后我希望这个构建的命令不是从脚本内部运行而是将其设置为终端输入,因此用户可以按“Enter”并运行它。我将实现以下目标:
有可能吗?
答案 0 :(得分:0)
执行类似操作的一种方法是将项目推送到历史记录中:
history -s 'command to store'
在此之后,用户必须按↑返回命令并编辑/执行它。
注意:如果您这样做,脚本必须 sourced 而不是执行,即用户必须运行{{1}而不只是. /path/to/script.sh
。
要让用户在脚本中执行命令之前编辑命令,您可以这样:
/path/to/script.sh
command='git diff "file.one" …'
read -e -i "$command" command
eval "$command"
选项使用readline以便文件名完成起作用,-e
选项使用提供的文本预先填充输入字段。
之后您可以选择执行-i
(同样,脚本必须是 source d才能生效)。