কমান্ড লাইন থেকে একটি নতুন টার্মিনাল খোলা এবং ম্যাক ওএস এক্স-এ একটি কমান্ড চালাচ্ছি?


24

কমান্ড লাইন থেকে একটি নতুন টার্মিনাল খোলার, এবং সেই নতুন টার্মিনালে (একটি ম্যাকে) কমান্ড চালানোর কোনও উপায় আছে?

যেমন, কিছু:

Terminal -e ls

যেখানে lsনতুন টার্মিনালে চালিত হয়।


আমি 1 টি কমান্ড ব্যবহার করে একটি নতুন টার্মিনালে রেল সার্ভারে রুবি কীভাবে চালাতে পারি তা বোঝার চেষ্টা করছি।
অগস্ট

এটিকে যুক্তিসঙ্গত মনে হচ্ছে - আমি আপনাকে এনেছি যে আপনি চান যে খোলা টার্মিনালে স্টাডাউট প্রদর্শিত হবে। সেক্ষেত্রে হ্যাঁ, আপনি একটি শেল স্ক্রিপ্ট লিখতে চান যা আপনার পছন্দ মতো কাজ করে এবং তার এক্সটেনশানটি। কম্যান্ডে, নীচে হিসাবে পরিবর্তন করতে পারেন।
নরম্যান গ্রে

উত্তর:


24
osascript -e 'tell app "Terminal"
    do script "echo hello"
end tell'

এটি একটি নতুন টার্মিনাল খোলে এবং এর ভিতরে "ইকো হ্যালো" কমান্ডটি কার্যকর করে।


আমি নিশ্চিত যে এটি আপেলস্ক্রিপ্ট বিশেষজ্ঞের কাছে সুস্পষ্ট তবে কোনও প্রোগ্রাম চালু করার একটি উদাহরণ সম্পর্কে কীভাবে? মূলত আমি 'xterm -e somecomnand' করতে পারি
gman

3
এটি সামান্য সংক্ষিপ্ত হতে পারে:osascript -e 'tell app "Terminal" to do script "echo hello"'
জোমালার

1
নতুন টার্মিনাল উইন্ডো শীর্ষ সক্রিয় সেট কিভাবে?
জেনকামেন

এবং আমি কীভাবে "$@"শস লাইনের পাশাপাশি ওসায় স্ক্রিপ্টের লাইন ধরে যুক্তি দিয়ে যাব ?
rednoah

3

আপনি এটি চারিদিক থেকে করতে পারেন:

% cat /tmp/hello.command
#! /bin/sh -
say hello
% chmod +x /tmp/hello.command
% open /tmp/hello.command

এক্সটেনশন থাকা শেল স্ক্রিপ্টগুলি .commandএবং যা এক্সিকিউটেবল হয়, একটি নতুন টার্মিনাল উইন্ডোর অভ্যন্তরে চালনার জন্য ডাবল ক্লিক করা যেতে পারে। openআপনি সম্ভবত জানেন যে কমান্ডটি ফাইন্ডার অবজেক্টে ডাবল ক্লিক করার সমতুল্য, সুতরাং এই পদ্ধতিটি একটি নতুন টার্মিনাল উইন্ডোতে স্ক্রিপ্টের কমান্ডগুলি চালিয়ে শেষ হয়।

কিছুটা বাঁকানো, তবে এটি কাজ করে বলে মনে হচ্ছে। আমি নিশ্চিত যে এটির আরও একটি সরাসরি রুট অবশ্যই থাকতে হবে (এটি আসলে আপনি কী করার চেষ্টা করছেন?) তবে এখনই তা আমার থেকে পালিয়ে যায়।


আমি এটি চেষ্টা করেছিলাম এবং একটি নতুন টার্মিনাল খোলে, তবে তারপরে আমি পেয়ে যাব: থেকে প্রস্থান; লগআউট [প্রক্রিয়া শেষ হয়েছে] এটি আমার হ্যালো ডট কম: স্ক্রিপ্টস $ বিড়াল হ্যালো ডট কম! / বিন / শ - হ্যালো বলুন

