Mac的一些使用经验

不定期更新

移动存储的格式问题

  1. NTFS:比较强大,硬盘分区这种格式很普遍,Windows系统里的硬盘都是这种格式。(来回读写频繁,U盘貌似会缩短寿命),它不兼容Mac的系统。这就是为啥很多在Windows系统上用着的移动设备无法连接Mac进行操作的原因。
  2. FAT:微软发明,供MS-DOS使用,几乎所有个人计算机都支持,现在说FAT一般就是说FAT32。缺陷是当文件删除后写入新数据,FAT不会将文件整理成完整片段再写入,长期使用后会使文件数据变得逐渐分散,而减慢了读写速度。碎片整理是一种解决方法,但必须经常重组来保持FAT文件系统的效率。
  3. FAT32:新一代FAT,单文件不能超过4GB
  4. exFAT:也可以叫做FAT64,微软专为闪存(u盘和存储卡)设计,单文件能最大16EB!(目前是256GB),在某些旧设备(如个人数码助理(PDA)和数字相机)无法使用exFAT格式的存储卡,Windows XP SP3之前的旧版Windows暂时不支持exFAT,Linux操作系统需要通过exfat工具支持exFAT,Mac OS X可通过升级至10.6.5来全面支持exFAT
  5. 结论:小U盘就FAT32(在Mac系统里直接选FAT就行了,他会自动选择最新的FAT技术),之后的新的大移动硬盘尽量选择exFAT格式。

默认输入法

大写键的怪异行为

  1. 使用Mac自带的输入法,和输入法相关的设置,在偏好里的“键盘”里
  2. 在“输入源”选项卡里,最下有一个“自动切换输入法”的选项,勾选了的话,就会根据你的习惯,在你进入一个新的可输入的环境的时候,自动帮你切换到你习惯的输入法。
  3. 但是呢,如果你登录一些服务器,服务器没有安装中文包,所以导致输入法强制被切会英文。又因为使用的是默认的输入法,所以是大写键会被切换。
  4. 因此建议把“自动切换输入法”取消。

升级Mac OS X Sierra之后的大写键设置

  1. 在System Preferance里找到键盘设置Keyboard,进入Input Source选项卡
  2. 底下新增了一项:切换苹果默认的中文输入法后,长按和短按大小写按键的效果
  3. 刚更新后,如果不勾选这一项,在一些编辑器/IDE的命令行里,会出现大写键短按直接切换成大写英文输入法的表现
  4. 所以想要维持以前习惯的,就要勾选。之后长按的效果就是切换大写英文。

一些常用的快捷键

  1. 锁屏:shift+control+power
  2. 截屏:(会自动保存到桌面)
    • shift + command + 3全屏
    • shift + command + 4区域
  3. 剪切(文件):复制后,粘贴操作⌘ + v的同时按下
  4. ctrl+空格 唤出的spotlight可以直接拿来当计算器

命令行

  1. 现在Mac自带的terminal可以直接使用command + F组合键唤出搜索,直接搜索所有字符。

一些命令

  1. chmod +x <file>可以授予文件权限,比如chmod +x ./fixs.sh这样之后就可以直接通过.fixs.sh来执行这个文件而不用通过sh .fixs.sh来执行了

Terminal

设置locale

  1. Mac原生Terminal下,command + ,进入设置,-> Profiles -> Advanced
  2. 最下面有一个Set locale environment variables on startup这个选项
  3. 如果勾选,那么从Mac打开一个Terminal之后,不管之后进入什么环境,都会带入你Mac的设置
  4. 坑就在于进入Linux机器的时候,可能会遇到编码问题。所以应该将它关掉。
  5. iTerm2的话没有这个问题,因为iTerm2默认选项是:Set locale environment variables automatically
  6. 但是关掉这个选项之后,Mac原生的Teminal里不能正确的显示中文了。解决方法是在自己的~/.bash_profile里去做设置,(utf8是编码方式,zh_CN或者en_US是字符集,选前者),在source ~/.bash_profile增加:

    1
    2
    export LANG="zh_CN.UTF-8"
    export LC_ALL="zh_CN.UTF-8"

