【问题标题】:Open multiple terminal windows mac using bash script使用 bash 脚本打开多个终端窗口 mac
【发布时间】:2018-02-02 21:38:34
【问题描述】:
#!/bin/bash
#!/usr/bin/python

read -p "Execute script:(y/n) " response
if [ "$response" = "y" ]; then
    echo -e "\n\nLoading....\n\n"

    for ((x = 0; x<5; x++))
    do
        echo -e "Open $x terminal\n\n"
        open -a Terminal.app
    done
fi

这只会打开一个新的终端窗口。如何打开 10 个新的终端窗口?

【问题讨论】:

  • 我认为每个文件只能有一个 shebang (#!),因此您的 #!/usr/bin/python 是不必要/被忽略的。

标签: linux bash macos shell unix


【解决方案1】:

如果您想从 bash 脚本(或从命令行)打开 10 个新的终端窗口,请使用以下命令:

osascript -e 'tell application "Terminal"' -e 'repeat 10 times' -e 'do script ""' -e 'end repeat' -e 'end tell'

或集成到您现有的代码中,尽管重新编码:

#!/bin/bash

shopt -s nocasematch
read -p " Execute script? (y/n): " response
if [[ $response == y ]]; then
    printf " Loading....\\n"
    for ((x = 0; x<10; x++)); do
        printf " Open %s Terminal\\n" $x
        osascript -e 'tell application "Terminal" to do script ""' >/dev/null
    done
fi
shopt -u nocasematch

它的输出是:

$ ./codetest
 Execute script? (y/n): y
 Loading....
 Open 0 Terminal
 Open 1 Terminal
 Open 2 Terminal
 Open 3 Terminal
 Open 4 Terminal
 Open 5 Terminal
 Open 6 Terminal
 Open 7 Terminal
 Open 8 Terminal
 Open 9 Terminal
$ 

显示 10 个新的终端窗口,假设您尚未设置在选项卡中打开新窗口。

【讨论】:

  • 或者,更接近相关代码的集成:for ((x=0; x&lt;5; x++)) ; do osascript -e 'tell application "Terminal" to do script "" ' ; done
  • @Asmus,发帖时没有看到你的评论,现在才看到,因为有人对答案投了赞成票;但是,OP 说“我怎样才能打开 10 个新的终端窗口?”以及为什么我在他的代码中使用x&lt;10 而不是1x&lt;5,所以使用1x&lt;5 或集成更紧密不是OP 想要的。 10 是我们想要的。
【解决方案2】:

你需要给 open 命令加上 -n 选项

-n 打开应用程序的一个新实例,即使一个已经在运行。

for ((x = 0; x<5; x++)) do
    echo -e "Open $x terminal\n\n"
    open -na Terminal.app
done

【讨论】:

  • open -an Terminal.app 给出“找不到文件”错误
  • 对不起,我混淆了选项顺序。应该先是 n 然后是 a
  • 请注意,这会打开 Terminal.app 的其他 instances,而不是一个应用程序中的其他 windows。我认为后者应该是首选。
猜你喜欢
  • 1970-01-01
  • 2021-10-05
  • 2010-11-12
  • 2022-12-11
  • 2012-04-24
  • 2014-07-20
  • 1970-01-01
  • 2021-08-11
  • 2020-08-15
相关资源
最近更新 更多