Nie potrzebujesz niczego wymyślnego, masz już odpowiedź. Próbować:
open /Applications/Foo.app bar.pdf
po edycji
W świetle poniższych komentarzy, myślę, że moja odpowiedź byłaby względnie podobna ... Zrobiłbym funkcję, która zastępuje otwarte, robi push-to /Applications
, wywołuje /usr/bin/open $appName.app $args
, wyskakuje i wraca.
Mam obsesję na punkcie pisania skryptów powłoki, ale coś w stylu poniżej, które obejmuje specjalne przypadki i utrzymuje prawie taką samą składnię, jak Apple dla open. Lubię dbać o środowisko tak czyste, jak to możliwe.
Jestem pewien, że składnia pochodzi z kosmosu:
function open($appName, $args)
{
#if we are calling open without a path like /Applications/TextEdit.app AND
# $appName ends in '.app'
if (!hasParent($appName) && isApp($appName))
{
pushd /Applications
/usr/bin/open ${appName}.app $args &
popd
return
}
#otherwise, use open as normal
/usr/bin/open $appName $args
return
}
przy drugiej edycji
patrząc na komentarz @ mankoffa do pierwotnego pytania, większość rzeczy w powyższej funkcji byłaby prawdopodobnie stratą czasu, ponieważ można po prostu użyć open -a $appName
. Więc mankoff ma prawdopodobnie najłatwiejsze rozwiązanie i powinien zmienić swój komentarz na odpowiedź;)
open -a Skim foo.pdf
.