2012-05-26 09:09:09 +0000 2012-05-26 09:09:09 +0000
61
61

Как получить путь крепления USB-устройства на OSX?

У меня есть сценарий резервного копирования, который копирует некоторые данные на USB-устройство. Проблема заключается в том, что иногда OSX меняет ожидаемый путь монтирования. Например, если какой-то файл заблокирован по ожидаемому пути монтирования, OSX монтирует его по другому пути. USB устройство под названием ‘BACKUP’ можно монтировать в /Volumes/BACKUP-1 вместо /Volumes/BACKUP.

Есть ли способ узнать текущий путь монтирования USB устройства в OSX Terminal? Что-то вроде ‘mount_path BACKUP’ (команда фальшивая), который затем возвращает ‘/Volumes/BACKUP-1’ или ничего, если устройство не было смонтировано?

Ответы (8)

72
72
72
2012-05-26 09:56:13 +0000

Следующие команды показывают информацию о смонтированных томах:

  • Известный Unix mount, показывающий, например, /dev/disk5s3, смонтированный на /Volumes/Foo
  • diskutil list, показывает обзор всех дисков и томов
  • diskutil info /dev/disk5s3, показывает информацию об этом томе, включая Volume UUID, которая может быть использована для уникальной идентификации этого тома.

Вы можете сделать запрос diskutil info, используя UUID тома:

$ diskutil info DEC8759E-F77D-3EAE-B3EB-B6438F1AA428 | grep 'Mount Point'
   Mount Point: /Volumes/DroboOne

Вывод команды Sample в моей системе:

$ mount
/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
localhost:/bNqIvVr1ZdFBdf19Io81Q4 on /Volumes/MobileBackups (mtmfs, nosuid, read-only, nobrowse)
/dev/disk4 on /Volumes/MyBook (hfs, local, nodev, nosuid, journaled)
/dev/disk5s3 on /Volumes/DroboOne (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk7s3 on /Volumes/DroboTwo (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk6s3 on /Volumes/DroboThree (hfs, local, nodev, nosuid, journaled, noowners)

$ diskutil list
/dev/disk0
   #: TYPE NAME SIZE IDENTIFIER
   0: GUID_partition_scheme *256.1 GB disk0
   1: EFI 209.7 MB disk0s1
   2: Apple_CoreStorage 240.0 GB disk0s2
   3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_HFS Servus10 HD *239.7 GB disk1
/dev/disk2
   #: TYPE NAME SIZE IDENTIFIER
   0: GUID_partition_scheme *3.0 TB disk2
   1: EFI 209.7 MB disk2s1
   2: Apple_CoreStorage 3.0 TB disk2s2
   3: Apple_Boot Boot OS X 134.2 MB disk2s3
/dev/disk4
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_HFS MyBook *3.0 TB disk4
/dev/disk5
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_partition_scheme *2.2 TB disk5
   1: Apple_partition_map 32.3 KB disk5s1
   2: Apple_HFS DroboOne 2.2 TB disk5s3
/dev/disk6
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_partition_scheme *2.2 TB disk6
   1: Apple_partition_map 32.3 KB disk6s1
   2: Apple_HFS DroboThree 2.2 TB disk6s3
/dev/disk7
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_partition_scheme *2.2 TB disk7
   1: Apple_partition_map 32.3 KB disk7s1
   2: Apple_HFS DroboTwo 2.2 TB disk7s3

$ diskutil info /dev/disk5s3
   Device Identifier: disk5s3
   Device Node: /dev/disk5s3
   Part of Whole: disk5
   Device / Media Name: Untitled

   Volume Name: DroboOne
   Escaped with Unicode: DroboOne

   Mounted: Yes
   Mount Point: /Volumes/DroboOne
   Escaped with Unicode: /Volumes/DroboOne

   File System Personality: Journaled HFS+
   Type (Bundle): hfs
   Name (User Visible): Mac OS Extended (Journaled)
   Journal: Journal size 172032 KB at offset 0x4001000
   Owners: Disabled

   Partition Type: Apple_HFS
   OS Can Be Installed: No
   Media Type: Generic
   Protocol: FireWire
   SMART Status: Not Supported
   Volume UUID: DEC8759E-F77D-3EAE-B3EB-B6438F1AA428

   Total Size: 2.2 TB (2198888927232 Bytes) (exactly 4294704936 512-Byte-Blocks)
   Volume Free Space: 169.4 GB (169412173824 Bytes) (exactly 330883152 512-Byte-Blocks)
   Device Block Size: 512 Bytes

   Read-Only Media: No
   Read-Only Volume: No
   Ejectable: Yes

   Whole: No
   Internal: No
``` * * 

0x1&
10
10
10
2012-10-26 20:32:46 +0000

А как же эта команда:

df -lH | grep "Filesystem"; df -lH | grep "/Volumes/*"

В столбце “Mounted on” вы получаете все точки монтирования всех устройств, монтируемых на "/Volumes", которые в моём случае почти всегда являются USB устройствами ;-)

Команды grep в основном пропускают жесткий диск, смонтированный на "/".

В терминале OSX Snow Leopard я использую его для быстрого обзора Mount Points подключенных в данный момент USB-устройств. Если вас интересуют только Mount Points, а не все остальные параметры как UUID и т.д., то, на мой взгляд, это будет более прямой путь, чем "diskutil" со всей его информацией.

2
2
2
2015-12-29 11:14:55 +0000

Я извлекаю его из переменной:

media=Я извлекаю его из переменной: 

df | grep "media" | awk '{print $6}'Я извлекаю его из переменной: 


или

media=$(df | awk '/media/ {print $6}')

Команда df перечисляет разделы, результирующий вывод вывод выводится как ввод в команду grep, которая фильтрует и хранит только строки, содержащие словоноситель, который затем выводится в команду awk, которая хранит только 6-й столбец ее одной строки.

1
1
1
2019-05-11 12:18:33 +0000

Просто старый добрый diskutil. Это не Linux, где вы, вероятно, можете заглянуть в /sys или что-то вроде того.

diskutil info "$VolumeName" | grep "Mount Point" | tr " " "\n" | tail -1
0
0
0
2015-02-25 15:53:57 +0000

Это то, что я использую в своих сценариях оболочки в OS X

df | awk '{print $6}' | grep -Ex "/Volumes/myvolume"
```.
0
0
0
2012-05-26 12:33:15 +0000

Я бы просто использовал для этого грудку. Здесь на Super User: Mac Lion: fstab устарел. Так что же его заменит, чтобы предотвратить монтирование раздела?

0
0
0
2012-09-26 09:25:39 +0000

В итоге я использовал этот бэш-скрипт :

#!/bin/sh
#
# Retrieves the mount point of an OSX volume name or UUID.
# @param $1 Name of the volume or UUID of the volume.
# @return returns the mount path or an empty string if the volume is not mounted. 
#
diskutil info $1 | grep 'Mount Point' | cut -d : -f 2 | sed 's/^ *//g' | sed 's/ *$//g';
-1
-1
-1
2017-04-27 13:40:38 +0000

Это может сработать лучше:

df -lH | grep -E "*putinyourvolumelabel*$" | awk '{print $1}''