Jawaban:
The system_profiler perintah memberikan jawaban langsung yang mudah dibaca manusia (dengan asumsi Anda berada di 10.3 atau yang lebih baru), tetapi Anda juga dapat menggunakan ioreg untuk tugas seperti itu umumnya selesai lebih cepat.
system_profiler SPHardwareDataType
adalah tipe data yang berisi informasi perangkat keras inti, dan Anda dapat menggunakan grep atau awk untuk menguraikan lebih lanjut sesuai kebutuhan:
system_profiler SPHardwareDataType | awk '/Serial/ {print $4}'
atau
ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'
Kedua perintah tersebut memerlukan waktu antara 0,5 dan 0,2 detik untuk dijalankan pada SSD Mac modern, jadi jika Anda ingin mengoptimalkan perintah dan menghapus " Anda dapat memiliki jawaban Anda dalam 0,005 atau lebih:
ioreg -c IOPlatformExpertDevice -d 2 | awk -F\" '/IOPlatformSerialNumber/{print $(NF-1)}'
Ini juga berfungsi ...
ioreg -l | grep IOPlatformSerialNumber
awk
versi untuk menghapus 600 baris ioreg
output yang tidak ingin kita lihat. (juga - jangan pedulikan pemilih yang rendah - beberapa orang benar-benar tidak suka jawaban pendek atau lupa bahwa tidak semua orang tahu bagaimana grep dan awk bekerja.)
Untuk membuatnya lebih mudah diingat, gunakan pencarian case sensitive:
ioreg -l | grep -i serialnumber | grep -i platform
Contoh C ++:
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>
std::string
getSerialNumber()
{
CFStringRef serial;
char buffer[32] = {0};
std::string seriaNumber;
io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,
IOServiceMatching("IOPlatformExpertDevice"));
if (platformExpert)
{
CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,
CFSTR(kIOPlatformSerialNumberKey),
kCFAllocatorDefault, 0);
if (serialNumberAsCFString) {
serial = (CFStringRef)serialNumberAsCFString;
}
if (CFStringGetCString(serial, buffer, 32, kCFStringEncodingUTF8)) {
seriaNumber = buffer;
}
IOObjectRelease(platformExpert);
}
return seriaNumber;
}
ioreg
hampir instan di MBPR saya.system_profiler
meskipun lebih cepat di mac ini daripada yang lebih tua saya jauh lebih lambat.