8

Come si fa: espellere una memoria USB cancellando i file invisibili per Windows

Scritto da: Maurizio Natali Pubblicato alle 15:09 in: Come si fa, Mondo Mac
29mar

Più volte su queste pagine ci siamo occupati del problema dei Resource Fork nella condivisione di documenti con Windows. Chi di voi ha comprato sotto mio suggerimento BlueHarvest dovrebbe aver risolto definitivamente, ma un nostro lettore ha trovato un’altra soluzione usando il terminale.

Nelle righe seguenti vedremo come creare uno script che si occuperà di ripulire una memoria (Hard Disk o Pen Drive) e poi di espellerla. Perciò potremo usarlo tutte le volte che dobbiamo inviare dei dati per i computer Windows. Prima però una precisazione: questo metodo cancella anche i file in cui viene memorizzata la personalizzazione estetica delle cartelle, le icone personalizzate ed i commenti.

Tuttavia considerato che lo useremo soltanto per passare alcuni file, magari con una chiavetta USB alla nostra controparte Windows, il problema non si dovrebbe porre. Bene, iniziamo.

Aprite TextEdit, convertite in formato solo testo (cmd+shift+T) e incollate questo testo (le parti successive al # sono dei commenti utili per capire cosa esegue riga per riga lo script):

#!/bin/sh
clear                                   # pulisco la finestra
echo "Trascina qui la penna USB: "      # stampo il prompt
read disk                               # leggo il percorso del disco USB
diskName=`basename "$disk"`             # ottengo il nome del disco
rm -rfv /Volumes/"$diskName"/.*         # cancello tutti i file nel disco che iniziano col punto
diskutil unmount "/Volumes/$diskName"   # smonto il disco USB

A questo punto salvate il file dove preferite (magari sul desktop) dandogli un nome ed una estensione riconoscibili, ad esempio: USBEjecter.command

Una volta terminato aprite il terminale e scrivete “chmod +x “, compreso lo spazio. Trascinate sopra il file creato e premete invio. Questa operazione serve a dare l’attributo di eseguibilità al file creato. Il risultato, se avete messo il file sulla scrivania, sarà molto simile a questo:

assegnare attributi di esecuzione

A questo punto volendo potete anche personalizzare l’icona del file come preferite (guida alla personalizzazione) e spostarlo dove più vi aggrada. Per utilizzarlo è molto semplice.

Lanciate il file (che a questo punto si comporterà come una applicazione) con un doppio clic. Si aprirà il terminale e vi chiederà di trascinare il volume da ripulire ed espellere sulla finestra. Fatelo e vedrete comparire il percorso logico del drive, premete invio per confermare l’operazione. Vedrete a video tutti i file che saranno cancellati e lo script terminerà con [Processo Completato]. Potete quindi togliere la pen drive e chiudere il terminale. Ecco un esempio di come è apparsa l’operazione rimuovendo una mia pendrive:

Questo Tip è stato inviato da MacMomo e partecipa al concorso myMacTips.

Commenti

  1. 1

    ciao maurizio!! ho il sospetto che il mio hard disk esterno sia danneggiato?ci sono dei programmi per capirlo???:(

    davide
    29 marzo 2010 ore 17:44
  2. 2

    @davide:
    /Applicazioni/Utility/Utility Disco -> Verifica Disco

    MacMomo
    29 marzo 2010 ore 23:00
  3. 3

    Questa è un idea geniale.. MA!!!

    C’è UN MA!
    non me ne intendo molto di shell..

    MA SI POTREBBE METTERE UN [LS] con i file che verranno cancellati e poi una conferma…???

    altrimenti c’è il rischio che se il mio amico winzozziano ha dei file con il . davanti.. glieli cancello… ed E’ PESSIMO!

    Se sapete come fare a completare lo script con un ls e una richiesta di continuazione.. perfavore lo spiegate?

    ciccio
    29 marzo 2010 ore 23:19
  4. 4

    ho pensato a questo… ditemi se voi avete idee migliori:
    ANCHE perchè non fa esattamente quello che voglio.. mi stampa dei file che non so cosa siano
    ########################
    #!/bin/sh
    clear
    echo “Trascina qui la penna USB: ”
    read disk
    diskName=`basename “$disk”`
    ####### INIZIO NOVITA ##############
    ls /Volumes/”$diskName”/.*
    echo “trascina di nuovo per cancellare definitivamente”
    read disk
    diskName=`basename “$disk”`
    ####### FINE NOVITA ##################
    rm -rfv /Volumes/”$diskName”/.*
    unmount “/Volumes/$diskName”

    ciccio
    29 marzo 2010 ore 23:26
  5. 5

    @ciccio:
    Se guardi nel manuale di rm vedrai che l’opzione -f serve proprio a non chiedere conferma prima di cancellare i vari file.
    Mentre l’opzione -v (verbose) serve a stampare la lista dei file che vengono cancellati.
    L’ho messa proprio per vedere cosa effettivamente viene cancellato.
    Se vuoi che ti venga richiesta la conferma ad ogni file, puoi sostituire la “f” con una “i”.
    Ovvero:
    rm -riv /Volumes/”$diskName”/.*
    C’è naturalmente l’inconveniente che devi stare lì due ore a premere “y”. ;)

    30 marzo 2010 ore 07:12
  6. 6

    Portate pazienza ma ci provo ci provo ho un errore e non essendo assoltamente competente non ne vengo fuori potete aiutarmi ?

    #!/bin/sh
    clear                                   # pulisco la finestra
    echo “Trascina qui la penna USB: ”      # stampo il prompt
    read disk                               # leggo il percorso del disco USB
    diskName=`basename “$disk”`             # ottengo il nome del disco
    rm -rfv /Volumes/”$diskName”/.*         # cancello tutti i file nel disco che iniziano col punto
    diskutil unmount “/Volumes/$diskName”   # smonto il disco USB

    però ottengo :

    Trascina qui la penna USB:      # stampo il prompt
    /Volumes/STORE\ N\ GO
    /Users/nello/Desktop/Espelli Usb.command: line 4: read: ` ’: not a valid identifier
    /Users/nello/Desktop/Espelli Usb.command: line 5:  : command not found
    rm: “.” and “..” may not be removed
    /Volumes//.DS_Store
    Usage: diskutil u[n]mount [force] MountPoint|DiskIdentifier|DeviceNode
    logout

    [Processo completato]

    grazie Nello

    Nello
    17 aprile 2010 ore 10:01
  7. 7

    Ciao a tutti!
    Ho letto questo post un po’ in ritardo e mi scuso se rispondo solo ora! :)
    Devo dire che funziona meglio di Curb, che hai recensito qualche giorno fa, per lo meno per le mie esigenze.
    Però ti/vi chiedo se è possibile alcune modifiche:
    1) il comando così com’è cancella solo i files, mentre le cartelle con il punto davanti non le tocca nemmeno (così come Curb, mi pare): .Spotlight-V100 e .Trashes. Secondo me dovrebbe cancellare anche queste cartelle, per fare una cosa pulita.
    2) Io ho personalizzato l’icona della pendrive e mi pare di capire che tali personalizzazioni risiedono nei files .- e .VolumeIcons.icns (uso sia Tiger che Snow Leopard), quindi sarebbe bello se i comando NON cancellasse questi due files.
    In attesa di una eventuale risposta io provo a studiarmi il man rm, poi ci risentiamo! :)
    Grazie.

    Mandi

    MailMaster C.
    12 maggio 2010 ore 22:59
  8. 8

    Ciao, prendendo spunto da un problema che mi è stato posto, e da questa vostra soluzione, ho pensato di realizzare un’applicazione con Automator, per rendere più immediata la cancellazione dei file e l’espulsione del dispositivo USB.

    http://www.nerthase.com/blog/rimuovere-file-invisibili-da-dispositivi-usb

    Questa soluzione è proposta per chi vuole eliminare tutti i file invisibili creati dal Mac, per non avere fastidi con lettori multimediali.
    Ho comunque messo a disposizione il flusso di lavoro di Automator, in modo da permettere a chiunque di personalizzare l’applicazione in base alle proprie esigenze.

    Spero di essere di aiuto a chi ne ha bisogno.
    Grazie

    5 gennaio 2011 ore 13:51

Scrivi un commento Leggi ed attieniti alle Regole del Blog