Sayangnya, tidak ada cara yang disediakan untuk memanggil aplikasi di baris perintah dengan namanya. Menyediakan fitur ini berarti penguraian ekstra yang tidak dapat diandalkan untuk aplikasi yang diinstal dan beberapa akan menganggapnya sebagai kelemahan keamanan. Anda dapat melakukan penguraian sendiri, dengan skrip yang mencari dan mengekstrak nama setiap ekstensi / aplikasi hingga menemukan nama yang Anda cari:
/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."
Beberapa aplikasi menetapkan nama mereka lebih dalam di skrip - Saya tidak tahu mengapa! Anda mungkin harus menulis ulang atau menambahkan skrip seperti ini untuk mencari file ".desktop" ~/.local/share/applications
untuk '^ NAME = ...' yang setara dengan di atas, dan kemudian dapatkan perintah eksekusi di sana.
Saya belum menguji skrip ini - saya hanya menulisnya dengan cepat untuk menjawab pertanyaan Anda. Saya berharap bahwa sebagai contoh itu bekerja untuk Anda, tetapi jika idenya tidak tepat, kita bisa sedikit mengubah. Zsh sederhana, sintaks lurus-maju dibandingkan dengan beberapa shell yang kompatibel dengan sh lainnya. Saya telah mencoba untuk mengabaikan semua fitur yang memerlukan versi atau modul baru kecuali untuk PCRE. PCRE jauh lebih mudah digunakan untuk pencocokan pola persis yang sering saya butuhkan sehingga saya mengabaikan Regex reguler hampir sepanjang waktu. Skrip Perl yang lebih panjang dapat berfungsi, juga sebagian besar sintaks ini akan berjalan tanpa dimodifikasi di /bin/bash
. foreach ... end
, $match[1]
array gaya,, setopt rematchpcre
systax yang tepat dari Bash Regex, dan emulate
merupakan pengecualian utama.
.desktop
file terkait~/.local/share/applications
(seret ke jendela gedit yang terbuka), Anda dapat melihat perintah yang benar di dalamExec=
baris.