অ্যাপলস্ক্রিপ্ট কমান্ডগুলি গ্রহণ করতে প্রাকদর্শন.অ্যাপ পেয়েছে
ডিফল্টরূপে, অ্যাপলস্ক্রিপ্টিং প্রাকদর্শন কাজ করবে না কারণ প্রাকদর্শন প্রয়োজনীয় অভিধানটি অনুপস্থিত। এটি ঠিক করতে, লরির উত্তরটি এখানে দেখুন , যা NSAppleScriptEnabled
প্রিভিউ.অ্যাপের সেটিং ব্যাখ্যা করে ।
প্রিভিউ.অ্যাপ থেকে প্রস্থান করুন, তারপরে একটি টার্মিনাল খুলুন এবং প্রবেশ করুন:
sudo defaults write /Applications/Preview.app/Contents/Info NSAppleScriptEnabled -bool true
sudo chmod 644 /Applications/Preview.app/Contents/Info.plist
sudo codesign -f -s - /Applications/Preview.app
একটি অ্যাপ্লিকেশন থেকে উইন্ডো বন্ধ করা হচ্ছে
1) উইন্ডো সূচী বা উইন্ডো নাম দ্বারা
যে কোনও নামকৃত অ্যাপ্লিকেশনটির উইন্ডোটি বন্ধ করার কমান্ডটি এরকম হবে:
tell application "Preview" to close window 1
… অথবা আপনি যদি একটি নামকৃত ডকুমেন্ট উইন্ডোটি বন্ধ করতে চান, যেমন foo.jpg
:
অ্যাপ্লিকেশনটি "প্রিভিউ" বন্ধ করতে বলুন (প্রতিটি উইন্ডো যার নাম " foo.jpg ")
সুতরাং, আপনার শেল স্ক্রিপ্টে যা হ'ল:
#!/bin/sh
osascript <<EOF
tell application "Preview"
close (every window whose name is "$1")
end tell
EOF
এখানে, স্ক্রিপ্টে প্রথম আর্গুমেন্টটি আপনি যে উইন্ডোটি বন্ধ করতে চান তার নাম, যেমন ./quit.sh foo.jpg
। মনে রাখবেন যে যদি আপনার ফাইলে স্পেস থাকে তবে আপনাকে ফাইলের নামটি উদ্ধৃত করতে হবে, যেমন ./quit.sh "foo bar.jpg"
।
বা আপনি যদি কোনও অ্যাপ্লিকেশন থেকে নির্বিচার উইন্ডো বন্ধ করতে চান তবে এটি ব্যবহার করুন:
#!/bin/sh
osascript <<EOF
tell application "$1"
close (every window whose name is "$2")
end tell
EOF
এখানে, আপনি ./quit.sh Preview foo.jpg
উদাহরণস্বরূপ ব্যবহার করতে চাই ।
2) ফাইল নাম দ্বারা
আপনি যদি কোনও নির্দিষ্ট নথির অন্তর্ভুক্ত উইন্ডোটি বন্ধ করতে চান তবে ফাইলটির নাম সরবরাহ করে থাকেন তবে আপনার অন্য কিছু প্রয়োজন। এটি কারণ একটি বহু পৃষ্ঠার পিডিএফ প্রদর্শিত হতে পারে foo.pdf (Page 1 of 42)
তবে আপনি কেবল foo.pdf
অ্যাপলস্ক্রিপ্টে যেতে চান ।
এখানে আমরা উইন্ডোগুলির মাধ্যমে পুনরাবৃত্তি করি এবং স্ক্রিপ্টে দেওয়া আর্গুমেন্টের বিরুদ্ধে ফাইলের নামগুলি তুলনা করি:
osascript <<EOF
tell application "Preview"
set windowCount to number of windows
repeat with x from 1 to windowCount
set docName to (name of document of window x)
if (docName is equal to "$1") then
close window x
end if
end repeat
end tell
EOF
এখন আপনি কেবল কল করতে পারেন ./quit.sh foo.pdf
। একটি সাধারণ ফ্যাশনে, নামকৃত ডকুমেন্ট উইন্ডো সহ সমস্ত অ্যাপ্লিকেশনগুলির জন্য, এটি হ'ল:
osascript <<EOF
tell application "$1"
set windowCount to number of windows
repeat with x from 1 to windowCount
set docName to (name of document of window x)
if (docName is equal to "$2") then
close window x
end if
end repeat
end tell
EOF
কেভেট: অটো-ক্লোজিং প্রিভিউ.অ্যাপ
প্রিভিউ.এপ এই অ্যাপ্লিকেশনগুলির মধ্যে একটি যা এর শেষ ডকুমেন্ট উইন্ডোটি বন্ধ হয়ে গেলে স্বয়ংক্রিয়ভাবে প্রস্থান করে its এটি মেমরি সংরক্ষণ এবং "পরিষ্কার" করার জন্য এটি করে। এই আচরণটি অক্ষম করতে, নিম্নলিখিতটি চালান:
defaults write -g NSDisableAutomaticTermination -bool TRUE
অবশ্যই, এটি পূর্বাবস্থায় ফিরিয়ে আনতে TRUE
হবে FALSE
।
স্ক্রিপ্টগুলির পরিবর্তে ফাংশন ব্যবহার করা
অবশেষে, আমি আপনার স্ক্রিপ্টগুলি এমন কোনও ফাংশনে রাখার পরামর্শ দেব যা আপনার শেলের মধ্যে সর্বদা উপলব্ধ। এটি করতে, স্ক্রিপ্টগুলি আপনারটিতে যুক্ত করুন ~/.bash_profile
। এই ফাইলটি উপস্থিত না থাকলে এটি তৈরি করুন।
cw() {
osascript <<EOF
tell application "$1"
set windowCount to number of windows
repeat with x from 1 to windowCount
set docName to (name of document of window x)
if (docName is equal to "$2") then
close window x
end if
end repeat
end tell
EOF
}
একবার আপনি আপনার বাশ প্রোফাইলটি সংরক্ষণ করে শেলটি পুনরায় চালু করার পরে আপনি যে কোনও জায়গা cw Preview foo.pdf
থেকে কল করতে পারবেন ।