Wie finde ich die Mac OS X-Version im Terminal heraus?

150

Ich weiß, wie ich die Mac OS X-Version über die GUI finde: Apple Menu (top left) > About This Mac

Gibt es einen Terminal-Befehl, der mir die Mac OS X-Version anzeigt?

Željko Filipin
quelle

Antworten:

211

Sie haben einige Möglichkeiten:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Beide tun, was Sie brauchen, und haben ein Ausgabeformat, das analysiert werden kann (wenn Sie danach suchen).

delfuego
quelle
3
Der erste gibt Ihnen nur die Betriebssystemversion (dh "10.7.5"). Die zweite Version enthält viele zusätzliche Informationen, z. B. 32/64-Bit.
Kent
1
Schön! Ich wurde dazu gebracht, nach lsb_releaseetwas in dieser Richtung zu suchen . Nie hätte ich diese Skripte gesehen. : D
Alastair
7

Der Befehl sw_verszeigt die Version.

Für ältere Mac OS finden Sie nützliche Informationen in Wikipedia .

EdmundsZ
quelle
4

Wenn Sie sich nur für die Hauptversion (10.10, 10.9) interessieren, können Sie dies tun

MAJOR_MAC_VERSION=$(sw_vers -productVersion | awk -F '.' '{print $1 "." $2}')

Ich benutze dies in einigen Skripten, die unterschiedliche Aufgaben ausführen müssen, wenn sie unter 10.8.x, 10.9.x und jetzt 10.10 ausgeführt werden.

Joe Block
quelle
3
Einfacher:sw_vers -productVersion | cut -d '.' -f 1,2
Waldyrious
2

Wenn Sie die Versionsnummer von macOS basierend auf der semantischen Versionierung für die Skriptlogik aufteilen möchten, finden Sie hier einen kleinen Ausschnitt des von mir verwendeten Codes

product_version=$(sw_vers -productVersion)
os_vers=( ${product_version//./ } )
os_vers_major="${os_vers[0]}"
os_vers_minor="${os_vers[1]}"
os_vers_patch="${os_vers[2]}"
os_vers_build=$(sw_vers -buildVersion)

# Sample semver output
echo "${os_vers_major}.${os_vers_minor}.${os_vers_patch}+${os_vers_build}"
# 10.12.6+16G29

Sie können diese Variablen in der Skriptlogik verwenden, um je nach MacOS-Version verschiedene Befehle auszuführen. Dadurch wird die Steuerung bis zur Patch- oder Build-Version etwas präziser.

# Sample bash code
if [[ ${os_vers_minor} -ge 11 ]]; then
    DMG_FORMAT=ULFO
elif [[ ${os_vers_minor} -ge 4 ]]; then
    DMG_FORMAT=UDBZ
else
    DMG_FORMAT=UDZO
fi
n8felton
quelle