shell MacOS脚本打开多个标签终端

disho6za  于 2023-05-18  发布在  Shell
关注(0)|答案(1)|浏览(301)

我需要创建一个小的macos脚本文件,将自动打开一个终端与3标签。每个选项卡都应该指向不同的位置,然后运行特定的命令,之后不会结束该过程。
举个例子,假设我想打开一个终端窗口,其中有3个选项卡指向Downloads、Desktop和Documents文件夹。他们中的每个人都将执行ls命令,然后等待进一步的命令。

知道怎么做吗

jfgube3f

jfgube3f1#

这可能是一个古老的问题,但它仍然有效。要回答您的具体问题,请在Mac上的多个终端选项卡中执行命令;您可以使用AppleScript自动化Mac的UI。下面我写了一个封装AppleScript的Bash脚本示例,用于向终端发送命令:

#!/usr/bin/env bash

DIR_NAME="$1"
COMMAND="$2"

osascript << EOF
tell application "Terminal"
    activate
end tell
tell application "System Events"
    keystroke "t" using command down
    set textToType to "cd ${DIR_NAME} && ${COMMAND}\n"
    keystroke textToType
end tell
EOF

它使用两个参数,DIR_NAME(要在其中执行的文件夹)和要作为第二个参数运行的COMMAND。
您可以将此脚本保存到桌面,将其标记为可执行(chmod +x ~/Desktop/open_new_tabs.sh),然后从终端的命令行执行此脚本。
要打开多个选项卡,请循环执行脚本。在这个例子中,我有一个文件夹列表,我希望运行命令,保存在一个文本文件中:

% cat ~/Desktop/list_of_dirs.txt
/tmp
/Applications
/
% for i in $(cat ~/Desktop/list_of_dirs.txt); do
  ~/Desktop/open_new_tabs.sh $i ls
done

Mac OS安全注意事项:第一次运行此操作时,系统会提示您终端是否有权控制系统事件。如果您没有看到提示,您可以将终端添加到允许的应用:系统偏好设置>安全和隐私>辅助功能>隐私。确保在终端旁边有一个检查。

两种选择:
1.请使用iTerm 2:打开所有选项卡,并将cd放入您想要运行命令的每个目录中。然后使用File > Broadcast将您的键击发送到所有选项卡。
1.多个终端窗口的替代方案是使用多个screen窗口。这也适用于跨平台,这很好。

相关问题