【问题标题】:Apple script open Terminal with ready commandApple脚本使用就绪命令打开终端
【发布时间】:2015-02-05 16:29:24
【问题描述】:

我正在尝试使用带有准备好的命令的苹果脚本打开终端,但没有执行它并允许用户通过单击 Enter 来执行此操作(所以我不想使用告诉终端执行脚本)

我使用的一种方法是使用击键:

告诉应用程序“终端”执行脚本“echo Hi!”
击键“abc” 结束告诉

但这对我不起作用。有什么想法吗?

【问题讨论】:

    标签: macos shell terminal applescript


    【解决方案1】:

    我认为您想启动终端并在终端中为用户准备好所有命令,因此他/她只需按“Enter”。如果是这样,您可以这样做:

    tell application "Terminal"
        activate
        delay 1
        tell application "System Events"
            keystroke "echo hi"
        end tell
    end tell
    

    然后用户只需按下Enter,命令echo hi就会执行。

    【讨论】:

    • 是的,这正是我要找的。但这对我不起作用。它打开终端,但命令“echo hi”不存在。
    • 我添加了延迟,让终端有机会启动...请重试。
    • 也许问题出在我运行它的方式上?我将此脚本粘贴到脚本编辑器中,然后运行它。终端已启动,但命令“echo hi”写在脚本编辑器的脚本末尾而不是终端...
    • 尝试将延迟增加到 5,只是为了检查是否是这样。
    • 我查过了。在调用击键命令之前,我确保终端已经启动并运行。
    【解决方案2】:

    很难理解你的意思。

    例如,您不能让终端等待用户单击其窗口。

    (但您可以在终端窗口打开后轮询按键。)

    为了让用户有意识地进入终端,你必须在你的代码之前使用一个对话框。

    display dialog "Press ok to enter the terminal" buttons {"Cancel","Enter"} cancel button 1 default button 2
    

    除此之外,您需要使用系统事件将击键发送到终端的方式

    tell application "System Events"
       tell application  process "Terminal"
           keystroke "abcd"
       end tell
    

    说完

    您可以使用以下命令轮询终端执行脚本命令中的按键:

    read -n 1 -s MYCHAR </dev/tty
    

    这将强制用户在执行脚本中按回车键

     a=`read`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2011-11-30
      • 2011-08-08
      • 1970-01-01
      相关资源
      最近更新 更多