হ্যাঁ, এটি সঠিকভাবে ফর্ম্যাট হয়নি, তবে আমি মনে করি আপনি ধারণাটি পেয়ে গেছেন।
অগস্ট

@ জ্লগ: তবে এটি 'হ্যালো' বলেছে, হ্যাঁ? টার্মিনাল.এপ এর পছন্দসমূহে, এর মধ্যে 'সেটিংস' এবং 'শেল' ট্যাবটি দেখুন। 'শেলটি যখন প্রস্থান করবে:' আপনি একটি মেনু দেখতে পাবেন। আমি মনে করি ডিফল্টটি হ'ল উইন্ডোটি বন্ধ করবেন না, এবং এটিই আপনি দেখছেন। আপনি যদি 'শেলটি পরিষ্কারভাবে বন্ধ হয়ে যায় তবে এটি বন্ধ করুন' এ পরিবর্তন করেন, শেল স্ক্রিপ্ট শেষ হয়ে গেলে টার্মিনাল উইন্ডোটি অদৃশ্য হয়ে যাবে।
নরম্যান গ্রে

আমি কি এর অধিবেশনটি খোলা রাখার এবং লগ আউট না করার আদেশ দিতে পারি?
রয়ী

2
#!/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কমান্ড চালানোর জন্য চালাতে পারি ।


2

এটি কমপক্ষে মাউন্টেন সিংহের অধীনে কাজ করে। এটি প্রতিবার একটি ইন্টারেক্টিভ শেলকে আরম্ভ করে, যদিও আপনি "ম্যাকটার্ম এক্সিকিউট ইয়োর আপনার কমান্ড " হিসাবে আখ্যায়িত করে সত্য-সত্যটিকে প্রতিস্থাপন করতে পারেন । এটি আপনার হোম ডিরেক্টরিতে বিন / ম্যাকটারেমে সঞ্চয় করুন এবং ch + a + x বিন / ম্যাকটারেম:

#!/usr/bin/osascript

on run argv
   tell app "Terminal" 
   set AppleScript's text item delimiters to " "
        do script argv as string
        end tell   
end run 

0

আমি অ্যাপলস্ক্রিপ্ট দিয়ে এটি করব। আপনি ওসাস্ক্রিপ্ট কমান্ডটি ব্যবহার করে এটি প্রবাহিত করতে পারেন। আপনার স্ক্রিপ্ট কিছু হবে:

tell application "Terminal"
  activate
  tell application "System Events"
    keystroke "t" using {command down}
  end tell
end tell

আপনি যদি কেবলমাত্র এটি টার্মিনালে অ্যাক্সেস করতে চলেছেন তবে আপনি মাঝের টেল স্টেটমেন্ট বাদে সমস্ত বাদ দিতে পারেন। আপনি যদি নতুন ট্যাবের পরিবর্তে একটি নতুন উইন্ডো চান তবে টি কীস্ট্রোকটি n এর সাথে প্রতিস্থাপন করুন।

কমান্ড-লাইন আর্গুমেন্টগুলি কীভাবে পেতে হয় এবং তা নতুন উইন্ডোতে পুনরায় টাইপ করা যায় তা জানার জন্য আমি অভিজ্ঞ অভিজ্ঞ অ্যাপলস্প্রিপ্টার নই তবে আমি নিশ্চিত যে এটি সম্ভব এবং খুব বেশি কঠিন নয়।

এছাড়াও, আমি মনে করি এটি কাজ করে এবং আমি এখনই পরীক্ষা করতে পারছি না, তবে আমি নিশ্চিত যে আপনি #! / Usr / bin / osascript -e তে কিছু বৈকল্পিকের সাহায্যে শেল স্ক্রিপ্ট শুরু করতে পারেন এবং তারপরে এটি সম্পাদনযোগ্য হিসাবে সংরক্ষণ করতে পারেন যাইহোক তুমি চাও. যা অন্তত আমার মাথায়, আপনার পক্ষে $ runinnewterm ls / অ্যাপ্লিকেশন এর মতো কিছু টাইপ করা সম্ভব করে তোলে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.