微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

osascript 打开termainal新页

How to programmatically open a new terminal tab or window

I stumbled across this while trying to calculate some configuration options and open multiple terminal windows at once to run multiple Node services.

There are two ways to programmatically open a new terminal window or tab on a mac, depending on whether or not you use iTerm or the default Terminal program. I’ll share both, with a brief explanation on how it works.

 

Open a new window in iTerm2

osascript -e "
      tell application \"iTerm2\"
        set newWindow to (create window with default profile)
        tell current session of newWindow
            write text \"env \"
        end tell
      end tell
    "
Bash

Open a new tab in iTerm2

osascript -e "
      tell application \"iTerm2\"
        set newTab to (create tab with default profile)
        tell current session of newTab
            write text \"env \"
        end tell
      end tell
    "
Bash

Open a new window in Terminal

osascript -e "
      tell application \"Terminal\"
        activate
        tell application \"System Events\" to keystroke \"t\" using command down
        repeat while contents of selected tab of window 1 starts with lineFeed
          delay 0.01
        end repeat
        do script \"env\" in window 1
      end tell
    "
Bash

`osascript` is a command to run AppleScript. They can be enclosed in a string or in a file. The `-e` flag tells it that you are passing a command as a string. The weird rules with shell string escaping make it a little challenging to do anything too complicated with this passed in command. There are many more options you can explore with `man osascript`.

Pass arguments to AppleScript file

One final interesting tip. You can save avoid the quote mess with the `-e` flag by saving your AppleScript in a separate file and passing in an argument:

osascript pathToYourScript.scpt myargument
Bash

Then in the AppleScript file itself you can access the arguments with a `item 1 of argv` Syntax like so:

on run argv
    tell application "Terminal"
        do script "./myscanprogram " & (item 1 of argv) & " 2>&1"
    end tell
end run
Bash

I don’t kNow a whole lot about AppleScript but have heard it can automate just about anything related to your mac. Perhaps I’ll dedicate a future blog post to some interesting use for this.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