ฉันจะบอก OS X ที่ฉันใช้บนบรรทัดคำสั่งได้อย่างไร


68

ฉันมักพบว่าตัวเองเป็น SSHing ในเครื่อง OS X หลายเครื่องและมันจะมีประโยชน์ถ้าฉันสามารถบอกได้ว่าเวอร์ชันของ OS XI นั้นเปิดอยู่เมื่อฉันทำสิ่งนั้น uname -aไม่ได้ผลเนื่องจากรุ่นเคอร์เนลของดาร์วินไม่สามารถเปลี่ยนแปลงได้ตลอดเวลากับระบบอื่น ๆ

คำตอบ:


78

sw_vers

sw_versคำแนะนำของฉันคือการใช้ ตัวอย่างผลลัพธ์ที่ 10.6.4:

> sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.6.4
BuildVersion:   10F569

คำตอบที่แนะนำsystem_profiler | grep 'System Version'คือสิ่งที่ฉันพยายามใช้ในอดีต แต่มันมีปัญหา 2 ข้อ

  1. มันช้าเพราะมันสร้างการถ่ายโอนข้อมูล system_profiler แบบเต็มของเครื่องรวบรวมข้อมูลฮาร์ดแวร์และซอฟต์แวร์ทั้งหมด
  2. ผลลัพธ์ของ system_profiler มีการเปลี่ยนแปลงเมื่อเวลาผ่านไป เช่นเอาต์พุตของgrepสำหรับ 'Serial Number' บน 10.6.4 คือ "Serial Number (ระบบ): ZNNNNNZNZZZ" ในขณะที่ 10.4.11 เป็น "Serial Number: ZNNNNZNZZZZ" - ความสำคัญคือความสามารถในการแยกวิเคราะห์และเพิ่ม " (ระบบ) "ชิ้นส่วนอาจมีปัญหาเว้นแต่คุณคาดหวังว่าจะมีการเปลี่ยนแปลง

1
ฉันจะพลิกมันไป `` `ใช้ sw_vers … --------------------------- คำตอบที่แนะนำsystem_profiler…` ``
ทิม Visher

@TimVisher ตกลง ฉันเพิ่งแก้ไขคำตอบของเขาเพื่อวางไว้ด้านบน
Joshua Pinter

37

วิธีที่ง่ายที่สุดคือ:

$ sw_vers -productVersion
10.6.4

จากhttp://tinyapps.org/blog/mac/201008140700_os_x_version_terminal.html :

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.6.4
BuildVersion:  
10F569
$ sw_vers -productVersion
10.6.4

มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อรีเซ็ตรหัสผ่านในโหมดผู้ใช้คนเดียวเนื่องจากวิธีการที่แตกต่างกันไปขึ้นอยู่กับรุ่นของ OS X ที่กำลังทำงานอยู่


ขอบคุณสำหรับเบนจามินตะโกน! ผมได้ปรับปรุงการโพสต์ที่จะรวมถึงการตรวจสอบที่ออฟไลน์ OS X grep -2 ProductVersion /System/Library/CoreServices/SystemVersion.plistติดตั้งเช่นดังนั้น: Aloha, Miles
Miles Wolbe

8

ลองสิ่งนี้:

 system_profiler  | grep 'System Version'

คำตอบของ Mike Gray ดีกว่านี้ โปรดดูว่า


4
สิ่งที่ Mike Gray พูด

โหมดผู้ใช้คนเดียวsystem_profiler SPSoftwareDataTypeชนะเมื่อsw_versแพ้
devon

5

นี่คือบทความบล็อกพร้อมคำแนะนำวิธีรับเวอร์ชัน Mac OS X ใน Shell Script

OS_VERSION=`/usr/bin/defaults read "$3/System/Library/CoreServices/SystemVersion" ProductVersion`
echo "$OS_VERSION"

1
สิ่งนี้มีประโยชน์มากสำหรับการค้นหารุ่นของระบบปฏิบัติการที่ไม่ทำงานเช่น ไดรฟ์ที่กำลังได้รับการซ่อมแซมหรือเช่นนั้น
ylluminate

3

สามารถใช้เป็นsystem_profiler system_profiler SPSoftwareDataTypeไม่จำเป็นต้อง grep ผ่านเอาท์พุทขนาดใหญ่


สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม เมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด ๆ ; แทนที่จะให้คำตอบที่ไม่จำเป็นต้องชี้แจงจากผู้ถาม - จากการรีวิว
Jeff Schaller

@JeffSchaller ดูเหมือนคำตอบนั้นใช้ได้ มันจะตอบคำถาม
αғsнιη

มันกำหนดเวอร์ชั่นของ OSX หรือไม่
Jeff Schaller

บางทีอาจจะเป็นการแสดงความคิดเห็นของunix.stackexchange.com/a/584/117549 ?
Jeff Schaller

1
ใช่มันจะกลับมาในส่วน "เวอร์ชั่นระบบ" ดูรุ่น OS X จากบรรทัดคำสั่งมันเป็นคำตอบสำหรับฉันแทนที่จะเป็นความคิดเห็น IMO
αғsнιη
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.