Vi/Vim的显示优化

  1. 复制配置文件到个人配置cp /usr/share/vim/vimrc ~/.vimrc(如果是Linux,则是cp /etc/vimrc ~/.vimrc
  2. 编辑~/.vimrc在最后增加内容,启用“语法高亮、行号显示、自动缩进”

    1
    2
    3
    syntax on
    set nu!
    set autoindent

App无法运行,提示unidentified developer

为什么会有这种情况

  1. 提示信息是:“App can’t be opened because it is from an unidentified developer”
  2. 这个问题不仅在Mac上发生。只要该App的开发者没有将App放在所谓的已知可信的平台上,比如Apple’s App Store,或者 Android’s Play Store。开发者没这么做的原因可能是:
    1. 直接和系统文件交互的,会被App store拒掉。权限申请在plist中会声明,但是只能申请开放的比如相册、通讯录之类的(沙盒机制,不像Android,都直接申请个访问文件权限,权限蛮大的。)
    2. 因为App涉及一些金融的敏感领域,可能不过审(特定时期造成的)
    3. App store上收费问题
  3. 在苹果系统上,阻止这类App的安全功能security feature被称作门卫GateKeeper。
  4. 但这并不意味着无法在Mac上运行未经认证的app。可以暂时绕过或者永久关闭。

暂时绕过GateKeeper

  1. 打开Finder,在Applications目录下找到不能运行的App
  2. 右键点击,选择open,在弹出的warning框里选择open
  3. 当然,这样比较麻烦,因为每一次你都得这样去运行App

禁用GateKeeper

  1. 在使用者有一定鉴别能力,知道哪些app可以信任,哪些不可以信任的时候可以这么做。
  2. System Preferences -> Security & Privacy -> General -> 左下角unlock -> Allow applications downloaded from -> Anywhere
  3. 在之后的版本,隐藏了这个Anywhere,需要我们打开Terminal,输入sudo spctl --master-disable
  4. 如果日后出于安全考虑又想启用GateKeeper:sudo spctl --master-enable
  5. 更新:从MacOS ver10.13.4开始,运行被GateKeeper阻止的App,会提示是否允许,选择“仍然打开”并确认之后也能正常打开App,不用去改上面的设置了。

用户应该有的判断常识

  1. 看开发者,看他们的官方网站、曾经做过的app、以及一些直觉……(you may have to make a gut call)
  2. 上网搜索其他使用者的评论,还能顺便收获一些使用心得。
  3. 看隐私政策Privacy Policy里,特别是涉及你的哪些数据和如何使用你的个人数据的。如果一个App在下载后就开始收集你系统里的敏感数据,并且在没有明显理由的情况下去申请获取这些数据,你就应该避免继续使用它
  4. 避免长期放置这些第三方App,如果很久不使用了,就卸载他们。避免将有价值的数据在非必要的情况下泄露给这些App
  5. 但是说到底,大部分时候还是靠直觉your gut feeling,或者你了解这个开发者,或者这个App是来自值得信任的社交圈子的推荐。

Bug

在一时弄不明白问题原因的情况下,先试试重启电脑是最经济且有效率的。

休眠后声音输出不正常

  1. 原因:Bug,系统核心音频守护进程(coreaudiod)出了问题。
  2. 重启当然能搞定,但没必要
  3. 打开活动监视器Activity Monitor
  4. 找到coreaudiod这个进程(可以在右上角直接搜索audiod,比较快找到)
  5. 结束这个进程(可以点击活动指示器左上角的x),它会自动重启,声音就回来了。

外接显示器的微信截屏Bug

  1. 如果两个显示器是对角相连的摆放,用微信的快捷键截图的时候,会发生屏幕变成缩微图的情况——就是看到外界屏幕和主屏幕被缩小到一个屏幕里,以摆放的对角方式排列
  2. 结果就是无法截出能看清内容的图片
  3. 解决方法:不要把两个屏幕角对角相连的摆放,两个角要稍微错开一点。(专治非要把角对的正正的强迫症)

迁移后要重新配置开发环境

  1. Mac提供了很方便的迁移工具,在Application里Others里,叫Migration Assistant(迁移助手)
  2. 但是迁移并不是完美无缺的,作为程序员会发现许多,比如openssl。我是在想要运行Nginx的时候看到如下报错:

    1
    2
    3
    dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
    Referenced from: /usr/local/bin/nginx
    Reason: image not found
  3. 解决的办法就是重装openssl:brew uninstall openssl --force(不加force参数,brew也会提醒你加的)。

  4. brew install openssl,然后就可以见到如下提示了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    A CA file has been bootstrapped using certificates from the SystemRoots
    keychain. To add additional certificates (e.g. the certificates added in
    the System keychain), place .pem files in
    /usr/local/etc/openssl/certs

    and run
    /usr/local/opt/openssl/bin/c_rehash

    openssl is keg-only, which means it was not symlinked into /usr/local,
    because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.

    If you need to have openssl first in your PATH run:
    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

    For compilers to find openssl you may need to set:
    export LDFLAGS="-L/usr/local/opt/openssl/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl/include"

    For pkg-config to find openssl you may need to set:
    export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"