কমান্ড লাইন থেকে একটি নতুন টার্মিনাল খোলার, এবং সেই নতুন টার্মিনালে (একটি ম্যাকে) কমান্ড চালানোর কোনও উপায় আছে?
যেমন, কিছু:
Terminal -e ls
যেখানে ls
নতুন টার্মিনালে চালিত হয়।
কমান্ড লাইন থেকে একটি নতুন টার্মিনাল খোলার, এবং সেই নতুন টার্মিনালে (একটি ম্যাকে) কমান্ড চালানোর কোনও উপায় আছে?
যেমন, কিছু:
Terminal -e ls
যেখানে ls
নতুন টার্মিনালে চালিত হয়।
উত্তর:
osascript -e 'tell app "Terminal"
do script "echo hello"
end tell'
এটি একটি নতুন টার্মিনাল খোলে এবং এর ভিতরে "ইকো হ্যালো" কমান্ডটি কার্যকর করে।
osascript -e 'tell app "Terminal" to do script "echo hello"'
"$@"
শস লাইনের পাশাপাশি ওসায় স্ক্রিপ্টের লাইন ধরে যুক্তি দিয়ে যাব ?
আপনি এটি চারিদিক থেকে করতে পারেন:
% cat /tmp/hello.command
#! /bin/sh -
say hello
% chmod +x /tmp/hello.command
% open /tmp/hello.command
এক্সটেনশন থাকা শেল স্ক্রিপ্টগুলি .command
এবং যা এক্সিকিউটেবল হয়, একটি নতুন টার্মিনাল উইন্ডোর অভ্যন্তরে চালনার জন্য ডাবল ক্লিক করা যেতে পারে। open
আপনি সম্ভবত জানেন যে কমান্ডটি ফাইন্ডার অবজেক্টে ডাবল ক্লিক করার সমতুল্য, সুতরাং এই পদ্ধতিটি একটি নতুন টার্মিনাল উইন্ডোতে স্ক্রিপ্টের কমান্ডগুলি চালিয়ে শেষ হয়।
কিছুটা বাঁকানো, তবে এটি কাজ করে বলে মনে হচ্ছে। আমি নিশ্চিত যে এটির আরও একটি সরাসরি রুট অবশ্যই থাকতে হবে (এটি আসলে আপনি কী করার চেষ্টা করছেন?) তবে এখনই তা আমার থেকে পালিয়ে যায়।
#!/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
কমান্ড চালানোর জন্য চালাতে পারি ।
এটি কমপক্ষে মাউন্টেন সিংহের অধীনে কাজ করে। এটি প্রতিবার একটি ইন্টারেক্টিভ শেলকে আরম্ভ করে, যদিও আপনি "ম্যাকটার্ম এক্সিকিউট ইয়োর আপনার কমান্ড " হিসাবে আখ্যায়িত করে সত্য-সত্যটিকে প্রতিস্থাপন করতে পারেন । এটি আপনার হোম ডিরেক্টরিতে বিন / ম্যাকটারেমে সঞ্চয় করুন এবং 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
আমি অ্যাপলস্ক্রিপ্ট দিয়ে এটি করব। আপনি ওসাস্ক্রিপ্ট কমান্ডটি ব্যবহার করে এটি প্রবাহিত করতে পারেন। আপনার স্ক্রিপ্ট কিছু হবে:
tell application "Terminal"
activate
tell application "System Events"
keystroke "t" using {command down}
end tell
end tell
আপনি যদি কেবলমাত্র এটি টার্মিনালে অ্যাক্সেস করতে চলেছেন তবে আপনি মাঝের টেল স্টেটমেন্ট বাদে সমস্ত বাদ দিতে পারেন। আপনি যদি নতুন ট্যাবের পরিবর্তে একটি নতুন উইন্ডো চান তবে টি কীস্ট্রোকটি n এর সাথে প্রতিস্থাপন করুন।
কমান্ড-লাইন আর্গুমেন্টগুলি কীভাবে পেতে হয় এবং তা নতুন উইন্ডোতে পুনরায় টাইপ করা যায় তা জানার জন্য আমি অভিজ্ঞ অভিজ্ঞ অ্যাপলস্প্রিপ্টার নই তবে আমি নিশ্চিত যে এটি সম্ভব এবং খুব বেশি কঠিন নয়।
এছাড়াও, আমি মনে করি এটি কাজ করে এবং আমি এখনই পরীক্ষা করতে পারছি না, তবে আমি নিশ্চিত যে আপনি #! / Usr / bin / osascript -e তে কিছু বৈকল্পিকের সাহায্যে শেল স্ক্রিপ্ট শুরু করতে পারেন এবং তারপরে এটি সম্পাদনযোগ্য হিসাবে সংরক্ষণ করতে পারেন যাইহোক তুমি চাও. যা অন্তত আমার মাথায়, আপনার পক্ষে $ runinnewterm ls / অ্যাপ্লিকেশন এর মতো কিছু টাইপ করা সম্ভব করে তোলে