2016-10-02 37 views
0

我經常打開大量終端窗口,每個窗口都有一個ssh會話。爲了簡化這個過程,我有一系列看起來像這樣的shell腳本:如何在運行MacOS shel/Applescript腳本時避免殭屍窗口

#!/bin/sh 
osascript <<EOS 
tell application "Terminal" 
    activate 
    do script "set_background_color salmon; ssh [email protected]" 
end tell 
EOS 

This works。我可以從shell提示符執行腳本,或者在Finder窗口中單擊它。 (要做到這一點的文件名後綴爲.command,而不是.SH

的問題是,當我從Finder中執行它,我結束了一個死的窗口(「過程已完成」)的背後我打算打開的窗口。有什麼方法可以擺脫它,或者沒有辦法擺脫它呢?

UPDATE:

出現提供確認/審查這other question結果對話框中的解決方案/取消選項。這是不可取的。

+0

可能的重複[如何讓Mac「.command」文件在運行shell腳本後自動退出?](http://stackoverflow.com/questions/2565944/how-do-i-get-a -mac-command-file-to-automatically-quit-after-running-a-shell -s) –

+0

@ AlexanderO'Mara另一個問題的解決方案對我無效。我嘗試的每個變體都會彈出一個對話框,以確認關閉此窗口或其他窗口。 – AlanObject

回答

1

當您雙擊一個.command文件時,該文件被傳遞給終端,終端會創建一個窗口並執行其中的命令。 .command文件中的命令使用AppleScript來告訴終端在另一個窗口中運行命令。

爲什麼不刪除中間人,只是把你想運行的最終命令 - set_background_color salmon; ssh [email protected] - 在.command文件中?通過運行AppleScript來刪除這些東西。換句話說,你的.command文件的內容應該僅僅是:

set_background_color salmon 
ssh [email protected] 

或者,你可以從你的.command文件(<<EOSEOS之間的部分)採取的AppleScript,把它變成腳本Editor.app ,並將其保存爲一個小程序。

+0

您的答案效果不錯(簡單就好了!),這是我現在要使用的。我試圖使用Applescript的原因是,我想最終打開窗口編程 - 只需點擊一下打開一整套類似於「打開窗口組」的菜單選項,除了已經建立的連接。這可以稍後等待。 – AlanObject