বর্তমান স্পেসে একটি নতুন টার্মিনাল উইন্ডো খোলার জন্য অ্যাপ্লস্ক্রিপ্ট


12

হ্যাঁ, আমি অ্যাপল স্ক্রিপ্টের সাথে এক ভয়াবহ নবাগত অভিজ্ঞতা লাভ করছি।

আমার বর্তমান ডেস্কটপ স্পেসে একটি নতুন টার্মিনাল উইন্ডো খুলতে হবে। আমাকে টার্মিনাল চলমান অন্য স্থানে সরান না এবং তার পরে অন্য টার্মিনাল উইন্ডোটি খুলুন।

অবশ্যই, যদি টার্মিনালটি চলমান না থাকে তবে এটির একটি নতুন টার্মিনাল প্রক্রিয়া শুরু করা উচিত।

উত্তর:


16
tell application "Terminal"  
    do script " "  
    activate  
end tell

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


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

15

ডো স্ক্রিপ্টের মধ্যে যদি আপনার কোনও পাঠ্য না থাকে তবে আপনি টার্মিনালে একটি অতিরিক্ত কমান্ড প্রম্পট পাবেন না।

tell application "Terminal"  
    do script ""  
    activate  
end tell

1
আমি মনে করি এটি ঠিক আছে যদি আমরা এটিকে উত্তর হিসাবে ফেলে রাখি - আপনি বিকল্পভাবে আরও উন্নতি করতে এবং নিজের মুছতে @ jfm এর উত্তরে একটি সম্পাদনার পরামর্শ দিতে পারেন।
slhck

6

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

কমপক্ষে ১০.১০ সাল থেকে ওএস এক্স-এ নির্মিত স্ক্রিপ্টের বিপরীতে, এইগুলি সমস্তই আপনার ফাইন্ডার উইন্ডোতে বর্তমান চলমান ডিরেক্টরি যা আছে ডিরেক্টরিতে টার্মিনালটি খোলায় (অর্থাত এটি খুলতে আপনাকে কোনও ফোল্ডার নির্বাচন করতে হবে না)।

ফাইন্ডার> টার্মিনাল> ফাইন্ডার চেনাশোনাটি সম্পূর্ণ করতে বেশ কয়েকটি বাশ ফাংশন অন্তর্ভুক্ত করে।

1. বিদ্যমান ট্যাবটি পুনরায় ব্যবহার করুন বা একটি নতুন টার্মিনাল উইন্ডো তৈরি করুন:

tell application "Finder" to set myDir to POSIX path of (insertion location as alias)
tell application "Terminal"
    if (exists window 1) and not busy of window 1 then
        do script "cd " & quoted form of myDir in window 1
    else
        do script "cd " & quoted form of myDir
    end if
    activate
end tell

২. একটি বিদ্যমান ট্যাব পুনরায় ব্যবহার করুন বা একটি নতুন টার্মিনাল ট্যাব তৈরি করুন:

tell application "Finder" to set myDir to POSIX path of (insertion location as alias)
tell application "Terminal"
    if not (exists window 1) then reopen
        activate
    if busy of window 1 then
        tell application "System Events" to keystroke "t" using command down
    end if
    do script "cd " & quoted form of myDir in window 1
end tell

৩. অ্যাপলস্ক্রিপ্ট থেকে ডাকা শেল স্ক্রিপ্টের মাধ্যমে প্রতিবার একটি নতুন উইন্ডো তৈরি করুন

tell application "Finder"
    set myDir to POSIX path of (insertion location as alias)
    do shell script "open -a \"Terminal\" " & quoted form of myDir
end tell

৪. (বোনাস) বাশ ওরফে আপনার টার্মিনালের বর্তমান ওয়ার্কিং ডিরেক্টরিটির জন্য একটি নতুন ফাইন্ডার উইন্ডো খোলার জন্য

আপনার .বাশ_ প্রোফাইলে এই উপন্যাস যুক্ত করুন।

alias f='open -a Finder ./' 

৫. (বোনাস) আপনার টার্মিনাল উইন্ডোতে ডিরেক্টরিটি সম্মুখ সন্ধানকারী উইন্ডোর পথে পরিবর্তন করুন

আপনার .বাশ_প্রফাইলে এই ফাংশনটি যুক্ত করুন।

cdf() {
      target=`osascript -e 'tell application "Finder" to if (count of Finder windows) > 0 then get POSIX path of (target of front Finder window as text)'`
        if [ "$target" != "" ]; then
            cd "$target"; pwd
        else
            echo 'No Finder window found' >&2
        fi
}

0

টার্মিনাল ইতিমধ্যে চলমান থাকলে উপরের উত্তরগুলি কেবল কাজ করে। অন্যথায় এটি একবারে দুটি টার্মিনাল উইন্ডো খোলে - একটি কারণে do scriptএবং এক কারণে activate

আপনি যদি একটি সহজ সঙ্গে এটি প্রতিরোধ করতে পারেন ... অন্যথায়:

if application "Terminal" is running then
    tell application "Terminal"
        do script ""
        activate
    end tell
else
    tell application "Terminal"
        activate
    end tell
end if

বোনাস:

আপনি যদি কমান্ডগুলি সরাসরি চালাতে চান তবে আপনি কী-স্ট্রোকের মাধ্যমে এটি করতে পারেন (খুব মার্জিত নয় - আমি জানি! তবে এটি কাজ করে)

[...]
else
    tell application "Terminal"
        activate
        tell application "System Events" to keystroke "ls -la" 
        tell application "System Events" to key code 36
    end tell
end if
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.