Quiero expulsar todos los discos duros con un comando en la Terminal en lugar de ir al Finder y presionar expulsar en cada unidad. ¿Cómo puedo hacerlo?
Respuestas
¿Demasiados anuncios?Usted puede utilizar el construido AppleScript solución, como se ha mencionado en este hilo y esta página, mediante la adición de este a ~/.bash_profile
:
alias ejectall='osascript -e "tell application \"Finder\" to eject (every disk whose ejectable is true)"'
Para ello será necesario que la concesión del permiso para la Terminal de control del Finder, o se obtendrá este error:
execution error: Not authorised to send Apple events to Finder. (-1743)
Si quieres un puro bash
solución, aquí es una función que se puede llamar con ejectall
. Si cambia el nombre de su disco de inicio o tienen diferentes Máquina del Tiempo de las copias de seguridad, puede que necesite modificar la condición de que los filtros de las unidades.
ejectall() {
total=0
ejected=0
for v in /Volumes/*; do
if [[ $v != *"Macintosh HD" && $v != *"com.apple.TimeMachine"* ]]; then
echo "Ejecting $v..."
diskutil eject "$v"
if [ $? -eq 0 ]; then
ejected=$(($ejected + 1))
fi
total=$(($total + 1))
fi
done
if [ $total -eq 0 ]; then
echo "No drives to eject"
else
msg="$ejected drive(s) ejected"
failed=$(($total - $ejected))
if [ $failed -gt 0 ]; then
msg="$msg, $failed drive(s) failed to eject"
fi
echo $msg
fi
}
Ambos métodos también funcionan para los CDs.
Use diskutil
.
Puede enumerar los dispositivos actuales con diskutil list
, y usar diskutil eject device-name
para expulsar un dispositivo como desde Finder.
Esto irá un paso más allá que simplemente usar umount
, por ejemplo, desconectando un dispositivo USB para que desaparezca el nodo / dev / disk.
Vea man diskutil
para más detalles.