6

有谁知道从终端确定或收集此信息的任何可能方法(以便在 bash shell 脚本中使用)?

在我的 Macbook Air 上,通过 GUI 我可以转到“关于此 Mac”>“显示器”,它告诉我:内置显示器,13 英寸(1440 x 900)

我可以从 system_profiler 命令获得屏幕分辨率,但不能获得“13 英寸”位。我也试过 ioreg 没有成功。从分辨率计算屏幕尺寸是不准确的,因为这可以由用户更改。

有没有人设法做到这一点?

4

4 回答 4

1

我认为您只能获得包含尺寸参考的显示型号名称:

ioreg -lw0 | grep "IODisplayEDID" | sed "/[^<]*</s///" | xxd -p -r | strings -6 | grep '^LSN\|^LP'

将输出如下内容:

LP154WT1-SJE1

这取决于显示器制造商。但正如您所见,此型号名称字符串中的前三个数字暗示显示尺寸:154 == 15.4''

编辑

找到了一个简洁的解决方案,但它需要互联网连接:

curl -s http://support-sp.apple.com/sp/product?cc=`system_profiler SPHardwareDataType | awk '/Serial/ {print $4}' | cut -c 9-` |
sed 's|.*<configCode>\(.*\)</configCode>.*|\1|'

希望有帮助

于 2014-07-26T15:45:24.097 回答
0

我发现似乎有几个不同的 Apple URL 可用于检查此信息。其中一些似乎适用于某些序列号,而另一些则适用于其他机器。例如:

https://selfsolve.apple.com/wcResults.do?sn= $Serial&Continue=Continue&num=0 https://selfsolve.apple.com/RegisterProduct.do?productRegister=Y&country=USA&id= $Serial http://support- sp.apple.com/sp/product?cc= $serial(最后 4 位数字) https://selfsolve.apple.com/agreementWarrantyDynamic.do

但是,前两个 URL 似乎对我有用。也许是因为我正在查找的机器在英国而不是美国,或者可能是因为它们的年龄?

无论如何,由于在命令行上使用 curl 运气不佳(Apple 网站重定向,有时会多次重定向到替代 URL,并且 -L 选项似乎没有帮助),我的解决方案是将一个(相当混乱) PHP 脚本,它使用 PHP cURL 来检查两个 URL 的连续剧,然后执行一些正则表达式技巧来报告我需要的信息。

一旦在我的网络服务器上,我现在可以从终端命令行卷曲它,它可以 100% 地恢复体面的结果。我是 PHP 新手,所以我不会因为将脚本以当前状态发布而让自己感到尴尬,但如果有人有兴趣,我很乐意整理并在这里分享(尽管不可否认,这是一个相当冗长的解决方案应该是一个非常简单的查询)。这个信息真的应该简单地在 system_profiler 中提供。由于它可以通过 System Information.app 获得,我看不出为什么不这样做的原因。

于 2014-07-28T10:39:56.420 回答
0

您好,我的 bash 脚本在 GNU/Linux 下:我按照以下步骤保存

# Resolution Fix
echo `xrandr --current | grep current | awk '{print $8}'` >> /tmp/width
echo `xrandr --current | grep current | awk '{print $10}'` >> /tmp/height
cat /tmp/height | sed -i 's/,//g' /tmp/height
WIDTH=$(cat /tmp/width)
HEIGHT=$(cat /tmp/height)
rm /tmp/width /tmp/height
echo "$WIDTH"'x'"$HEIGHT" >> /tmp/Resolution
Resolution=$(cat /tmp/Resolution)
rm /tmp/Resolution
# Resolution Fix

并在从某些应用程序/游戏退出后在同一个脚本中进行恢复

在一些 SO 这直接执行命令

ResolutionRestore=$(xrandr -s $Resolution)

但是如果不执行,用这个调用变量来执行变量内容

$($ResolutionRestore)

还有另一种方法,您可以尝试以下方法,例如

RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//')
VRES=$(echo $RESOLUTION | sed 's/.*x//')
HRES=$(echo $RESOLUTION | sed 's/x.*//')
于 2014-10-19T20:01:44.643 回答
0

下一个脚本:

model=$(system_profiler SPHardwareDataType | \
/usr/bin/perl -MLWP::Simple -MXML::Simple -lane '$c=substr($F[3],8)if/Serial/}{
print XMLin(get(q{http://support-sp.apple.com/sp/product?cc=}.$c))->{configCode}')

echo "$model"

将打印例如:

MacBook Pro (13-inch, Mid 2010)

或者没有 perl 但更多命令分叉的相同:

model=$(curl -s http://support-sp.apple.com/sp/product?cc=$(system_profiler SPHardwareDataType | sed -n '/Serial/s/.*: \(........\)\(.*\)$/\2/p')|sed 's:.*<configCode>\(.*\)</configCode>.*:\1:')
echo "$model"

它是通过序列号从苹果网站在线获取的,因此您需要互联网连接。

于 2014-07-27T07:59:14.380 回答