একাধিক টার্মিনাল ট্যাবগুলি খুলতে এবং সেগুলিতে কোড চালানোর জন্য আমি কীভাবে কোনও স্ক্রিপ্ট লিখতে পারি?


8

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

শেল স্ক্রিপ্ট বা অ্যাপলস্ক্রিপ্ট দিয়ে এটি করার কোনও উপায় আছে কি?

আমি এই প্রশ্নটি পেয়েছি তবে এটি কমান্ডের সাথে ট্যাবগুলি খুলতে চাইলে স্তব্ধ হয়ে যাবে বলে মনে হচ্ছে (রেলের সার্ভার চালানোর মতো)।

উত্তর:


5

এটি কিছুটা হ্যাকি তবে আপনি এটি অ্যাপলস্ক্রিপ্টে অর্জন করতে পারেন। যদি আপনি চান পূর্বনির্ধারিত সংখ্যক ট্যাব এবং প্রাইসেট কমান্ডগুলি আপনি চালনা করতে চান তবে এটি কঠিন নয়।

tell application "Terminal"
    -- Activate it.
    activate

    set targetWindow to 0

    -- Get a window that's not busy.
    -- If there are no open windows, open one.
    if count of windows is greater than 0 then
        repeat with currentWindow in windows
            if currentWindow is not busy then
                set targetWindow to currentWindow
            end if
        end repeat
    else
        do script ""
        set targetWindow to window 1
    end if

    -- Do command 1.
    set firstCommand to "cd ~/Desktop; clear"
    do script firstCommand in targetWindow

    -- Open a new tab.
    tell application "System Events" to tell process "Terminal" to keystroke "t" using command down

    if count of windows is greater than 0 then
        repeat with currentWindow in windows
            if currentWindow is not busy then
                set targetWindow to currentWindow
            end if
        end repeat
    else
        do script ""
        set targetWindow to window 1
    end if

    -- Do command 2.
    set secondCommand to "cd /Applications; clear"
    do script secondCommand in targetWindow

    -- And so on...
end tell

অবশ্যই, firstCommandআপনি যে কমান্ডটি আসলে চালাতে চান সেগুলি দিয়ে প্রতিস্থাপন করুন এবং আরও অনেক কিছু। যে কারণেই হোক না কেন, টার্মিনালটির কাছে অ্যাপলস্ক্রিপ্টের মাধ্যমে নতুন ট্যাবগুলি তৈরি করার কোনও অ্যাক্সেসযোগ্য উপায় নেই, সুতরাং মাঝখানে দীর্ঘ, হ্যাকিং লাইনটি কেবল টার্মিনালটিকে Tনতুন ট্যাবটি খোলার জন্য টাইপ করতে বলে , এবং তারপরে নতুন কমান্ড এতে কার্যকর হবে।

আপনি এই অ্যাপলস্ক্রিপ্টটি যেমনটি চালাতে পারেন বা নতুন পরিষেবা তৈরি করতে এটি অটোমেটরে ব্যবহার করতে পারেন, যা আপনি চাইলে একটি কীবোর্ড শর্টকাট ব্যবহার করে যে কোনও জায়গা থেকে কার্যকর করতে পারেন।

অতিরিক্ত - আপনি নবনির্মিত টার্মিনাল সেশনে কিছু স্ক্রিপ্ট / কমান্ড আগুনে চান, আপনি পাঠাতে পারেন এই


2

এখানে একটি শেল স্ক্রিপ্ট যা আপনি যা চান তা করবে - অ্যাপলের টার্মিনাল বা আইটার্ম উভয়ের জন্য (আমাদের উভয়ের ব্যবহারকারী রয়েছে)।

আপনি যে ট্যাবগুলি খোলেন সেগুলির জন্য এটি প্রতিটি ট্যাবে অন্য ব্যাচ ফাইল চালায়, যেমন টমক্যাটের জন্য একটি, আপনার জন্য একটি ডিবি ইত্যাদি etc.

#!/bin/bash

function tab () {
    local cmd=""
    local cdto="$PWD"
    local args="$@"

    if [ -d "$1" ]; then
        cdto=`cd "$1"; pwd`
        args="${@:2}"
    fi

    if [ -n "$args" ]; then
        cmd="; $args"
    fi

    if [ $TERM_PROGRAM = "Apple_Terminal" ]; then
        osascript 
            -e "tell application \"Terminal\"" \
                -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
                -e "do script \"cd $cdto; clear $cmd\" in front window" \
            -e "end tell"
            > /dev/null
    elif [ $TERM_PROGRAM = "iTerm.app" ]; then
        osascript
            -e "tell application \"iTerm\"" \
                -e "tell current terminal" \
                    -e "launch session \"Default Session\"" \
                    -e "tell the last session" \
                        -e "write text \"cd \"$cdto\"$cmd\"" \
                    -e "end tell" \
                -e "end tell" \
            -e "end tell" \
            > /dev/null
    fi
}

