/dev/diskNNだけを取り出したい
% ls /dev/disk[0-9]*
/dev/disk0 /dev/disk1s1 /dev/disk3s1 /dev/disk4s1 /dev/disk7s3
/dev/disk0s1 /dev/disk1s2 /dev/disk3s1s1 /dev/disk5 /dev/disk8
/dev/disk0s2 /dev/disk1s3 /dev/disk3s2 /dev/disk5s1 /dev/disk8s1
/dev/disk0s3 /dev/disk1s4 /dev/disk3s3 /dev/disk6 /dev/disk9
/dev/disk1 /dev/disk2 /dev/disk3s4 /dev/disk6s1 /dev/disk9s1
/dev/disk10 /dev/disk2s1 /dev/disk3s5 /dev/disk7
/dev/disk11 /dev/disk2s2 /dev/disk3s6 /dev/disk7s1
/dev/disk11s1 /dev/disk3 /dev/disk4 /dev/disk7s2
/dev/diskXsYも付いてきてしまう
シェルのワイルドカード指定だけでは無理そうなので、grepの力を借りる
% ls /dev/disk* | grep -v 's[0-9]'
/dev/disk0
/dev/disk1
/dev/disk10
/dev/disk11
/dev/disk2
/dev/disk3
/dev/disk4
/dev/disk5
/dev/disk6
/dev/disk7
/dev/disk8
/dev/disk9
取れてはいるが、並びが気に入らないから ソートする
% ls /dev/disk* | grep -v 's[0-9]' | sort -V
/dev/disk0
/dev/disk1
/dev/disk2
/dev/disk3
/dev/disk4
/dev/disk5
/dev/disk6
/dev/disk7
/dev/disk8
/dev/disk9
/dev/disk10
/dev/disk11
取れたが、
ホントは、物理ディスクだけ取り出したい
lsでは無理だからdiskutilを使う(最初から知ってたろ!!)
$ diskutil list | grep 'physical' | cut -d' ' -f1
/dev/disk0
/dev/disk6
/dev/disk7
3つ取れた。PC構成と一致している
マウントしているボリュームのリストは、次のSwiftコードでも取得できる
MountedVolumes.swift
import Cocoa
if let session = DASessionCreate(kCFAllocatorDefault) {
if let mountedVolumeURLs = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil) {
print("Whole Device \tVolume Device \tVolume Path")
let result = mountedVolumeURLs.compactMap { volumeURL in
if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volumeURL as CFURL), let bsdName = DADiskGetBSDName(disk),
let wholeDisk = DADiskCopyWholeDisk(disk), let wholeName = DADiskGetBSDName(wholeDisk) {
"/dev/\(String(cString: wholeName))\t/dev/\(String(cString: bsdName))\t\(volumeURL.path)"
} else { nil }
}
print(result.sorted { $0.compare($1, options: .numeric) == .orderedAscending }.joined(separator: "\n"))
} else {
print("No Found Volumes.")
}
}
実行
% swift MountedVolumes.swift
Whole Disk Volume Device Volume Path
/dev/disk1 /dev/disk1s1 /System/Volumes/iSCPreboot
/dev/disk1 /dev/disk1s2 /System/Volumes/xarts
/dev/disk1 /dev/disk1s3 /System/Volumes/Hardware
/dev/disk3 /dev/disk3s1s1 /
/dev/disk3 /dev/disk3s2 /System/Volumes/Preboot
/dev/disk3 /dev/disk3s4 /System/Volumes/Update
/dev/disk3 /dev/disk3s6 /System/Volumes/VM
/dev/disk5 /dev/disk5s1 /Library/Developer/CoreSimulator/Volumes/iOS_23B80
/dev/disk6 /dev/disk6s1 /Volumes/RTL9210B
/dev/disk8 /dev/disk8s1 /Volumes/WD-BLACK-2
/dev/disk9 /dev/disk9s1 /Volumes/WD-BLACK-1
/dev/disk11 /dev/disk11s1 /Volumes/Backup of Mac-mini-M4pro
%
論理Diskは取れた。物理Diskの取り方が知りたい・・・
つづく。。。