我需要创建一个小的macos脚本文件,将自动打开一个终端与3标签。每个选项卡都应该指向不同的位置,然后运行特定的命令,之后不会结束该过程。举个例子,假设我想打开一个终端窗口,其中有3个选项卡指向Downloads、Desktop和Documents文件夹。他们中的每个人都将执行ls命令,然后等待进一步的命令。
ls
知道怎么做吗
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),然后从终端的命令行执行此脚本。要打开多个选项卡,请循环执行脚本。在这个例子中,我有一个文件夹列表,我希望运行命令,保存在一个文本文件中:
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窗口。这也适用于跨平台,这很好。
screen
1条答案
按热度按时间jfgube3f1#
这可能是一个古老的问题,但它仍然有效。要回答您的具体问题,请在Mac上的多个终端选项卡中执行命令;您可以使用AppleScript自动化Mac的UI。下面我写了一个封装AppleScript的Bash脚本示例,用于向终端发送命令:
它使用两个参数,DIR_NAME(要在其中执行的文件夹)和要作为第二个参数运行的COMMAND。
您可以将此脚本保存到桌面,将其标记为可执行(
chmod +x ~/Desktop/open_new_tabs.sh
),然后从终端的命令行执行此脚本。要打开多个选项卡,请循环执行脚本。在这个例子中,我有一个文件夹列表,我希望运行命令,保存在一个文本文件中:
Mac OS安全注意事项:第一次运行此操作时,系统会提示您终端是否有权控制系统事件。如果您没有看到提示,您可以将终端添加到允许的应用:系统偏好设置>安全和隐私>辅助功能>隐私。确保在终端旁边有一个检查。
两种选择:
1.请使用iTerm 2:打开所有选项卡,并将cd放入您想要运行命令的每个目录中。然后使用File > Broadcast将您的键击发送到所有选项卡。
1.多个终端窗口的替代方案是使用多个
screen
窗口。这也适用于跨平台,这很好。