当前位置:   article > 正文

如何优雅地使用 macOS

exiv2 macos

当时写这篇文章的时候才接触 mac 没多久,使用快两年之后,再次修订了本文。

0x00 前言

谈及 macOS , 很多人喜欢和 Win 比个高下。在我看来, Win 虽在非编程类生态和易用性比 Mac 要好很多,可专业人士之所以专业是因为他能挑选适合的武器发挥最大的效用,不是吗?

适合自己的,能让自己用最大效率生产或者是娱乐的,才是更好的工具。

Win 的优点如下:

  • 优良的兼容性。
  • 由于出自于什么都爱做的微软公司,从整体来说,VS,.NET, 游戏性,兼容性,性能,新手上手速度来说,都是遥遥领先 Mac 的。

Win 的缺点如下:

  • 微软的战线实在是拉的太长,什么都想做,什么都想垄断。于是,与之服务密切相关的公司也就受到了 MS 的牵制。这对大公司来说,几乎是不能够忍受的行为。硅谷的公司使用微软服务的也就接近 5%(可能有误差)。
  • 糟糕的终端环境(DOS)和无法与、*nux 世界的脚本友好相处使得系统的可定制性和进阶操作性大大降低。
  • 虽然有 Everything,TotalCMD,AHK 这种神级辅助工具可以满足定制要求。但由于过高的学习成本(哈哈哈,混乱也是学习成本之一,AHK 语言真的很混乱啊,TC 实在是太不人性化了)。
  • Python 的环境配置实在是太头疼了

Win 的缺点就是我切到 Mac 上面的原因。

macOS 的优点如下:

  • Mac 的好在于终端和美观的图形的结合。适合不是微软技术栈和重度 Office 的用户。
  • *nux 应用的方便以及非常容易与脚本文件配合出强大的组合技能。
  • 反观 Win 上,则这种组合技能则在环境配置上和操作流畅度上差了很多。

macOS 的缺点如下:

  • 娱乐项目实在是少的要死。Metal 和 DirectX 相差不是一点点。
  • 软件和有些少的不只一点点。

本文从下面几处入手,分别从下面几个角度介绍了 macOS

  1. ▼ 如何优雅地使用 macOS
  2. 0x00 前言
  3. ▼ 0x01 系统内置
  4. 1.1 系统设置
  5. 1.2 自带软件
  6. 1.3 快捷键与触摸板
  7. ▼ 0x02 必备软件
  8. 2.1 必备软件 之 日常必备
  9. ▼ 2.2 必备软件 之 开发必备
  10. 2.2.1 GUI 应用
  11. 2.2.2 CMD 命令
  12. ▼ 2.3 必备软件 之 编程语言
  13. 2.3.1 Shell
  14. 2.3.2 Python
  15. ▼ 0x03 踩坑史
  16. ▼ 3.1 日常类
  17. 01. 时间机器无法完成备份
  18. 02. 下载站的软件包显示损坏
  19. ▼ 3.2 编程类
  20. 01. homebrew 的与 Python 的问题
  21. 0xEE 参考链接复制代码

0x01 系统内置

1.1 系统设置

General

  • 默认浏览器 : Google Chrome

Decktop & Screen Saver

  • 桌面 / 屏保

Language & Region

  • 语言
  • 地区设置

Security & Privacy

  • 防火墙

Sharing

  • Remote Control - SSH

Trackpad

  • 设置手势
  • 滚轮 Scrool Direction : Natural

1.2 自带软件

  • iTunes
  • iPhoto
  • iMessage
  • SpotLight -> Alfred 3

