Terminale: comando per mostrare la cartella dell'applicazione

2

Recentemente ho scoperto che posso aprire l'applicazione da Terminal in questo modo:

$ open -a TextEdit

Esiste un comando che mostra la cartella dell'applicazione anziché aprirla? Tale che potrei fare questo:

$ alias vmrun=\"'some-command 'VMware Fusion''/Contents/Library/vmrun\"

Ho bisogno di quel some-command per stampare la cartella dell'applicazione VMware Fusion.

UPDATE: non so dove sia installata l'applicazione, altrimenti potrei semplicemente indicizzarla nello script

    
posta Tair 31.08.2015 - 20:36
fonte

5 risposte

2

Credo che questo sia quello che stai cercando:

alias vmrun=\"'osascript -e 'tell application "Finder" to get POSIX path of (application file id "com.vmware.fusion" as alias)''/Contents/Library/vmrun\"

Ora quando digito vmrun , senza argomenti, in un Terminale e preme Invio , emette il file di aiuto interno, come dovrebbe.

Funziona sul mio sistema, tuttavia restituisce la prima occorrenza del percorso del pacchetto di applicazioni "VMware Fusion.app". Ho quattro visioni diverse installate, quindi non sarebbe l'ideale nella mia situazione, anche se per quelle che hanno una sola versione installata funziona.

    
risposta data 31.08.2015 - 23:50
fonte
3

Ho appena creato e caricato un GitHub Gist GitHub Gist che potrebbe aiutarti.

La funzionalità principale è:

function get_apps_folder () { 
    mdfind -0 -onlyin / \
        'kMDItemKind=="Application" && kMDItemDisplayName="'"${1:-TextEdit}"'"' \
    | xargs -0 -I{} dirname {} 
}

function open_apps_folder () {
    open $(get_apps_folder "$1")
}

Potresti prenderlo e aggiungere le due funzioni al tuo ~/.bash_profile e sarebbero disponibili per tutte le sessioni di shell interattive che stai utilizzando. (E sì, spostarsi tra virgolette singole e doppie misti e incorporati può essere complicato.): -)

Ma per dare una spiegazione migliore, la parte principale è:

mdfind -0 -onlyin / 'kMDItemKind=="Application" && kMDItemDisplayName="VMware Fusion"' | xargs -0 -I{} open {}

Il -onlyin /path limita la ricerca al solo volume di root, altrimenti molto probabilmente verrà cercato anche qualsiasi volume di "Spotlight ricercabile", incluso Time Machine, che può diventare ingombrante e / o prolisso, quindi usare -onlyin / .

Nel Gist, ogni riga prodotta da mdfind viene inviata a xargs che chiama open su ciò che gli viene passato. Si noti che non esiste un controllo particolarmente valido di ciò che viene passato a xargs (cioè si presuppone che stia ottenendo una directory).

mdfind e mdls possono essere piuttosto utili per cose come questa, anche se ci si può prendere un po 'di tempo per abituarsi. Di solito uso mdls /path/to/file per avere un'idea di quali metadati quel tipo di file ha. Posso quindi utilizzare le chiavi e i valori per cercare utilizzando mdfind . Puoi trovare un sacco di pagine, esempi e documentazione là fuori, BTW.

    
risposta data 31.08.2015 - 23:58
fonte
2

Scrivi semplicemente:

mdfind <target_file_name.ext>

Se ci sono corrispondenze, ti verranno presentati i relativi percorsi associati. Se ce n'è più di uno, scegli quello che è appropriato e hardcode it.

Ad esempio:

me@MacBook-Pro:~$mdfind "VMware Fusion.app"
/opt/homebrew-cask/Caskroom/vmware-fusion/7.1.2-2779224/VMware Fusion.app

O più probabilmente, uno di questi:

you@MacBook-Pro:~$mdfind "VMware Fusion.app"
/Applications/VMware Fusion.app
/Users/you/Applications/VMware Fusion.app
risposta data 01.09.2015 - 08:21
fonte
1

Due opzioni semplici e veloci:

  1. Puoi usare Spotlight ( mdfind ) tramite la riga di comando per gli elementi di alto livello:

    appLocation=$(mdfind Fusion.app)
    echo $appLocation
    /Applications/VMware Fusion.app
    
  2. O se usi il locate binary (il comando pre-requisito per abilitarlo verrà notato la prima volta che lo usi).

    appLocation=$(locate vmrun)
    echo "Found at " $appLocation
    Found at /Applications/VMware Fusion.app/Contents/Library/vmrun
    
risposta data 01.09.2015 - 04:09
fonte
0

Devi aggiungere:

alias vmrun='/Applications/VMware\ Fusion.app/Contents/Library/vmrun'

al ~/.bash_profile , salva il file e l'origine ~/.bash_profile . In futuro devi solo digitare vmrun per avviare lo strumento.

Se hai bisogno di accedere rapidamente ad altri comandi da questa directory, puoi aggiungere:

:/Applications/VMware\ Fusion.app/Contents/Library/

al tuo percorso.

    
risposta data 31.08.2015 - 21:10
fonte

Leggi altre domande sui tag