Hai bisogno di un po 'di aiuto per eseguire un paio di righe di bash in applescript. Forse il bash giusto è il migliore?

2

Prefazione affermando che avvierò questo script sia che si tratti di script applescript o bash con Alfred.app.

Mi spiace essere così schietto e incondizionato, ma ho bisogno di eseguire un paio di righe di bash in un applecript. Penso che un semplice script bash sia capace ma non lo so per certo. Ecco i dettagli (nota che i comandi dovrebbero probabilmente essere diversi, quindi se hai suggerimenti, sentiti libero di dichiararli come sono probabilmente corretti):

Voglio lo script

  1. rm ~/Library/Vidalia/vidalia.conf'
  2. unzip ~/Library/Vidalia/vidalia.conf.zip'
  3. avvia Vidalia.app

Il passaggio di seguito non credo sia possibile poiché Vidalia.app non è scriptable e non voglio che lo script applescript / bash sia in esecuzione fino a quando Vidalia non si chiude ... ma se è possibile implementarlo senza lo script necessario resta aperto:

4) Alla chiusura di Vidalia.app rm ~/Library/Vidalia/vidalia.conf

È possibile. Posso usare bash o applescript qualunque sia la cosa più facile per te e amp; ragazze per aiutarmi con. Se potessi ottenere i primi tre passaggi per correre, sarei molto felice! Grazie per il tuo tempo e mi dispiace per la mia mancanza di conoscenza. Qualsiasi suggerimento o suggerimento sono ben accetti.

Diamine, non so nemmeno se questi sono i comandi "corretti" da usare, hanno fatto il lavoro ma se sono "sani" non lo so.

Grazie per il tuo tempo e la tua pazienza.

UPDATE - Domanda: come spostare il file decompresso in una directory diversa?

Okay, ho un'ultima domanda. Come potrei fare lo stesso tipo di azione, ma volevo mantenere vidalia.conf.zip in un'altra directory?

Dì, per esempio, un volume esterno chiamato tor - Mi sono spostato nel volume montato denominato tor con pushd , ma quando vado ad estrarre il file con quello che penso dovrebbe funzionare -d Ottengo l'errore che ho cannot create extraction directory

Che è buono perché non voglio sostituire la directory, basta spostare ciò che viene decompresso nella directory preesistente. Sì, probabilmente dovrò rimuovere il file già lì, a seconda di cosa sto facendo, quindi ho un aspetto simile a questo ...

pushd ~/Library/Vidalia/
rm vidalia.conf
popd
pushd /Volumes/tor
unzip vidalia.conf.zip -d ~/Library/Vidalia/
popd

Non l'ho ancora provato molto una volta che ho trovato l'errore con il vecchio -d . Mentre scrivevo ciò, mi sono reso conto che dovevo navigare tra le directory più con pushd e poi uscire con popd . Inizialmente avevo solo le righe 4 e 5, ma ho aggiunto le prime 3 per rimuovere il .conf che attualmente c'è ... se ... è lì ...

Che mi porta ad un'altra domanda ... È innocuo dire a bash di rimuovere un file che non esiste? Non avrei idea di dove iniziare anche con le dichiarazioni di if then .

Infine, qualcuno può raccomandare una buona introduzione per principianti al libro di Bash? Mi piacerebbe davvero imparare questa roba invece di dover semplicemente google e poi girarmi e farti tutti gli errori. Grazie ancora per il tuo aiuto. Hai risolto perfettamente il mio problema precedente, ho persino imparato molto dal semplice esempio (credo).

Cheers!

    
posta Bob Peaks 17.06.2012 - 05:07
fonte

2 risposte

3

Come @laaph ha menzionato, se vuoi solo eseguire comandi bash, usa uno script bash.

Tuttavia, ci sono alcuni problemi con i tuoi comandi.

Il tuo script deve apparire come:

#!/bin/sh

pushd ~/Library/Vidalia
rm vidalia.conf
unzip vidalia.conf.zip
popd
open /Applications/Vidalia.app

Se non hai modificato la directory corretta, unzip decomprime il file nella tua home directory, o ovunque tu abbia lanciato il tuo script.

Ci sono modi per cercare quando un'app si chiude, ma nel tuo caso questo sembra inutile, stai rimuovendo il .conf ogni volta che lanci lo script comunque. Ma se lo vuoi davvero, puoi semplicemente fare:

#!/bin/sh

pushd ~/Library/Vidalia
rm vidalia.conf
unzip vidalia.conf.zip
popd
open -W /Applications/Vidalia.app
pushd ~/Library/Vidalia
rm vidalia.conf
popd

(Questo farebbe in modo che lo script attenda fino a quando non chiudi l'app, quindi eliminerà il file di configurazione, anche se è inutile e ridondante se avvii l'app solo con lo script.) p>

Inoltre, potresti provare una soluzione più semplice: presumo che quello che vuoi sia solo avere lo stesso vidalia.conf ogni volta che avvii il programma. In questo caso, prova solo a creare .conf di sola lettura.

    
risposta data 17.06.2012 - 05:58
fonte
1

Quello che hai finora è esattamente ciò che vuoi e per aprire un programma, usa "apri", così il tuo script sarà simile a questo:

rm ~/Library/Vidalia/vidalia.conf
unzip ~/Library/Vidalia/vidalia.conf.zip
open /Applications/Vidallia.app

Ci sono tutti i tipi di trucchi per monitorare se Vidalia è in esecuzione o meno, quindi se si è disposti a lasciare lo script in esecuzione, è possibile eliminare anche il conf e quindi uscire dallo script. E, come dici tu, questo potrebbe essere fatto (in modo diverso) in Applescript, Automator o in un altro milione di modi.

    
risposta data 17.06.2012 - 05:50
fonte

Leggi altre domande sui tag