is there a way to eject all external hard drives from the command line? (OS X)

前端 未结 5 684
刺人心
刺人心 2021-02-07 13:41

Is there a way to eject all the mounted hard drive volumes on an OS X computer from the command line? Applescript is OK if I can wrap that in a shell script.

相关标签:
5条回答
  • 2021-02-07 14:21

    I found this to work for ejecting all dmg and physical hard drives:

    find /dev -name "disk[1-9]" -exec diskutil eject {} \;
    
    0 讨论(0)
  • 2021-02-07 14:26

    I do it like this:

    df | grep Volumes | awk '{ print $1 }' | while read disk; do diskutil unmount "$disk"; done
    
    0 讨论(0)
  • 2021-02-07 14:39

    There is another elegant way to unmount all external hard drives without knowing the exact names:

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

    To ignore network mounts and optical disks, use:

    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)'
    
    0 讨论(0)
  • 2021-02-07 14:39

    You can also use diskutil eject /dev/disk2 or whatever your device number is you want to eject. That worked for me.

    0 讨论(0)
  • 2021-02-07 14:43

    In Terminal try:

    • umount -a (All the filesystems described via getfsent(3) are unmounted.)
    • umount -A (All the currently mounted filesystems except the root unmounted.)

    Fore more information see man umount.

    Update:

    Seems like you can also use this:

    diskutil unmountDisk /dev/disk*
    

    Didn't test it, though. If it doesn't work, try to use "unmount" instead of "unmountDisk".

    Oh, I also found the eject argument (instead of unmountDisk). That might also be of interest.

    Update 2:

    diskutil eject /dev/* seems what you are looking for (see comments).

    0 讨论(0)
提交回复
热议问题