tab path_to_script1 sh script1
tab path_to_script2 sh script2
tab path_to_script3 sh script3

1

যেহেতু এটি একটি নতুন ট্যাব খোলার পক্ষে অত্যন্ত তুচ্ছ, তাই আমি আপনার আদেশগুলি কার্যকর করার পক্ষে যতটা তুচ্ছ হিসাবে তৈরি করা এবং এটি পুরানো পদ্ধতিতে করার পরামর্শ দিচ্ছি।

আপনি দুটি নির্দিষ্ট ক্রিয়াকলাপ ডেকেছেন, সুতরাং আসুন তাদের সাথে কাজ করুন। নোট করুন যে আমি রেলগুলি সম্পর্কে যা জানি তার ভিত্তিতে আমি প্রচুর অনুমান করে চলেছি, তবে আপনার প্রকল্পের জন্য প্রয়োজনীয় নয়।

একটি দীর্ঘ গল্প সংক্ষিপ্ত কাটা, আপনি খুব চান তা করার জন্য একটি কমান্ড ওরফে, অথবা আপনি যা চান তা করতে একটি তুচ্ছ শেল স্ক্রিপ্ট তৈরি করুন।

লিখিত myapp.startসামগ্রীগুলি সহ একটি শেল স্ক্রিপ্ট তৈরি করুন :

#!/bin/bash

cd Development/rails/myapp
# Do any common environment initializations here, such as RAILS_ENV=development
script/server

আপনাকে সম্ভবত আপনার হোম ডিরেক্টরিতে .bash_profile নামে একটি ফাইল তৈরি করতে হবে, বা ইতিমধ্যে বিদ্যমান একটি সংশোধন করতে হবে এবং এর মতো একটি লাইন যুক্ত করতে হবে;

export PATH="$HOME/bin:${PATH}"

তারপরে, আপনার বাড়ির ফোল্ডারে একটি বিন ডিরেক্টরি তৈরি করুন এবং এতে myapp.start স্ক্রিপ্টটি সরান। এটিরও নিশ্চিত করুন যে এতে মালিকের সর্বনিম্ন ( chmod 700 myapp.start) এ বিট চালানো হবে ।

তারপরে, টার্মিনাল.এপ খুলুন, টাইপ করুন myapp.startএবং আপনার রেল চলছে। বিকল্পভাবে, টাইপ করুন এবং myaতারপরে টিপুন Tab, এবং স্বয়ংক্রিয়রূপে বাকিটি পূরণ করতে দিন, টিপুন return। বুম, সার্ভার চলছে।

এক্সটেনশনের মাধ্যমে, আপনি লগ ফাইলের লেজটি কীভাবে করবেন তা আপনি ইতিমধ্যে বুঝতে পারেন, তবে যাই হোক আমি চালিয়ে যাব। সামগ্রীগুলি সহ app / বিন নামক myapp.taillog নামে একটি ফাইল তৈরি করুন:

#!/bin/bash

tail -F ~/Development/rails/myapp/logs/development.log

আবার এটি বিন ফোল্ডারে রাখুন, chmod 700 ~/bin/myapp.taillogতারপরে রেল সার্ভার শুরু করার পরে দ্রুত হিট করুন t, টাইপ করুন myapp.taillogএবং আপনার একটি লগ ফাইল মুদ্রিত হচ্ছে।

দুটি কমান্ড, দুটি অতিরিক্ত কীস্টোক (ট্যাবগুলি খোলার), সম্ভবত যথেষ্ট?

এখানে দুটি খুব সুস্পষ্ট উন্নতি আছে। একটি হ'ল রেল অ্যাপ্লিকেশনগুলির নাম "আবিষ্কার" করতে সক্ষম একটি শেল ফাংশন লিখতে হবে, সুতরাং আপনাকে প্রত্যেকের জন্য একটি শেল স্ক্রিপ্ট লিখতে হবে না, এমন একটি সাব-কমান্ড লেখা যা ওয়েবब्रিক / আপনার পছন্দসই রেল সার্ভার শুরু করার জন্য ডিজাইন করা হয়েছে, এবং নিয়মিতভাবে কয়েকটি কী লগ ফাইল পুচ্ছ করার জন্য আদেশ দেয়।

দ্বিতীয় উন্নতিটি হ'ল সম্ভবত আপনি এমন একটি অ্যাপলস্ক্রিপ্ট লিখতে পারেন যা প্রয়োজনীয় টার্মিনাল ইন্টারঅ্যাকশন করে এবং প্রত্যেকটির ভিতরে যথাযথ কমান্ড প্রয়োগ করে। তবে প্রকৃতপক্ষে, আমি অ্যাপলস্ক্রিপ্টে স্তন্যপান করি এবং সারা দিন ব্যাশ কোড এবং পার্ল কোডে কাজ করি, তাই আমি আমার দক্ষতার সেটটির সাথে সম্পর্কিত পরামর্শ দিচ্ছি :)।


1

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

