불행히도, 명령 행에서 앱 이름으로 앱을 호출 할 방법이 없습니다. 이 기능을 제공한다는 것은 설치된 앱에 대해 신뢰할 수없는 추가 구문 분석을 의미하며 일부는 보안 결함으로 간주 할 수 있습니다. 그러나 검색하는 이름을 찾을 때까지 각 확장명 / 앱의 이름을 검색하고 추출하는 스크립트를 사용하여 직접 구문 분석을 수행 할 수 있습니다.
/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]
style arrays, setopt rematchpcre
Bash Regex의 정확한 systax이며 emulate
주요 예외입니다.
.desktop
파일 을 열면~/.local/share/applications
(열린 gedit 창 위로 드래그)Exec=
줄에 올바른 명령을 볼 수 있습니다 .