设为首页 收藏本站
查看: 711|回复: 0

[经验分享] Mac OS X: 偏好Preferences基础(2)

[复制链接]

尚未签到

发表于 2016-5-15 11:59:02 | 显示全部楼层 |阅读模式
深入理解偏好文件:
位置:
  系统和应用程序的偏好设置文件的存放,在Mac OS X系统中可以归为两个范畴,一个是系统范畴,一个是用户范畴.

系统范畴内储存的是系统的或者是系统全局的偏好设置,这一点要和用户范畴对比来说,用户范畴是针对不同用户的,用户自己设置的偏好。

具体来说,一般地,系统范畴的储存在/Library/Preferences/目录里,而用户范畴的储存在~/Library/Preferences/目录里(注1).
注1: 在系统里面~符号代表用户的home目录,比如用户student的home目录在/Users/student,这时 ~就等于/Users/student,而~/Library/Preferences/就是/Users/student/Library/Preferences/.

两种类型的plist文件

  • 硬件特定位置(ByHost Preference)
  Mac系统支持一种特定硬件的偏好设置,这些偏好文件储存在ByHost目录中,用户可以在自己的home目录的~/Library/Preferences/ByHost/里面,对于不同的系统(软件和硬件),Mac OSX系统或应用程序可能会将偏好设置文件储存在ByHost里面,这样这个文件中涉及的所有设置都只是相关于这个计算机本身。

ByHost偏好设置文件都有一个特殊的文件名以示和本系统硬件相关,在Mac OS X 10.5之前的版本,系统使用的偏好设置文件名是在普通文件名中加入网卡的MAC地址来区别的,比如:
com.apple.screensaver.001122334455.plist就是用户设定屏幕保护的偏好配置。
而在Mac OS X10.5之后,为了可以更好地标示系统的唯一性,它使用系统的UUID来替换原来MAC地址的内容,比如,上面同样的屏幕保护的偏好配置,我的是:com.apple.screensaver.27074F01-7A93-5859-BAF3-0EB138E001D3.plist

为什么一定要使用ByHost配置呢?有些程序的偏好设置的确可以归结为与硬件相关,有些是为了程序的特性。除了上面提到的屏幕保护程序外,还有比如ImageCapture使用那个程序的设置就是ByHost的,无论打开ImageCapture.app还是iPhoto.app程序,在它们的Preferences里面都有一个选项是下载照片使用哪个程序,见下图就是ImageCapture.app的Preferences的截图:

  里面设置使用iPhoto,如果没有设定值,就显示no application,Mac OS X系统就是靠这个偏好配置文件来启动对应程序的.到ByHost中就可以看到叫做:com.apple.ImageCapture.27074F01-7A93-5859-BAF3-0EB138E001D3.plist,它的内容在Property List Editor.app中显示为下图:

  
再例如,控制当前显示所支持的分辨率个数的信息,也是存储在ByHost里面,这一点比较容易理解。下图是显示10个分辨率的选项:


  
它的plist文件显示如下:

  
还有一种用处,如果一个程序的许可证是用户只能安装在一台机器上使用,这样ByHost的偏好配置就是一种可以方便使用的机制, 比如有版权保护的程序,例如iTunes,需要保存本机本用户的唯一标识,并与版权信息共同制作一个签名,这样防止盗版。

如何找到这个UUID呢?在Terminal中执行下面的命令:
ioreg -d2 -c IOPlatformExpertDevice

  
在一台iMac上可以看到下面的内容:
+-o iMac8,1 <class IOPlatformExpertDevice, registered, matched, active, busy 0, retain 23>
{
"IOBusyInterest" = "IOCommand is not serializable"
"IOInterruptControllers" = ("io-apic-0")
"IOPlatformSerialNumber" = "YMXXXXXXXXX"
"clock-frequency" = <005a6b3f>
"version" = <"1.0">
"product-name" = <"iMac8,1">
"IOInterruptSpecifiers" = (<0900000005000000>)
"board-id" = <"Mac-F226BEC8">
"model" = <"iMac8,1">
"serial-number" = <5xxxx200000000000000000000xxxxxxxxxxx4dxx5axxxx00000000000000000000000000000>
"manufacturer" = <"Apple Inc.">
"IOPlatformArgs" = <00c0xxx00050exxxxxxeef0000000000>
"name" = <"/">
"IOPlatformUUID" = "FXXXXXX5-XXXX-XXXX-XXXX-82XXXXXXXX34"
"compatible" = <"iMac8,1">
"IOPolledInterface" = "SMCPolledInterface is not serializable"
"system-type" = <01>
}

  
从上面的内容可以找到一行叫"IOPlatformUUID"的,这个就是了,为了可以一次找到,运行下面的命令
ioreg -rd1 -c IOPlatformExpertDevice | grep "IOPlatformUUID"

  
这个UUID只有在Mac OS X 10.5以上版本的系统中猜支持,另外一个问题是,并不是所有的硬件系统都支持,比如下面是一个较老的版本的iMac系统(2007),它的UUID前面部分是"00000000-0000-1000-8000" 后面根着的是网卡MAC地址,在这样的系统中,就不使用这个UUID作为标示了,而是沿用旧的方法,直接使用MAC地址.
"IOPlatformUUID" = "00000000-0000-1000-8000-00XXXXXXXX20"

  
在Mac OS X 10.5以前的系统中,同样支持这个命令ioreg,但是不支持-rd1或者-d2的选项。

  • 全局偏好位置(Global Preference)
  全局偏好文件是一个特殊的plist文件,存在于系统和用户范畴内,但是在Finder出口中一般看不到,到Terminal中,可以找到/Library/Preferences/.GlobalPreferences.plist或者~/Library/Preferences/.GlobalPreferences.plist两个文件. 它们定义系统或者用户全局的系统参数,比如时区等.
常用工具

常用图形工具:
  Property List Editor:首选当然是苹果开发工具中的这个应用程序,免费而且是主要工具.
PlistEdit:可以打开处理文本和二进制文件,并以原来的格式保存,
PlistEdit Pro:收费软件,特点是XML明码和树状结构同时显示.
PrefEdit:方便查找plist文件,2.0版本开始收费, 1.2的还是免费
命令行工具:
  plutil:主要用来检查plist文件的语法,并将plist文件在Text和Binary之间转换.
defaults: 用于操作plist文件, 但是操作多层属性时有局限;10.5之后都默认将文本格式转化为Binary格式, 这样可以提高系统读取速度.
PlistBuddy: 是一个比defaults更加灵活的工具,可以任意编辑多层的属性,但是不是OS X自带的.
  
  Tony Liu
  June 26, 2009 Calgary

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-217264-1-1.html 上篇帖子: Mac OS X 上用 otool 代替 ldd 下篇帖子: Mac OS X 下 App 的卸载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表