বুকমার্কের ধারণাটি উইন্ডোগুলির একটি সেট সহজে পরিচালনা করতে দেয়। অ্যাপলস্ক্রিপ্ট / অটোমেটার ব্যবহার করে আইটার্মের স্ক্রিপ্টিং বিকাশকারীর ওয়েবসাইটে সহজ, আরও শক্তিশালী এবং আরও ভাল ডকুমেন্টেড । (টার্মিনালের তুলনায়)

আপনার প্রয়োজনীয়তা মেটাতে যদি আপনি সাধারণ টার্মিনালের স্ক্রিপ্টিং খুঁজে পান তবে এটি পরীক্ষা করে দেখুন। আমি আপনার ইউনিক্স শেলটি ঘন ঘন ব্যবহৃত কমান্ডগুলির জন্য উপকরণ সেট আপ করার জন্য কাস্টমাইজ করার বিষয়টিও সুপারিশ করি। আপনি এগুলি নতুন উইন্ডোগুলির জন্য প্রাথমিক কাজগুলি স্ক্রিপ্টিংয়ে ব্যবহার করতে পারবেন তবে যে কোনও সময় আপনি শেলটিতে থাকবেন এবং একটি নতুন উইন্ডো খোলার পরিবর্তে কার্যগুলি স্যুইচ করতে হবে।


1

স্ক্রিপ্টগুলি দুর্দান্ত এবং সব কিছু, তবে আপনি যেখানে টার্মিনালটি খোলেন সেখানে 'ওয়াচ মি ডু' রেকর্ড করতে অটোমেটার ব্যবহার করতে পারেন এবং আপনার পছন্দসই উইন্ডোর # টি জন্য কয়েকটি কমান্ড + এন নিক্ষেপ করতে পারেন। এট ভয়েলা


1

একটা মহান উত্তর থেকে অনুরূপ একটি প্রশ্ন Stackoverflow উপর, কিন্তু এটা সম্ভবত এখন এখানে উপর জন্যে, তাই আমি ঠিক এখানে অনুলিপি করব / পাস্তা করুন।


এটি একেবারে সম্ভব, তবে এটি আপনার পক্ষ থেকে কিছুটা কাজ নেবে। আপনার প্রথম যেটি প্রয়োজন তা হ'ল আপনার সেটিংসে প্রতিটি উইন্ডো / ট্যাবটি সেটআপ করা।

আমার 4 টি ট্যাব রয়েছে যা আমি প্রতিবার টার্মিনাল খোলার পরে স্বয়ংক্রিয়ভাবে খুলি। DB Shell, Editor, Server, এবং Shell। এগুলি সমস্ত Sasquatch(জিজ্ঞাসা করবেন না) প্রকল্পের মধ্যে রয়েছে, এইভাবে নামকরণ। এগুলির প্রত্যেকের সাথে তাদের সাথে যুক্ত হওয়া একটি অনন্য আদেশ থাকতে হবে।

এই ক্ষেত্রে, আমি মৃত্যুদণ্ড কার্যকর করছি vim। আপনি যদি কোনও নির্দিষ্ট ডিরেক্টরি শুরু করতে চান তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন vim ~/projects/main/। সত্যিই আপনি যেদিকে যেতে চান সেখানে শেলটি খোলার পরে কমান্ডটি দেবে। এখন আপনাকে আপনার সমস্ত উইন্ডো / ট্যাব খুলতে হবে:

  1. সবকিছু বন্ধ করুন।
  2. আপনার প্রতিটি প্রোফাইলের জন্য একটি নতুন উইন্ডো খুলুন।
    • Shellমেনুতে যান => New Tab/ New Window=> আপনি উপরে তৈরি প্রোফাইলটি নির্বাচন করুন।
    • আপনি চান প্রতিটি উইন্ডো বা ট্যাবটির জন্য পুনরাবৃত্তি করুন।
  3. আপনার সমস্ত উইন্ডো এবং / বা ট্যাবগুলি খোলা থাকলে সেগুলি একটি উইন্ডো গ্রুপ হিসাবে সংরক্ষণ করুন।
    • Windowমেনু => এ যান Save Window As Group...
    • আপনার উইন্ডো গ্রুপকে একটি নাম দিন (এটি পরে সহায়ক)।
    • আপনি যদি এই গ্রুপটি প্রতিবার টার্মিনাল খোলার জন্য চান, এই স্ক্রিনের নীচে বক্সটি চেক করুন এবং তারপরে সেভ করুন।
  4. আপনার সমস্ত উইন্ডোজ / ট্যাবগুলি বন্ধ করে দিন (এটি পরীক্ষার সময়!)।
  5. আপনার নতুন উইন্ডো গ্রুপটি খুলুন।
    • Windowমেনুতে যান => Open Window Group=> আপনি সবে তৈরি গ্রুপটি নির্বাচন করুন।

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


1
কেবল একটি নোট, আপনার উত্তরের চিত্রগুলি লিংকগুলি ভেঙে গেছে বলে মনে হচ্ছে।
belporter

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