OS X: specificare il richiamo personalizzato da riga di comando del programma come applicazione per l'apertura di file con doppio clic

4

Sono principalmente un utente Linux che ha recentemente acquisito un MacBook Air e attualmente sto disperatamente cercando di scoprire se esiste un equivalente per i file di definizione desktop di Linux, in cui è possibile definire un'applicazione mediante la sua chiamata a linea di comando, con un segnaposto facoltativo per il file che X11 passerà ad esso quando viene fatto doppio clic su un file di tipo file associato a tale applicazione.

es. su Linux, posso impostare .txt file da aprire con una specifica chiamata da riga di comando di emacsclient in questo modo:

emacsclient -c -a "" %f

dove %f è il segnaposto che verrà sostituito dal percorso del file effettivo su cui fai doppio clic. (In generale, i file manager di Linux consentono di specificare questa riga di comando nella finestra Informazioni file.)

C'è un modo semplice per raggiungere questo obiettivo su OS X? Ho provato ad armeggiare con AppleScript, così come Google in giro per una soluzione, ma senza successo. Probabilmente ho ancora bisogno di sviluppare la conoscenza e il vocabolario relativi alla tecnologia Apple, in modo da essere in grado di porre le domande giuste con le parole giuste - quindi per favore portami con me ...

    
posta dlukes 20.06.2014 - 21:15
fonte

2 risposte

1

AppleScript è tuo amico.

In AppleScript Editor , crea un nuovo script, con il seguente codice sorgente:

(* This script is destined to be saved as an application droplet. It will process the items dropped onto it. *)

-- This routine processes the dropped item(s)
on open theDroppedItems
  repeat with i from 1 to the count of theDroppedItems
    set aDroppedItem to item i of theDroppedItems
    processItem(aDroppedItem)
  end repeat
end open

-- This routine processes an item
on processItem(anItemToProcess)
  set pathUnix to POSIX path of anItemToProcess
  set pathUnixQuoted to quoted form of pathUnix
  -- Here you make your shell command !
  set commandToRun to "cat " & pathUnixQuoted
  do shell script commandToRun
end processItem

Per il comando shell, adatta commandToRun ai tuoi desideri.

Salva lo script. Nella finestra di dialogo Salva :

  • Assegna un nome allo script OpenItems .
  • Metti lo script in un posto che ti piace; ad esempio, puoi inserire lo script in / Applicazioni .
  • Scegli il formato: Applicazione .
  • Lasciare deselezionate le due caselle di controllo.

Nel codice sorgente, guarda la costruzione on open theDroppedItems . Questo tipo di AppleScript è chiamato un droplet . Guarda l'icona dell'applicazione OpenItems che hai salvato. La grande freccia indica che si tratta di una goccia. Significa che l'applicazione accetta elementi su di essa.

Ora, trascina e rilascia il file che vuoi sull'applicazione OpenItems . Questo avvierà il comando con il tuo file.

Il prossimo passo è associare i file con il droplet. Seleziona il file desiderato e premi Apple I ( I ) per ottenere informazioni. In Apri con , seleziona l'applicazione OpenItems . Questo associerà il file al droplet. Quindi, quando fai doppio clic sul file, il file verrà aperto con il droplet OpenItems e verrà eseguito il comando shell per il file. Se vuoi questo per tutti i file dello stesso tipo, fai clic sul pulsante Cambia tutto ...

Ho testato questa soluzione su Mavericks. Funziona.

    
risposta data 22.06.2014 - 06:33
fonte
1

Per quanto ne so, non c'è nulla per eseguire automaticamente qualsiasi script su doppio script (probabilmente ho torto). La soluzione migliore che ho trovato è Automator. È preinstallato. Si desidera creare un servizio che inserirà gli script in un menu di scelta rapida (facendo clic con il pulsante destro del mouse sul file). Per le tue azioni, vuoi trovare l'azione "Esegui Shell Script". Da lì, puoi ricevere input dal Finder, come percorsi di file e percorsi di directory. Se passi l'input a stdin , la variabile che userai nello script della shell è $@ .

if [[ ! -d "$@" ]]
then
    emacsclient -c -a "" $@;
    exit
fi

Non so se lo script è completamente corretto, ma dovrebbe darti la giusta traccia.

    
risposta data 20.06.2014 - 22:12
fonte

Leggi altre domande sui tag