是否有任何系统库可以让我从ruby打开终端组(作为标签而不是多个窗口)?我不想使用exec()方法打开终端应用程序......例如,我在我的环境中运行了大约5个不同的终端(mongodb,redis,daemons等),我想编写一个脚本将打开该组窗口并执行命令以启动所有这些进程。有任何想法吗?我想我可能只能用Objective-C或MacRuby来做。
答案 0 :(得分:4)
就个人而言,我会说忘掉Ruby,只需要脚本tmux:
http://onethingwell.org/post/455644179/tmux
上述帖子中的示例:
#!/bin/sh
tmux new-session -d -s main
tmux new-window -t main:1 alpine
tmux rename-window -t main:1 mail
tmux new-window -t main:2 'newsbeuter -r'
tmux rename-window -t main:2 news
tmux select-window -t main:0
tmux attach -t main
答案 1 :(得分:4)
terminitor gem确实完全你想要的东西,它在幕后使用rb-appscript。
答案 2 :(得分:1)
如果你去 终端 - >偏好 - >设置标签 - > “+”(创建新设置), 将设置命名为“mongo”, 单击窗格中的“Shell”菜单项, 选中“Startup”复选框并输入shell命令以启动和/或监视日志 设置其他选择品尝 转到Gear菜单项(+, - ,默认旁边),选择“导出” 在您的仓库中另存为“mongo.terminal”文件。
要在您已经在终端中打开,请键入 打开mongo.terminal (根据需要插入适当的路径)
现在这里是踢球者:您可以进入“窗口组”选项卡并在一个项目名称下收集专用终端配置,将该窗口组导出到.terminal文件,并通过打开它们将它们全部一起启动。
OSX有一个名为“open”的命令,它将打开与给定文件关联的主应用程序,就像用户单击其桌面图标一样。这也适用于 .terminal文件。还有其他方法,如果有人将关联更改为“ .terminal”文件,它可能会被劫持,但这不太可能并且相当容易检测(您的终端无法启动)。
您可以通过这种方式从终端用户界面更轻松地选择颜色/背景/字体等,并将它们放入回购中以便共享和重用。
导出的* .terminal文件是XML格式的plist文档。大多数重要数据字段看起来都是base64编码的,所以不是很容易编辑,但如果你知道自己在做什么,可以改变一些事情。
答案 3 :(得分:0)
我使用screen进行了类似的设置。您需要使用要运行的命令编写一个非常简单的.screenrc,以及一些用于创建和拆分窗口的特定屏幕命令。
答案 4 :(得分:0)
Elscripto是一个gem,允许您自动打开运行预先指定脚本的终端选项卡:https://github.com/Achillefs/elscripto
答案 5 :(得分:0)
class Terminal
def self.runInNewWindow(command)
`osascript -e 'tell app "Terminal"
do script "#{command}"
end tell'`
end
end
class File
def self.create(filename, text)
fo = File.open(filename, "w+")
File.chmod(0777, filename)
fo.puts text
fo.close
end
end
filename = "file"
#closeWindowCommand = "osascript -e 'tell app \"Terminal\" to close first window' & exit"
removeFileCommand = "rm #{filename}"
command = "#{RUBY_VERSION}"
path = File.expand_path('../', __FILE__)
File.create(filename, "echo #{command}; #{removeFileCommand}")
Terminal.runInNewWindow("cd #{path}; ./#{filename}")
文件“run.rb”
class Terminal
def self.runInNewWindow(command)
`osascript -e 'tell app "Terminal"
do script "#{command}"
end tell'`
end
end
class File
def self.create(filename, text)
fo = File.open(filename, "w+")
File.chmod(0777, filename)
fo.puts text
fo.close
end
end
filename = "file"
#closeWindowCommand = "osascript -e 'tell app \"Terminal\" to close first window' & exit"
removeFileCommand = "rm #{filename}"
command = "#{RUBY_VERSION}"
path = File.expand_path('../', __FILE__)
File.create(filename, "echo #{command}; #{removeFileCommand}")
Terminal.runInNewWindow("cd #{path}; ./#{filename}")
文件“运行”
cd "$(dirname "$0")"
ruby run.rb
执行示例
打开文件运行