দুর্ভাগ্যক্রমে, কোনও নামই কমান্ড লাইনে অ্যাপ্লিকেশন নামে কল করার কোনও উপায় নেই। এই বৈশিষ্ট্যটি সরবরাহ করার অর্থ ইনস্টলড অ্যাপ্লিকেশনগুলির জন্য অবিশ্বাস্য অতিরিক্ত পার্সিংয়ের অর্থ হবে এবং কেউ কেউ এটিকে একটি সুরক্ষা ত্রুটি হিসাবে বিবেচনা করবে। তবে আপনি নিজের পার্সিং নিজেই করতে পারেন, তবে এমন কোনও স্ক্রিপ্ট যা প্রতিটি এক্সটেনশান / অ্যাপ্লিকেশনটির নাম অনুসন্ধান করে এবং এটির সন্ধান করে যতক্ষণ না এটি অনুসন্ধান করে আপনি:
/usr/local/bin/chrome-app-by-name:
#!/bin/zsh
emulate -R zsh -o extendedglob -o nullglob
setopt rematchpcre ;# recommended, I'm so used to PCRE, I sometimes forget what doesn't work in Regex
Chrome_Profile=Default ;# or "Profile 1" ...
cd ${XDG_CONFIG_HOME:-$HOME/.config}/google-chrome/${Chrome_Profile}/Extensions
foreach app in */*
# We have just called the path to each version of each extension/app.
# Next we enclose in braces - slightly unnecessary - to ensure that
# whatever version of Zsh, "manifest.json" is completely read and
# closed before we use the variable.
{
App_Manifest="$(cat <$app/manifest.json)"
}
if [[ $App_Manifest =~ '^\s*"name"\s*:\s*"([a-zA-Z 0-9_.-]+)"' ]]
then
app_name="$match[1]" ;# capture the sub-expression match for "name"
if [[ $app_name == $1 ]]
then
# For my system this is actually exec google-chrome-stable ...
exec google-chrome --app-id="${app%%/*}" $argv[2,-1]
fi
fi
end
echo "App name not found. Please use Exact, case-sensitive spelling."
কিছু অ্যাপ্লিকেশন তাদের নামগুলি স্ক্রিপ্টগুলিতে আরও গভীর করে দেয় - কেন জানি না! ~/.local/share/applications
উপরের সমতুল্য '^ NAME = ...' এর জন্য ".ডেস্কটপ" ফাইলগুলি অনুসন্ধান করতে আপনাকে এই জাতীয় স্ক্রিপ্টটিতে আবার লিখতে বা যুক্ত করতে হতে পারে এবং তারপরে সেখানে এক্সিকিউশন কমান্ডটি পেতে হবে।
আমি এই স্ক্রিপ্টটি পরীক্ষা করি নি - আমি আপনার প্রশ্নের উত্তর দেওয়ার জন্য এটিকে কেবল লিখেছিলাম। আমি আশা করি যে উদাহরণ হিসাবে এটি আপনার পক্ষে কাজ করে, তবে ধারণাটি সঠিক না হলে আমরা এটি কিছুটা টুইট করতে পারি। অন্য কিছু sh- সামঞ্জস্যপূর্ণ শেলের তুলনায় Zsh সাধারণ, স্ট্রেইট-ফরোয়ার্ড সিনট্যাক্স। আমি পিসিআরই ব্যতীত যে কোনও বৈশিষ্ট্যগুলির জন্য নতুন সংস্করণ বা মডিউলগুলির প্রয়োজন রয়েছে তা বাদ দেওয়ার চেষ্টা করেছি। পিসিআরই সঠিক প্যাটার্ন ম্যাচের জন্য ব্যবহার করা এত সহজ যে আমার প্রায়শই প্রয়োজন আমি নিয়মিত রেজেক্সকে বেশিরভাগ সময় অবহেলা করি। একটি দীর্ঘতর পার্ল স্ক্রিপ্ট কাজ করতে পারে, এছাড়াও এই সিনট্যাক্সের বেশিরভাগটি ইন-মোডে চালিত হবে /bin/bash
। foreach ... end
, $match[1]
শৈলীর অ্যারে, setopt rematchpcre
বাশ রেজেক্সের সঠিক সিনট্যাক্স এবং emulate
মূল ব্যতিক্রম।
.desktop
ফাইলটি~/.local/share/applications
খুলেন (খোলা জিডিট উইন্ডোটির উপরে এটি টানুন) আপনিExec=
লাইনে সঠিক কমান্ডটি দেখতে পাবেন ।