Newsgroup: it.comp.macintosh
Titolo: Bash script

Sto cercando di fare uno script che mi ripulisca i file di backup di
vectorworks (visto che il signore non fa le pulizie...). Qualcuno sa
dirmi perch� non funziona?
#!/bin/bash
VWPLIST="~/Library/Preferences/net.nemetschek.vectorworks.plist"
VWBKEY="NSNavLastCurrentDirectory:ChooseFolder:1"
echo $VWBKEY
VWBHOLDDAYS="7"
VWBFOLDER=`defaults read net.nemetschek.vectorworks $VWBKEY`
echo $VWBFOLDER
#VWBFOLDER="/Users/studio/Library/Application Support/VectorWorks/VW
Backup"
find "$VWBFOLDER" -type f -mtime +$VWBHOLDDAYS -print0 | xargs -0 rm
La seconda riga non servirebbe, la VWBKEY � corretta, se attivo la
penultima riga, lo script funziona (ma io voglio prendere il path dalla
.plist)... perch� non funziona!!!! La risposta � sempre:
find: ~/Library/Application Support/VectorWorks/VW Backup: No such file
or directory
Ma la directory c'�!
-- 
Per rispondere, togliere -NOSPAM- dall'indirizzo.

Aladino <borgob...@SPAM-alice.it> wrote:

Evidentemente non espande la home...
$ a=~
$ b="~"
$ find $a -name AllRatiosIGVSession.xml
/Users/dawe/AllRatiosIGVSession.xml
$ find $b -name AllRatiosIGVSession.xml
find: ~: No such file or directory
Infatti:
$ cat test 
~/Library/Application Support
$ a=`cat test `
$ echo $a
~/Library/Application Support
$ ls "$a"
ls: ~/Library/Application Support: No such file or directory
Mentre cerco di capire come mai non espande ~ puoi provare questo
workaround (che e' un po' una porcata secondo me):
"${VWBFOLDER/\~/$HOME}"
infatti 
$ ls "${a/\~/$HOME}" | head
ACD Systems
AddressBook
Adobe
AppCleaner
Aspera
Automator
AutomountMaker
BibDesk
BumpTop
CLC bio

 workaround (che e' un po' una porcata secondo me):
Invece di sostituire ~ con $HOME?

 #!/bin/bash
#!/bin/bash -x

 #!/bin/bash -x
ok, non espande la ~
ma come faccio ad espanderla, visto che nella plist il path usa la
tilde? E io da l� devo prendere il percorso della cartella di backup?!


 tilde?
Leva i doppi apici.

 Leva i doppi apici.
Mi creano casino gli spazi...


 "${VWBFOLDER/\~/$HOME}"
Il perch� sia una porcata non l'ho capito, per� funziona ;-)
Mi resta da capire come fare a far fare le pulizie in modo
trasparente... ho provato a mettere il tutto in un unico comando e
creare un user daemon con Lingon, ma anche se il comando:
VWBKEY="NSNavLastCurrentDirectory:ChooseFolder:1"; VWBHOLDDAYS="7";
VWBFOLDER=`defaults read net.nemetschek.vectorworks $VWBKEY`; find
${VWBFOLDER/\~/$HOME} -type f -mtime +$VWBHOLDDAYS -print0 | xargs -0 rm
funziona da terminale, non viene eseguito se inserito come comando in
Lingon, ne se da Lingon richiamo lo script


 Mi creano casino gli spazi...
Sì ma senza sapere cosa c'è nel file o un straccio di output effettivo 
come pretendi che se ne possa cavare qualcosa?

 come pretendi che se ne possa cavare qualcosa?
E anche te c'hai ragione... Avevo assegnato il valore manualmente e lo
avevo lasciato come commento...
Nella plist c'� il percorso di backup di VectorWork, che pu� stare dove
si vuole, ma io l'ho messo nella cartella VectorWorks in Application
Support.
Counque:
defaults read net.nemetschek.vectorworks
NSNavLastCurrentDirectory:ChooseFolder:1
restituisce:
~/Library/Application Support/VectorWorks/VW Backup
Sto comunque pensando di spostare il backup fuori dalla cartelle
dell'utente, in modo che il backup del server dove risiedono le home,
non comprenda questi file che possono essere considerati temporanei.
Considerando che gli utenti OpenDirectory non hanno privilegi
amministrativi sui client, dove potrei mettere la cartella di backup
(sulla maccina locale)?
Sono in dubbio tra:
/Library/Caches/VW Backup
/Users/Shared/VW Backup
Il backup in pratica � il file sul quale si sta lavorando (che si
autoregistra a tempo o per numero di operazioni), e in caso di crash
dell'applicazione va recuperato manualmente. In caso di chiusura
corretta, il file originale viene sostituito dal file di backup
aggiornato, ma quest'ultimo non viene rimosso.
Di default VectorWorks crea i file di backup in una cartella VW Backup
nella posizione del file che si va ad aprire, ma questo crea un casino
di file duplicati. Nelle ultime versioni hanno inserito la possibilit�
di selezionare un unica posizione per i backup, ma anche qui la cosa non
� ottimale visto che lavorando con file da 10-20 ma anche 100Mb, si crea
in poco tempo qualche giga di file inutili (e che nessuno prevede di
cancellare). Oltrettuto stando nella home degli utenti che viene
backuppata con rsync sul server, il tutto viene ampliato in quanto ogni
volta che apro un file, il backup viene aggiornato.
Da qui l'idea di fare uno script che faccia pulizia dei backup pi�
vecchi. E meglio se sposto il backup fuori dalle home (tanto i client
hanno il disco quasi vuoto)


 ~/Library/Application Support/VectorWorks/VW Backup
In realtà la soluzione di dawe mi sembra ottima, non avevo letto quale 
fosse il problema.

 Lingon, ne se da Lingon richiamo lo script
Non conosco lingon, io al limite avrei messo tutto in crontab... cmq hai
provato con degli export delle variabili?
d