ターゲット

ターゲット

ターゲット

ディスク番号を読み取ってマウントコマンドを実行できるシンプルなシングルライナーは何ですか?

1行のコードで、次のタスクが実行されます。

./mountEFI.command disk3 

背景

user@mac~%diskotil リスト

返品

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *128.0 GB   disk0
   1:                        EFI ⁨NO NAME⁩                 104.9 MB   disk0s1
   2:         Microsoft Reserved ⁨⁩                        16.8 MB    disk0s2
   3:       Microsoft Basic Data ⁨NTFS⁩                    127.4 GB   disk0s3
   4:           Windows Recovery ⁨⁩                        525.3 MB   disk0s4

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk1
   1:                        EFI ⁨EFI⁩                     209.7 MB   disk1s1
   2:                 Apple_APFS ⁨Container disk2⁩         1000.0 GB  disk1s2

/dev/disk2 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +1000.0 GB  disk2
                                 Physical Store disk1s2
   1:                APFS Volume ⁨LANCE - Data⁩            60.7 GB    disk2s1
   2:                APFS Volume ⁨LANCE⁩                   15.3 GB    disk2s3
   3:              APFS Snapshot ⁨com.apple.os.update-...⁩ 15.3 GB    disk2s3s1
   4:                APFS Volume ⁨Preboot⁩                 309.8 MB   disk2s4
   5:                APFS Volume ⁨Recovery⁩                620.4 MB   disk2s5
   6:                APFS Volume ⁨VM⁩                      1.1 MB     disk2s6

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *61.5 GB    disk3
   1:                        EFI ⁨EFI_USB⁩                 209.7 MB   disk3s1
   2:                  Apple_HFS ⁨Install macOS Monterey⁩  61.2 GB    disk3s2

だから:

diskutil list | grep '(external, physical)'

返品

/dev/disk3 (external, physical):
     ^   ^
     6   10

目標は、文字6-10を返すことです。ディスク3

1行のコードは、次のような操作を実行する必要があります。

./mountEFI.command disk3 

ディスク番号を読み取ってマウントコマンドを実行できるシンプルなシングルライナーは何ですか?

修正する

diskutil list -plist external physical

返品

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>AllDisks</key>
    <array>
        <string>disk3</string>
        <string>disk3s1</string>
        <string>disk3s2</string>
    </array>
    <key>AllDisksAndPartitions</key>
    <array>
        <dict>
            <key>Content</key>
            <string>GUID_partition_scheme</string>
            <key>DeviceIdentifier</key>
            <string>disk3</string>
            <key>OSInternal</key>
            <false/>
            <key>Partitions</key>
            <array>
                <dict>
                    <key>Content</key>
                    <string>EFI</string>
                    <key>DeviceIdentifier</key>
                    <string>disk3s1</string>
                    <key>DiskUUID</key>
                    <string>5F5C5E00-71B1-4259-B062-95683183898B</string>
                    <key>Size</key>
                    <integer>209715200</integer>
                    <key>VolumeName</key>
                    <string>EFI_USB</string>
                    <key>VolumeUUID</key>
                    <string>0E239BC6-F960-3107-89CF-1C97F78BB46B</string>
                </dict>
                <dict>
                    <key>Content</key>
                    <string>Apple_HFS</string>
                    <key>DeviceIdentifier</key>
                    <string>disk3s2</string>
                    <key>DiskUUID</key>
                    <string>059700E8-2B72-4669-9030-7C783AA398FB</string>
                    <key>MountPoint</key>
                    <string>/Volumes/Install macOS Monterey</string>
                    <key>Size</key>
                    <integer>61186465792</integer>
                    <key>VolumeName</key>
                    <string>Install macOS Monterey</string>
                    <key>VolumeUUID</key>
                    <string>14B0CA5F-27B4-31E3-8096-9235338AFBBD</string>
                </dict>
            </array>
            <key>Size</key>
            <integer>61530439680</integer>
        </dict>
    </array>
    <key>VolumesFromDisks</key>
    <array>
        <string>Install macOS Monterey</string>
    </array>
    <key>WholeDisks</key>
    <array>
        <string>disk3</string>
    </array>
</dict>
</plist>

ベストアンサー1

"/dev/"and more の間の部分が好きなように聞こえる" (external, physical):"ので、次のようになります。

diskutil list | sed -n 's|^/dev/\(.*\) (external, physical)$|\1|p'

cut一部の入力の各行で一定の範囲のバイトを返すことができますが、その入力はパラメータではなく標準入力を通過する必要があります。

diskutil list | grep '(external, physical)' | cut -b 6-10

disk10ただし、この方法は、名前がこのパターンに従わない上記のデバイスまたはブロックデバイスでは失敗します。

前のスペースを削除した各行(アポストロフィ、二重引用符、またはバックスラッシュが含まれていないと仮定)を./mountEFI.commandusingへの別々の呼び出しの引数として渡すことができますxargs

diskutil list |
  sed -n 's|^/dev/\(.*\) (external, physical)$|\1|p' |
  xargs -I DISK ./mountEFI.command DISK

おすすめ記事