【问题标题】:How to set terminal current input from bash scripts如何从 bash 脚本设置终端当前输入
【发布时间】:2017-02-27 23:27:10
【问题描述】:

我的 bash 脚本简化了生成一些长终端命令,例如

git diff "file.one" "file.two" "file.million"

之后,我希望这个构建的命令不要从脚本内部运行,而是将其设置为终端输入,因此用户可以按“Enter”并运行它。我将实现以下目标:

  1. 用户可以在运行前编辑命令
  2. 命令将载入历史记录

有可能吗?

【问题讨论】:

    标签: bash macos terminal


    【解决方案1】:

    做类似事情的一种方法是将项目推送到历史记录中:

    history -s '存储命令'

    之后,用户必须按 才能返回命令并编辑/执行它。

    注意:如果您这样做,脚本必须是来源而不是执行,即用户必须改为运行. /path/to/script.sh只是/path/to/script.sh


    要让用户在脚本中执行命令之前对其进行编辑,您可以这样做:

    command='git diff "file.one" …'
    read -e -i "$command" command
    eval "$command"
    

    -e 选项使用 readline 以便文件名完成工作,-i 选项使用提供的文本预填充输入字段。

    您可以选择在之后执行history -s "$command"(同样,脚本必须是sourced 才能工作)。

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多