Leider gibt es keine Möglichkeit, eine App über die Befehlszeile mit ihrem Namen aufzurufen. Die Bereitstellung dieser Funktion würde ein unzuverlässiges Extra-Parsen für installierte Apps bedeuten, und einige würden dies als Sicherheitslücke betrachten. Sie können das Parsen jedoch selbst mit einem Skript durchführen, das den Namen jeder Erweiterung / App sucht und extrahiert, bis der gesuchte Name gefunden wird:
/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."
Einige Apps setzen ihre Namen tiefer in die Skripte - ich weiß nicht warum! Möglicherweise müssen Sie ein Skript wie dieses neu schreiben oder ergänzen, um ".desktop" -Dateien ~/.local/share/applications
nach dem entsprechenden "^ NAME = ..." zu durchsuchen und den Ausführungsbefehl dort abzurufen.
Ich habe dieses Skript noch nicht getestet - ich habe es nur spontan geschrieben, um Ihre Frage zu beantworten. Ich hoffe, dass es als Beispiel für Sie funktioniert, aber wenn die Idee nicht ganz richtig ist, könnten wir es ein bisschen optimieren. Zsh ist eine einfache, geradlinige Syntax im Vergleich zu einigen anderen Shells, die mit Sh kompatibel sind. Ich habe versucht, alle Funktionen, die neue Versionen oder Module erfordern, mit Ausnahme von PCRE, wegzulassen. PCRE ist so viel einfacher für den genauen Mustervergleich, den ich oft benötige, dass ich regelmäßig Regex die meiste Zeit vernachlässige. Ein längeres Perl-Skript könnte funktionieren, auch der größte Teil dieser Syntax wird unverändert ausgeführt /bin/bash
. foreach ... end
, $match[1]
style Arrays, setopt rematchpcre
die exakte Systax von Bash Regex und emulate
sind die Hauptausnahmen.
.desktop
Datei in öffnen~/.local/share/applications
(ziehen Sie sie über ein geöffnetes gedit-Fenster), sehen Sie wahrscheinlich den richtigen Befehl in derExec=
Zeile.