Mac os下,通過shell腳本編程,怎麼樣才能把一段命令拋到另一個終端中運行呢?

不是後臺執行(),而是新開一個終端窗口然後執行代碼。這樣做的原因是每次運行mongodb需要mongod --path ...,然後再開另一個窗口打開redis:cd .....; ./redis-server,感覺非常麻煩,希望把這些命令寫到一個腳本中直接執行。

求大神支教= =


把要用的shell腳本寫在test.sh中

然後在終端執行命令open -a Terminal.app test.sh,shell腳本就會運行在新開的Terminal終端

MAC OX的話用這個命令就可以達到目的了,親測有效!更多參數可以用-h來查看


#!/usr/bin/env bash

somewhere=...
someplace=...

mongod --path ${somewhere}

osascript -e tell app "Terminal"
do script "redis:cd ${someplace}; ./redis-server"
end tell

這樣?


http://stackoverflow.com/questions/19440007/mac-gnome-terminal-equivalent-for-shell-script

tell application "Terminal"
activate
tell application "System Events" to keystroke "t" using command down
repeat while contents of selected tab of window 1 starts with linefeed
delay 0.01
end repeat
do script "yourscript.sh" in window 1
end tell


macOS終端的可執行文件在/Applications/Utilities/Terminal.app/Content/MacOS/Terminal 所以你可以試試後臺執行這個並傳入參數。

另外一種方法是使用Apple Script,終端應該會提供一些介面運行命令。


如果不需要實時查看輸出日誌的話, 類似於working with tile window manager這種的,用 nohup command

Linux 技巧:讓進程在後臺可靠運行的幾種方法
我想,你想做的是打開另一個窗口。舉個例子,如果你在用 GNOME,那麼就是執行:

gnome-terminal

具體怎麼傳參,還要找 man 問問。


謝邀。我對shell編程研究的不多,好吧,我承認基本上不寫sh文件。我的記憶中,bash原生應該幹不了這事,第三方的程序不瞭解不知道。但是Zsh的Oh my zsh裡面應該有Mac的插件,比如可以當前路徑打開Finder什麼的,我估計那邊應該有相關的API,你可以去研究一下。


推薦閱讀:
相關文章