Есть ли способ извлечь все внешние жесткие диски из командной строки? (OS X)

Есть ли способ извлечь все смонтированные тома жесткого диска на компьютер OS X из командной строки? Applescript в порядке, если я могу обернуть это в оболочку script.

Ответ 1

В терминале попробуйте:

  • umount -a (Все файловые системы, описанные через getfsent (3), размонтируются.)
  • umount -a (Все текущие смонтированные файловые системы, кроме root unmounted.)

Для получения дополнительной информации см. man umount.

Обновление:

Похоже, вы также можете использовать это:

diskutil unmountDisk /dev/disk*

Не тестировал. Если это не сработает, попробуйте использовать "unmount" вместо "unmountDisk".

О, я также нашел аргумент eject (вместо unmountDisk). Это также может представлять интерес.

Обновление 2:

diskutil eject /dev/* похоже на то, что вы ищете (см. комментарии).

Ответ 2

Существует еще один элегантный способ размонтировать все внешние жесткие диски, не зная точных имен:

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

Чтобы игнорировать сетевые устройства и оптические диски, используйте:

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true and local volume is true and free space is not equal to 0)'

Ответ 3

Я нашел, что это работает для извлечения всех dmg и физических жестких дисков:

find /dev -name "disk[1-9]" -exec diskutil eject {} \;

Ответ 4

Вы также можете использовать diskutil eject /dev/disk2 или любой номер своего устройства, который вы хотите извлечь. Это сработало для меня.

Ответ 5

Я делаю это так:

df | grep Volumes | awk '{ print $1 }' | while read disk; do diskutil unmount "$disk"; done