ターゲット
ディスク番号を読み取ってマウントコマンドを実行できるシンプルなシングルライナーは何ですか?
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.command
usingへの別々の呼び出しの引数として渡すことができますxargs
。
diskutil list |
sed -n 's|^/dev/\(.*\) (external, physical)$|\1|p' |
xargs -I DISK ./mountEFI.command DISK