Bash 脚本;根据驱动器大小处理 macOS 磁盘编号...GREP

Bash 脚本;根据驱动器大小处理 macOS 磁盘编号...GREP

我正在寻找在驱动器上自动编写一些 CoreStorage 命令的脚本。问题是其中一个驱动器是外部的,这意味着它可以显示为从磁盘 2 到磁盘 4 的任何驱动器,而我无法准确猜测。

但是,根据 diskutil 的列表,驱动器始终是 5TB 或 8TB。那么 GREP 向导能否想出一种方法来在 diskutil 列表中搜索 5TB 或 8TB 驱动器,如果找到,则在以下命令中使用该标识符?

我有一些谜题的碎片,但还不足以知道如何搜索 5TB 或 8TB,然后将得到的磁盘编号输入到变量中。

/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 TB 驱动器的磁盘标识符,即 disk0,位于

答案1

假设你的输出看起来像这个例子您可以使用以下方式awk获取值:Disk:

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

这将查找第一行写着1.0 TB5.0 TB8.0 TB的内容,并打印最后一个字段,该字段恰好是磁盘 ID

要将该值保存在变量中,请使用命令替换:

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

现在变量disk_id将包含命令的输出

相关内容