Niestety nie, nie ma sposobu, aby wywołać aplikację w wierszu polecenia po nazwie. Zapewnienie tej funkcji oznaczałoby niewiarygodne dodatkowe analizowanie zainstalowanych aplikacji, a niektórzy uważają ją za wadę bezpieczeństwa. Możesz jednak dokonać parsowania samodzielnie za pomocą skryptu, który wyszukuje i wyodrębnia nazwę każdego rozszerzenia / aplikacji, dopóki nie znajdzie szukanej nazwy:
/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."
Niektóre aplikacje zapisują swoje nazwy głębiej w skryptach - nie wiem dlaczego! Może być konieczne ponowne zapisanie lub dodanie do skryptu takiego jak ten, aby wyszukać pliki „.desktop” w ~/.local/share/applications
poszukiwaniu ich „^ NAME = ...” równoważnego z powyższym, a następnie uzyskać tam polecenie wykonania.
Nie przetestowałem tego skryptu - właśnie napisałem go w locie, aby odpowiedzieć na twoje pytanie. Mam nadzieję, że jako przykład zadziała dla ciebie, ale jeśli pomysł nie jest całkiem poprawny, moglibyśmy go trochę ulepszyć. Zsh jest prostą, prostą składnią w porównaniu do niektórych innych powłok kompatybilnych z SH. Próbowałem pominąć wszelkie funkcje wymagające nowych wersji lub modułów oprócz PCRE. PCRE jest o wiele łatwiejszy w użyciu do dokładnego dopasowania wzorca, którego często potrzebuję, przez większość czasu zaniedbuję regularne Regex. Dłuższy skrypt Perla może działać, również większość tej składni będzie działała w niezmodyfikowanym formacie /bin/bash
. foreach ... end
, $match[1]
tablice stylów, setopt rematchpcre
dokładny systax Bash Regex i emulate
są głównymi wyjątkami.
.desktop
plik w~/.local/share/applications
(przeciągnij go nad otwarte okno gedit), w wierszu zobaczysz poprawne polecenieExec=
.