Mi è capitato di dover inserire in uno script, dopo vari spostamenti e copie di file, un comando che smontasse e rimuovesse in sicurezza un'unità USB.
Il comando, da terminale, per "smontare" e "rimuovere in sicurezza" un'unità USB è questo:
udisks --unmount /media/percorso_unita && udisks --detach /dev/sdc
Dove /media/percorso_unita è il punto di mount e /dev/sdc (nel mio caso) è il nome del file system.
Utilizza udisks, quindi se non presente va installato.
Basta, quindi, inserire tale comando nello script che dobbiamo creare... però...
Se inseriamo un'unità USB e lasciamo fare al sistema, il Punto di Mount assegnato automaticamente dipenderà dal nome che abbiamo asssegnato al dispositivo, mentre il file system dipenderà dal numero di dispositivi inseriti e soprattutto dalla sequenza di inserimento degli stessi.
Potrebbe essere per esempio /dev/sdc oppure /dev/sdd ecc.
Dobbiamo, quindi, per prima cosa procurarci il Punto di Mount ed il File System dell'unità USB che ci interessa.
Possiamo farlo con uno dei tanti comandi disponibili in Linux, ad esempio con il comando df.
Fra i risultati, nell'ultima colonna, identifichiamo il punto di mount del dispositivo che ci interessa.
A questo punto basta lanciare nuovamente il comando in questo modo:
df "/media/percorso_unita" | tail -1 | awk '{ print $1 }'
per farci restituire solo la stringa relativa al file system (con l'aggiunta però del numero della partizione).
Il risultato sarà del tipo:
/dev/sdc1
ora basta togliere il numero della partizione (in questo caso 1) e abbiamo anche la stringa relativa al File System da assegnare alla seconda parte del comando (--detach), ossia /dev/sdc.
Questo, quindi, il listato dello script:
#!/bin/bash punto_mount=$(df "/media/percorso_unita" | tail -1 | awk '{ print $1 }') echo $punto_mount let lunghezza=${#punto_mount}-1 f_system=${punto_mount:0:$lunghezza} echo $f_system udisks --unmount "$punto_mount" && udisks --detach "$f_system"
Sostituire, ovviamente, nella prima riga "/media/percorso_unita" con il punto di mount del dispositivo USB che si desidera rimuovere.
Il nome del File System viene ricavato nei comandi successivi come spiegato sopra.