Come trovo il nome dell'applicazione per aprire un file usando AppleScript?


1

Trovo conveniente il metodo AppleScript per aprire un file, ma spesso non riesco a indovinare il nome dell'applicazione da utilizzare quando non desidero le opzioni predefinite.

Ad esempio, ho installato Foxit PDF Reader per annotare direttamente un PDF. Non sono stato in grado di indovinare cosa usare nel open -a ??? my.pdfcomando.

Come posso trovarlo per qualsiasi applicazione generale? Forse c'è un modo per ottenere un elenco di tutte le opzioni disponibili?


È semplicemente:open -a "Foxit Reader" /path/to/file.pdf
user3439894,

@ user3439894, questo risolve il mio caso di esempio ma la risposta di Mateusz identifica come applicare questo al caso generale. Ci sono molte applicazioni con cui voglio fare questo e non voglio fare una nuova domanda per ognuna.
Steven C. Howell,

Poiché non devo mai preoccuparmi della localizzazione, personalmente non ho bisogno di ottenere BundleIdentifier in quanto posso vedere chiaramente il nome delle app e tutto il mio lavoro come nell'esempio che ho presentato in precedenza. Ad ogni modo, basandoti su ciò che Mateusz Szlosek ha presentato, se vuoi ottenere tutti i nomi delle app e BundleIdentifier in una bella lista, usa semplicemente la seguente riga di comando. for f in /Applications/*.app; do echo "${f##*/} =>" "$(plutil -p "$f/Contents/Info.plist" | awk -F'[""]' '/BundleIdentifier/ {print $4}')"; done
Copialo

Risposte:


3

È possibile utilizzare l' -bopzione e utilizzare l'identificatore del pacchetto anziché utilizzare il nome dell'applicazione. Ad esempio, per ottenere l'identificatore del pacchetto da Safari :

plutil -p /Applications/Safari.app/Contents/Info.plist | grep BundleIdentifier

di conseguenza otterrai "CFBundleIdentifier" => "com.apple.Safari"

Quindi lo usi in questo modo:

open -b com.apple.Safari /path/to/file

In genere, è necessario ottenere l'identificatore del pacchetto dal Info.plistfile che si trova all'interno della Application.app/Contents/directory.

Oppure, se lo desideri, puoi ottenere il nome dell'app con questo:

plutil -p /Applications/PaintCode\ Trial.app/Contents/Info.plist | grep BundleName

produzione:

"CFBundleName" => "PaintCode Trial"

Questa sembra un'alternativa praticabile. Questi identificatori di pacchetti saranno più difficili da ricordare e più lunghi da digitare. Per Foxit, l'identificatore del pacchetto è com.foxitsoftware.FoxitReaderLite. Se non esiste un modo per ottenere il nome dell'applicazione più breve, un alias bash per questo sarebbe probabilmente la migliore opzione successiva, ovvero alias foxit="open -b com.foxitsoftware.FoxitReaderLite".
Steven C. Howell,

@ stvn66 Ho aggiunto le informazioni su come ottenere il nome dell'app nella mia risposta.
Mateusz Szlosek,

Perché passare così tanto rigamarole quando open -a "Foxit Reader" /path/to/file.pdffa semplicemente ciò che l'OP sta chiedendo !?
user3439894,

Perché alcune app hanno un nome visualizzato diverso dal nome del bundle. Ad esempio potrebbe essere localizzato.
Mateusz Szlosek,

Buon punto! +1 :)
user3439894,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.