Можно сделать это окольным способом:
% cat /tmp/hello.command
#! /bin/sh -
say hello
% chmod +x /tmp/hello.command
% open /tmp/hello.command
Сценарии оболочки, которые имеют расширение .command
и на том, которые являются исполняемым файлом, можно дважды щелкнуть работать в новом Окне терминала. Команда open
, как Вы, вероятно, знаете, эквивалентно двойному щелчку по объекту Finder, таким образом, эта процедура заканчивает тем, что выполнила команды в сценарии в новом Окне терминала.
Немного скрученный, но это, действительно кажется, работает. Я чувствую уверенность, что должен быть более прямой маршрут к этому (что это, Вы на самом деле пытаетесь сделать?), но это выходит из меня прямо сейчас.
#!/usr/bin/env ruby1.9
require 'shellwords'
require 'appscript'
class Terminal
include Appscript
attr_reader :terminal, :current_window
def initialize
@terminal = app('Terminal')
@current_window = terminal.windows.first
yield self
end
def tab(dir, command = nil)
app('System Events').application_processes['Terminal.app'].keystroke('t', :using => :command_down)
cd_and_run dir, command
end
def cd_and_run(dir, command = nil)
run "clear; cd #{dir.shellescape}"
run command
end
def run(command)
command = command.shelljoin if command.is_a?(Array)
if command && !command.empty?
terminal.do_script(command, :in => current_window.tabs.last)
end
end
end
Terminal.new do |t|
t.tab Dir.pwd, ARGV.length == 1 ? ARGV.first : ARGV
end
Вам нужны рубиновые 1.9, или необходимо будет добавить строку require 'rubygems'
перед другими требует, и не забывайте устанавливать gem rb-appscript
.
Я назвал этот сценарий dt
(копируйте вкладку), таким образом, я могу просто работать dt
открыть вкладку в той же папке или dt ls
также работать туда ls
команда.
Я сделал бы это с AppleScript. Можно оптимизировать его при помощи команды osascript. Ваш сценарий был бы чем-то как:
tell application "Terminal"
activate
tell application "System Events"
keystroke "t" using {command down}
end tell
end tell
Если Вы только идете в, когда-либо получают доступ к нему в терминале, то можно опустить, все кроме середины говорят оператор. Если Вы хотите новое окно вместо новой вкладки, заменяете нажатие клавиши t n.
Я не достаточно опытный AppleScripter, чтобы знать, как получить параметры командной строки и затем перепечатать их в новом окне, но я уверен, что это возможно и не слишком трудно.
Кроме того, я думаю, что это работает, и я не могу протестировать прямо сейчас, но я вполне уверен, можно запустить сценарий оболочки с некоторого варианта на #!/usr/bin/osascript-e и затем сохранить его как исполняемый файл однако, Вы хотите. Который, по крайней мере, в моей голове, позволил бы Вам ввести что-то как $ runinnewterm ls / Приложения