残念ながら、コマンドラインで名前でアプリを呼び出す方法はありません。この機能を提供することは、インストールされたアプリの信頼性の低い余分な解析を意味し、一部はセキュリティの欠陥と見なします。ただし、検索する名前が見つかるまで各拡張機能/アプリの名前を検索および抽出するスクリプトを使用して、自分で解析を行うことができます。
/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は、他の一部のsh互換シェルと比較して、単純で単純な構文です。PCRE以外の新しいバージョンまたはモジュールを必要とする機能はすべて除外しようとしました。PCREは、私がよく必要とする正確なパターンマッチングに非常に使いやすいため、通常の正規表現をほとんど無視しています。より長いPerlスクリプトでも動作し/bin/bash
ます。また、この構文のほとんどはで変更されずに実行されます。foreach ... end
、$match[1]
スタイル配列setopt rematchpcre
、、Bash Regexの正確なsystax、およびemulate
主要な例外です。
.desktop
ファイルを~/.local/share/applications
(開いているgeditウィンドウにドラッグする)で開くと、そのExec=
行に正しいコマンドが表示されます。