1.3 快捷键与触摸板

  • cmd 为 command 按键,通常情况下为所有桌面程序通用性的快捷键。
  • ctrl ,通常情况下是针对程序的功能进行加强,并且此功能往往是非 cmd 类(窗口操作,选择,复制粘贴等等)操作。
  • shift 按键通常用于加强操作。一般会让操作更进一步 or 相反操作。

  • cmd+tab =~ alt+tab 程序之间的切换

  • cmd+` 应用内窗口切换

  • cmd+h 窗口 hide

  • cmd+m 窗口 minimize
  • cmd+n 新建窗口
  • cmd+o 打开
  • cmd+s 保存
  • cmd+shift+s 另存为
  • cmd+p 打印 print
  • cmd+w 关闭
  • cmd+q quit

  • cmd+a select all

  • cmd+i show info
  • cmd+n create a new folder
  • cmd+f search
  • cmd+c copy
  • cmd+v paste
  • cmd+delete 删除选中文件
  • cmd+shift+delete 清空回收站

  • cmd+= 放大

  • cmd+- 缩小
  • cmd+t 新建选项卡
  • cmd+r 刷新

  • cmd+shift+3 截取整个屏幕

  • cmd+shift+4 截取选择区域
  • cmd+shift+4+SPACE 截取选择窗口
  • cmd+ 鼠标点击 -> 选中不连续文件
  • control+ 鼠标点击 -> 相当于 win 中右键点击

  • fn+left home

  • fn+right end
  • fn+up pageup
  • fn+down pagedown

触摸板手势:

  • 点击

    • 单指点击 - 单击
    • 单指滑动 - 滑动鼠标光标
    • 双指点击 - 相当于 Windows 的鼠标右键
    • 三指点击 - 划词查找
  • 滑动与缩放

    • 双指上下滑动 - 滚动
    • 双指缩放 - 与 Android 上图片缩放一致
    • 双指双击 - 只能缩放
    • 双指旋转 - 旋转
    • 双指左右滑动 - 应用内切换网页
    • 双指头从右往左
    • 三指头左右滑动 - 全屏幕 App 切换
    • 大拇指和食中无名缩放 - launchpad

0x02 必备软件

2.1 必备软件 之 日常必备

  • 启动器

    • Alfred 3
    • SpotLight
  • 网络工具

    • Chrome
  • 社交通讯

    • QQ
    • WeXin
  • 图形图像

    • Adobe PhotoShop CC
    • Adobe PhotoShop LightRoom
    • Sketch
    • Annotate
    • Camtasia 2
    • Snagit
    • ScreenFlow
    • Final Cut Pro
    • MPlayerX
    • QuickTime
    • iQiyi
    • NeteaseMusic
    • IINA
  • 办公软件

    • 欧陆词典
    • Calibre
    • Wiznote
    • PDF Reader
    • iBook
    • Microsoft Office
    • Work 套件:包括 pages, numbers, keynote
    • XMind
    • Airmail
    • TeamViewer
    • OmniFocus
    • OmniGraffle
    • OmniOutline
    • OmniPlan
  • 系统软件

    • 搜狗输入法
    • AppCleaner
    • CleanMyMac
    • VMWare
    • BetterZip
    • Caffeine / Amphetamine
    • PopClip
    • HandShaker
    • AirDroid

2.2 必备软件 之 开发必备

2.2.1 GUI 应用
  • 终端用户

    • iTerm2
  • IDE

    • PyCharm
    • IntellijIDEA
    • WebStorm
  • 编辑器

    • MacVim 配合 C-VIM
    • Sublime Text 3
  • 后台组件

    • MySQL
    • PostgreSQL
    • Redis
    • MongoDB
  • 数据库管理软件

    • Navicat
    • Datagrip
    • RoboMongo
    • RDM
    • Dash
  • 网络工具

    • SS QT
    • Charles, Wireshark
  • Chrome

    • Exporter : 百度云,需要离线安装
    • AdBlock : 广告拦截
    • AutoPatchWork : 链接下一页
    • Axure RP Extension : Axure
    • CSSViewer
    • Dream Afar New Tab
    • JSON Editor
    • JSON View
    • Octotree
    • One-Click Extensions Manager
    • Proxy SwitchyOmega
    • React Developer Tools
    • Redux DevTools
    • Vue.js devtools
    • Vimium
  • 代码仓库

    • Github Desktop
    • SourceTree
  • GIS 相关

    • ArcGIS
    • QGIS
    • PostgreSQL + PostGIS
2.2.2 CMD 命令
  1. if test ! $(which brew); then
  2. echo "Installing homebrew..."
  3. ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  4. fi
  5. # Make sure we’re using the latest Homebrew.
  6. brew update
  7. # Upgrade any already-installed formulae.
  8. brew upgrade --all
  9. # Install GNU core utilities (those that come with OS X are outdated).
  10. # Don’t forget to add `$(brew --prefix coreutils)/libexec/gnubin` to `$PATH`.
  11. brew install coreutils
  12. sudo ln -s /usr/local/bin/gsha256sum /usr/local/bin/sha256sum
  13. # Install some other useful utilities like `sponge`.
  14. brew install moreutils
  15. # Install GNU `find`, `locate`, `updatedb`, and `xargs`, `g`-prefixed.
  16. brew install findutils
  17. # Install GNU `sed`, overwriting the built-in `sed`.
  18. brew install gnu-sed --with-default-names
  19. # Install Bash 4.
  20. brew install bash
  21. brew tap homebrew/versions
  22. brew install bash-completion2
  23. # We installed the new shell, now we have to activate it
  24. echo "Adding the newly installed shell to the list of allowed shells"
  25. # Prompts for password
  26. sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
  27. # Change to the new shell, prompts for password
  28. chsh -s /usr/local/bin/bash
  29. # Install `wget` with IRI support.
  30. brew install wget --with-iri
  31. # Install RingoJS and Narwhal.
  32. # Note that the order in which these are installed is important;
  33. # see http://git.io/brew-narwhal-ringo.
  34. brew install ringojs
  35. brew install narwhal
  36. # Install Python
  37. brew install python
  38. brew install python3
  39. # Install ruby-build and rbenv
  40. brew install ruby-build
  41. brew install rbenv
  42. LINE='eval "$(rbenv init -)"'
  43. grep -q "$LINE" ~/.extra || echo "$LINE" >> ~/.extra
  44. # Install more recent versions of some OS X tools.
  45. brew install vim --override-system-vi
  46. brew install homebrew/dupes/grep
  47. brew install homebrew/dupes/openssh
  48. brew install homebrew/dupes/screen
  49. brew install homebrew/php/php55 --with-gmp
  50. # Install font tools.
  51. brew tap bramstein/webfonttools
  52. brew install sfnt2woff
  53. brew install sfnt2woff-zopfli
  54. brew install woff2
  55. # Install some CTF tools; see https://github.com/ctfs/write-ups.
  56. brew install aircrack-ng
  57. brew install bfg
  58. brew install binutils
  59. brew install binwalk
  60. brew install cifer
  61. brew install dex2jar
  62. brew install dns2tcp
  63. brew install fcrackzip
  64. brew install foremost
  65. brew install hashpump
  66. brew install hydra
  67. brew install john
  68. brew install knock
  69. brew install netpbm
  70. brew install nmap
  71. brew install pngcheck
  72. brew install socat
  73. brew install sqlmap
  74. brew install tcpflow
  75. brew install tcpreplay
  76. brew install tcptrace
  77. brew install ucspi-tcp # `tcpserver` etc.
  78. brew install homebrew/x11/xpdf
  79. brew install xz
  80. # Install other useful binaries.
  81. brew install ack
  82. brew install dark-mode
  83. #brew install exiv2
  84. brew install git
  85. brew install git-lfs
  86. brew install git-flow
  87. brew install git-extras
  88. brew install hub
  89. brew install imagemagick --with-webp
  90. brew install lua
  91. brew install lynx
  92. brew install p7zip
  93. brew install pigz
  94. brew install pv
  95. brew install rename
  96. brew install rhino
  97. brew install speedtest_cli
  98. brew install ssh-copy-id
  99. brew install tree
  100. brew install webkit2png
  101. brew install zopfli
  102. brew install pkg-config libffi
  103. brew install pandoc
  104. # Lxml and Libxslt
  105. brew install libxml2
  106. brew install libxslt
  107. brew link libxml2 --force
  108. brew link libxslt --force
  109. # gitbook autocover
  110. brew install pkg-config cairo pango libpng jpeg giflib
  111. # Install Cask
  112. brew install caskroom/cask/brew-cask
  113. brew tap caskroom/versions
  114. # aerial 屏保
  115. # https://github.com/JohnCoates/Aerial
  116. brew cask install aerial
  117. # https://github.com/sindresorhus/quick-look-plugins
  118. brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlprettypatch quicklook-csv betterzipql qlimagesize webpquicklook suspicious-package quicklookase qlvideo
  119. brew update && brew upgrade --all && brew cleanup && brew prune复制代码

2.3 必备软件 之 编程语言

2.3.1 Shell

MAC 使用的大多命令行工具来自于 FreeBSD , 并不是来自 GNU , 所以很多命令会与常规的 linux 命令大同小异。

而本人喜欢 GNU 系软件。

Shell 脚本可参考我的笔记。 第九节如何优雅的使用 Shell_

说到 shell, 除了要使用 bash 的 shell 之外,zsh 的 shell 也值得一试。(不过大神 kennethreitz 最喜欢 fish shell )

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"复制代码
2.3.1.1 Oh My Zsh
2.3.2 Python

笔者虽然也接触过很多语言,都是粗浅一过,但无一精通,唯一可以稍微谈谈的就是 Python 语言。

当然,安装完毕自然是可以参考一下我的 第三节 Pythonista 的工具集_

国内外网络环境不通畅,安装与配置环境这件小事也就成了一个大事情。

我对于 Python 版本的安装 和 Python 依赖包管理有三个阶段:

  • 入门级
  • 新手级
  • 熟手级
2.3.2.1 入门级

最初是入门级,我配置环境和大部分的 Pythonista 一样,最初版:

  • 面对 Python 版本的管理,干脆就是不管理,brew 安装一个 Python2 用于开发 Python2 的代码,brew install 一个 Python3 用于 Python3 的代码开发。
  • 面对 Python 依赖包管理,干脆就是直接使用 virualenv 或者他的 wrapper 直接 venv 一个环境,然后 active 一下,接着 PIP install -r req.txt
2.3.2.2 新手级
  • 面对 Python 版本的管理,使用 pyenv
  • 面对 Python 依赖包管理,使用 pyenv virtualenv 出多个环境,然后切换环境就好了。
  1. brew install pipenv
  2. git clone https://github.com/yyuu/pyenv.git ~/.pyenv
  3. git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
  4. echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
  5. echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
  6. echo 'eval "$(pyenv init -)"' >> ~/.zshrc
  7. echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
  8. # 接着另开终端
  9. # 不喜写兼容代码,所有代码均向 3.5+ 靠拢
  10. v=3.5.2|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
  11. v=3.6.0|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
  12. v=2.7.11|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
  13. # 可以先用迅雷把 官网的 Anaconda3-4.4.0-MacOSX-x86_64.sh 下载下来,然后
  14. mv Anaconda3-4.4.0-MacOSX-x86_64.sh ~/.pyenv/cache/ && pyenv install anaconda3-4.4.0
  15. # 设置 Global Python 为 2.7.11, 备注:尽量不要把 Py3 设置为全局,否则由于 Homebrew 本身有一些依赖是依赖于 Py2 的,这样容易出现一些奇怪的问题。
  16. pyenv global 2.7.11
  17. pip install -i https://pypi.doubanio.com/simple requests
  18. # 下面这个是用于安装基本的代码补全功能
  19. pip install -i https://pypi.doubanio.com/simple --upgrade "jedi>=0.9.0" "json-rpc>=1.8.1" "service_factory>=0.1.5" flake8 pytest autoflake hy
  20. # 创建最常用 Py3 虚拟环境
  21. pyenv virtualenv 3.5.2 py3-daily
  22. pyenv activate py3-daily
  23. pip install -i https://pypi.doubanio.com/simple requests
  24. pip install -i https://pypi.doubanio.com/simple beatutifulsoup4
  25. pip install -i https://pypi.doubanio.com/simple ipython[notebook]
  26. pip install -i https://pypi.doubanio.com/simple jupyter
  27. # 下面这个是用于安装基本的代码补全功能
  28. pip install -i https://pypi.doubanio.com/simple --upgrade "jedi>=0.9.0" "json-rpc>=1.8.1" "service_factory>=0.1.5" flake8 pytest autoflake hy
  29. # 创建 Anaconda 的数据科学 AI 环境
  30. pyenv virtualenv anaconda3-4.4.0 py3-ai
  31. pyenv activate anaconda3-4.4.0/envs/py3-ai
  32. pyenv deactivate
  33. # 进入一个项目之后
  34. pyenv activate py3-proj
  35. pip install -r requirements/local.txt
  36. pip install -r requirements/prod.txt
  37. # requirements/local.txt 与 requirements/prod.txt 依赖于 requirements/base.txt复制代码
2.3.2.3 熟手级

其实,第一种入门级管理方式弊病在于,python 版本太粗糙,之前遇到一个 python3.3 的问题,python3.4 就解决了。而为了避免这种奇葩的版本差异带来的潜在风险,开发与部署一般要锁死 Python 版本。

即便是解决了入门级管理方式带来的版本管理粗糙的问题,同样的,依赖也要锁死。一个项目对应一种环境该多好 通过 PIP 的确可以用 freeze 输出为 txt 达到锁死的目的。但个人认为,这个还不够,至少要知道依赖树之类的吧?还要知道哪些东西是可以更新的吧?

而且,就应该像 node 项目里面的 package.json 一样,把依赖什么乱七八糟的东西都放进去才好。

  • 面对 Python 版本和依赖包管理,使用 pipenv

这代表着,只要一个就行了。

2.3.3 JavaScript 与 Node 环境
nvm && npm && yarn

nvm 主要用户管理 node 的版本,linux / mac only ,windower 最好下载 node 版本安装,记得配置环境变量。

npm 主要用户管理包,国内人喜欢使用 cnpm, 但是 cnpm 包管理比较渣,所以一般情况下选择 Yarn 配合管理

  1. npm install cnpm
  2. cnpm install yarn -g
  3. # 查看下载源
  4. # yarn config get registry
  5. yarn config set registry https://registry.npm.taobao.org复制代码

yarn 在使用包管理的时候会分析依赖,这对总是 BUG 不断的 node_module 简直是福音。

2.3.4 Java

Java 环境安装稍微有一丢丢蛋疼。特别是多版本管理。

TODO: 以后补充 JAVA 环境安装复制代码

2.4 必备配置 之 dotfiles

详细内容请见 yadotfiles

  • 依照我个人的习惯,在 OhMyZsh 基础上增加了个人习惯的环境变量的配置,一些函数的封装。

比如,当我在写本文的目录中输入 todos, 就可以查看该我在写文章的时候里面挖了多少个还没有填上去的 TODO(坑)。如下

  1. 3e383c54 (Micheal Gardner 2017-11-18 12:40:38 +0800 422) ## 0xEE TODO TO LIST
  2. ae86b7cb (Micheal Gardner 2017-11-19 21:39:49 +0800 245) ### 5. TODO
  3. c0d51990 (Micheal Gardner 2017-11-22 16:42:08 +0800 552) TODO: 以后补充 JAVA 环境安装
  4. c0d51990 (Micheal Gardner 2017-11-22 16:42:08 +0800 561) 比如,当我在写本文的目录中输入 todos, 就可以查看该我在写文章的时候里面挖了多少个还没有填上去的 TODO(坑)。复制代码

详细请参考 yadotfiles

0x03 踩坑史

3.1 日常类

01. 时间机器无法完成备份

我有定期备份的习惯,在一次备份中,意外的发现怎么备份都无法备份完毕,经过几次测试:

  1. 我首先猜测是硬盘问题,换了一块硬盘,问题依旧。
  2. 复制了几个大文件,感觉也不太像是接口接触不良的问题。
  3. 我认为可能是文件数量过多导致的问题。于是删除掉 node_module 后再次备份,备份成功。当然,这也有一定概率是误打误撞。毕竟从概率学上讲,坏掉的钟还能一天有两次时间是对的呢。

外接硬盘的时候,将网络关闭即可。

02. 下载站的软件包显示损坏

有的时候并不是软件损坏,而是 macOS 的安全配置中配置关掉了未识别出的 App

在终端中开启这个选项,并在安全与隐私处点上 anywhere 即可。

sudo spctl --master-disable复制代码

3.2 编程类

01. homebrew 的与 Python 的问题

在 Python 中执行下面的代码的时候总是报错:

  1. ip = socket.gethostbyname(socket.gethostname())
  2. # socket.gaierror: [Errno 8] nodename nor servname provided, or not known
  3. # 最后发现是因为设置主机名没有设置好
  4. sudo scutil --set ComputerName "newname"
  5. sudo scutil --set LocalHostName "newname"
  6. sudo scutil --set HostName "newname"
  7. dscacheutil -flushcache
  8. # 然后重启电脑即可复制代码

如果本机安装了 Homebrew 如果后面使用 PyEnv 或者 Anaconda 并且设置当前环境为默认 Python 为 Python3(不建议这么搞), 但是如果偏偏要把默认的 Python 版本换成 Python3, 会弹出一些 pythonpath
的问题,执行下面命令即可暂时屏蔽这个问题,但是没有隐患则不清楚。

mv /usr/local/lib/python2.7/site-packages/sitecustomize.py /usr/local/lib/python2.7/site-packages/sitecustomize.py.back复制代码
02. Homebrew 安装过去的文件

0xEE 参考链接

  • 本文部分命令行安装借鉴了 dev-setup

ChangeLog:

  • 2016-02 确定大致内容
  • 2017-06-28 重修文字,调整文章结构,Python 环境 和 Homebrew 安装环境
  • 2017-10-05 再次重修文字,不定期更新
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号