दुर्भाग्य से, कोई भी तरीका नहीं है जो कमांड लाइन पर किसी ऐप को नाम से बुलाए। इस सुविधा को प्रदान करने का अर्थ है इंस्टॉल किए गए ऐप्स के लिए अविश्वसनीय अतिरिक्त पार्सिंग और कुछ इसे सुरक्षा दोष मानेंगे। आप स्वयं को पार्स कर सकते हैं, हालांकि, एक स्क्रिप्ट के साथ जो प्रत्येक एक्सटेंशन / ऐप का नाम खोजता है और तब तक निकालता है जब तक कि वह आपके लिए खोज नाम न खोज ले:
/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 = ... '' के लिए ".desktop" फ़ाइलों को खोजने के लिए इस तरह की स्क्रिप्ट को फिर से लिखना या जोड़ना पड़ सकता है ।
मैंने इस स्क्रिप्ट का परीक्षण नहीं किया है - मैंने आपके प्रश्न का उत्तर देने के लिए इसे केवल मक्खी पर लिखा है। मुझे उम्मीद है कि एक उदाहरण के रूप में यह आपके लिए काम करता है, लेकिन अगर विचार बिल्कुल सही नहीं है, तो हम इसे थोड़ा मोड़ सकते हैं। Zsh कुछ अन्य श-संगत गोले की तुलना में सरल, स्ट्रेट-फॉरवर्ड सिंटैक्स है। मैंने ऐसे किसी भी फीचर को छोड़ने की कोशिश की है जिसमें पीसीआरई को छोड़कर नए संस्करणों या मॉड्यूल की आवश्यकता होती है। पीसीआरई इतना आसान है कि सटीक पैटर्न से मेल खाने के लिए उपयोग करने के लिए मुझे अक्सर आवश्यकता होती है कि मैं ज्यादातर समय रेग रेक्स की उपेक्षा करूं। एक लम्बी पर्ल स्क्रिप्ट काम कर सकती है, इसमें से अधिकांश वाक्यविन्यास भी बिना शीर्षक के चलेंगे /bin/bash
। foreach ... end
, $match[1]
शैली सरणियाँ, setopt rematchpcre
बैश रेगेक्स का सटीक सिस्टैक्स, और emulate
मुख्य अपवाद हैं।
.desktop
फ़ाइल को खोलते हैं~/.local/share/applications
(इसे किसी खुले हुए विंडो पर खींचें) तो आपExec=
लाइन में सही कमांड देख सकते हैं ।