有没有办法从命令行获取 OSX 代号(即 Yosemite、El Capitan 等)?我不是在寻找版本信息(例如
sw_vers -productVersion
Run Code Online (Sandbox Code Playgroud)
) 这给出了 10.10 等等 谢谢!
我确信必须有一种更简单、更可靠的方法,但至少您可以sed
通过使用grep
with -o
(仅打印匹配项)和-E
(扩展正则表达式)来完全消除管道:
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf'
Run Code Online (Sandbox Code Playgroud)
但是,这也会返回SOFTWARE LICENSE AGREEMENT FOR OS X
输出的一部分。如果你只想要代号,你可以将它传递给 sed,但它不需要任何使用-E
BSDsed
臭名昭著的可怕标志的反向引用:
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | sed "s/SOFT.*OS X //"
Run Code Online (Sandbox Code Playgroud)
就个人而言,我更喜欢这种awk
方法:
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'OS X ' '{print $NF}'
Run Code Online (Sandbox Code Playgroud)
纯awk
溶液:
awk '/SOFTWARE LICENSE AGREEMENT FOR OS X/' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'OS X ' '{print $NF}' | awk '{print substr($0, 0, length($0)-1)}'
Run Code Online (Sandbox Code Playgroud)
(我确信有一种方法可以在不通过管道连接到额外的 awk 进程的情况下做到这一点,但我不是专业人士。)
归档时间: |
|
查看次数: |
1399 次 |
最近记录: |