从shell脚本(Unix)closuresterminal窗口?

有没有办法从一个shell脚本中closuresterminal窗口? 我有一个.command文件,一旦完成就应该避开它。

使用exit 0将干净地终止脚本。

terminal窗口是否保持打开状态是用户可configuration的。 默认是始终保持打开状态。 要改变这个:

 Terminal.app > Preferences > Profiles > Shell - "When the shell exists:" > Close if the shell exited cleanly - "Ask before closing:" (•) Never -- OR -- (•) Only if there are.... 

当使用“如果shell完全退出时closures”,如果退出结果是0,那么脚本将closures窗口,如果没有出错,这是默认的。

既然你不想删除所有的terminal窗口,首先把你的窗口名称从“terminal”更改为其他的:

echo -n -e“\ 033] 0;我的窗口名称\ 007”

然后在脚本结尾处使用:

osascript -e'告诉应用程序“terminal”closures(每个窗口的名称包含“我的窗口名称”)'

你可以使用apple script 退出 terminal app 。 将以下内容添加到脚本中 –

 osascript -e 'tell application "Terminal" to quit' 

这会给你一个popup确认closures应用程序。 您可以在terminal首选项中禁用此function。

或者,您也可以使用killall命令来退出应用程序。 下面的工作也是一样的。

 killall Terminal 

注意:

正如一个侧面说明,你可以自由地添加上述命令到你的脚本,它会工作,只要你想。 但是,有几个警告。 首先你会限制你的脚本在不同的盒子上工作的能力。 其次 ,使用nohup会更安全一些,所以当前运行的任何命令都不会因为Terminal app退出而退出。

这适用于我:

 #!/bin/sh {your script here} osascript -e 'tell application "Terminal" to close (every window whose name contains ".command")' & exit 

这将closures只是你的窗口打开一个.command文件,但留下的东西已经运行在其他terminal窗口。 我知道,我几乎总是有sass或grunt看东西,所以我不想完全退出terminal。

 closeWindow() { /usr/bin/osascript << _OSACLOSE_ tell application "Terminal" close (every window whose name contains "YourScriptName") end tell delay 0.3 tell application "System Events" to click UI element "Close" of sheet 1 of window 1 of application process "Terminal" _OSACLOSE_ } 

这将closures您的脚本的terminal窗口,并保持任何其他terminal窗口打开,只要他们的窗口标题不匹配。 为了工作,terminal将不得不被添加到允许使用辅助function框架的应用程序列表中。 您也可以使用重复命令在terminal窗口中循环,并closures包含表单1上的UI元素“closures”的每个窗口x。

我发现最好的解决scheme是使用Automator创build一个真正的OSX应用程序,它将以相同的方式工作,而不pipe你的系统是如何configuration的。 你可以让Automator运行你的shell脚本,或者你可以在Automator中embeddedshell脚本本身。

这是你如何做到的:

  1. 运行Automator(在应用程序中)。
  2. select“新build文档”,当询问“为文档select文档”时,select“应用程序”
  3. 在左侧面板中,select“实用工具”,然后select“运行Shell脚本”。
  4. 在右侧面板的工作stream程项目中input您的脚本命令。 你可以调用另一个shell脚本,或者直接把你的命令放在他们的脚本中。
  5. 保存应用程序,这将是一个完整的Mac应用程序。 你甚至可以剪切和粘贴来自其他应用程序的图标,给你的脚本一些个性。