Sim*_*nek 58
使用exit 0
将干净地终止脚本.
终端窗口是否保持打开是用户可配置的.默认设置是始终保持打开状态.要改变这个:
Terminal.app > Preferences > Profiles > Shell
- "When the shell exists:"
> Close if the shell exited cleanly
- "Ask before closing:"
(•) Never
-- OR --
(•) Only if there are....
Run Code Online (Sandbox Code Playgroud)
当使用"关闭如果shell干净地退出"时,如果退出结果为0,脚本将关闭窗口,如果没有出错则这是默认值.
小智 23
由于您不想删除所有终端窗口,因此首先将窗口名称从"终端"更改为其他窗口:
echo -n -e"\ 033] 0;我的窗口名称\ 007"
然后在脚本的末尾,使用:
osascript -e'告诉应用程序"终端"关闭(每个名称中包含"我的窗口名称"的窗口)'&
jay*_*ngh 15
您可以使用apple script
到退出的terminal app
.将以下内容添加到您的脚本中 -
osascript -e 'tell application "Terminal" to quit'
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个确认关闭应用程序的弹出窗口.您可以在终端首选项中禁用此功能.
或者,您也可以使用killall
命令退出应用程序.以下也适用.
killall Terminal
Run Code Online (Sandbox Code Playgroud)
正如旁注,您可以自由地将上述命令添加到您的脚本中,它可以按您的需要工作.但是,有一些警告.首先,您将限制脚本在不同框中工作的能力.其次,使用它会更安全,nohup
因此当前运行的任何命令都不会因为退出而退出Terminal app
.
Arr*_*ron 10
这对我有用:
#!/bin/sh
{your script here}
osascript -e 'tell application "Terminal" to close (every window whose name contains ".command")' &
exit
Run Code Online (Sandbox Code Playgroud)
这将仅用于关闭使用.command文件打开的窗口,但保留已在其他终端窗口中运行的内容.我知道我几乎总是有sass或grunt看东西,所以我不想完全退出终端.
小智 7
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_
}
Run Code Online (Sandbox Code Playgroud)
这将关闭脚本的终端窗口,并在其窗口标题不匹配时保持其他任何终端窗口打开.要使其工作,必须将终端添加到允许使用Accessibility框架的应用程序列表中.您还可以使用repeat命令在终端窗口中循环,并关闭包含表单1上的UI元素"关闭"的每个窗口x.
我发现最好的解决方案是使用Automator创建一个真正的OSX应用程序,无论系统如何配置,该应用程序都将以相同的方式工作。您可以让Automator运行您的Shell脚本,也可以将Shell脚本本身嵌入Automator中。
这是您的操作方式:
归档时间: |
|
查看次数: |
75507 次 |
最近记录: |