1

Я хочу автоматически написать несколько команд CoreStorage на дисках. Проблема в том, что один из дисков является внешним, что означает, что он может быть подключен к системе как что-либо от диска 2 до диска 4, и я не могу с уверенностью предположить.

Диск, однако, всегда будет 5 или 8 ТБ, как указано в diskutil. Так сможет ли мастер GREP найти способ поиска по списку дисководов для дисков объемом 5 или 8 ТБ, и, если он найден, использовать этот идентификатор в следующей команде?

У меня есть несколько кусочков головоломки, но их недостаточно, чтобы узнать, как искать 5 ТБ или 8 ТБ, а затем ввести полученный номер диска в переменную.

/dev/disk0 (internal): 
   #:                       TYPE NAME                    SIZE         IDENTIFIER
   0:      GUID_partition_scheme                         1.0 TB       disk0
   1:                        EFI EFI                     314.6 MB     disk0s1
   2:          Apple_CoreStorage Macintosh HD            900.4 GB     disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB     disk0s3
   4:                  Apple_HFS Golden                  61.0 GB      disk0s4
   5:         Microsoft Reserved                         16.8 MB      disk0s5
   6:       Microsoft Basic Data                         38.0 GB      disk0s6

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE         IDENTIFIER
   0:                  Apple_HFS Mac HD                 +900.0 GB     disk1
                             Logical Volume on disk0s2
                             3CE3A410-049C-42DC-AB48-2191A122F04F
                             Unencrypted

/dev/disk2 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +1.5 TB       disk2
   1:                        EFI EFI                     209.7 MB     disk2s1
   2:                  Apple_HFS Time Machine Backups    1.5 TB       disk2s2

/dev/disk3 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   +1.5 TB       disk3

Выходные данные diskutil выглядят так, как указано выше. У меня нет дисков, на которые я бы хотел ориентироваться, но, скажем, я хочу получить идентификатор диска для накопителя емкостью 1,0 ТБ, который равен disk0 в

1 ответ1

0

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

diskutil list | awk '/(1.0|5.0|8.0) TB/ {print $NF; exit}'

Это будет искать первую строку, которая говорит 1.0 TB или 5.0 TB или 8.0 TB на нем, и распечатать последнее поле, которое, как оказалось, ID диска

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

disk_id="$(diskutil list | awk '/(1.0|5.0|8.0) TB/ {print $NF; exit}')"

теперь переменная disk_id будет содержать вывод команды

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .