系统语言要设置成英文。这样的好处在于,将来你遇到任何问题的时候,出错信息里里外外全都是英文的,于是,就可以直接拷贝粘贴到 Google 里搜索解决方案。不然的话,各种名称都可能因为是中文的而找不到太好的解决方案…… 另外,Region 也干脆设置成 United States
算了,因为将来可能还需要用海外账号使用 TV App,和 News App……
打开一个新的 Mac(iMac、Macbook 等等),即便你是新手,要第一个使用的,就是 Terminal 程序。
在新的 Mac 上打开 Terminal 程序的方法有以下几个:
在 Spotlight 里输入 ter
这三个字母的时候,Terminal 已经排在第一位了,这时按下 ⏎
键,即,Return 键,就可以打开 Terminal 程序。
我第一次打开 Terminal 的时候是这样的:
在 Terminal 中执行以下命令(或者手动输入进去,或者拷贝粘贴,而后按 ⏎
键,即,Return 键):
xcode-select --install
而后会跳出一个消息窗口,按提示一步一步做即可 —— 根据你的网速,需要等一段时间才能够完成。
这一步安装,从你的角度来看,好像没发生什么……
还需要再执行一个命令:
sudo xcodebuild -license
在 BigSur 里,Mac OS 使用的默认 Shell,不再是 bash
,而是 zsh
,所以,干脆再安装一个 zsh
的增强工具,oh-my-zsh
—— 它将来会提供很多方便:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
等一会儿安装好 Homebrew 之后,我们还可以进一步美化一下 Terminal 以及命令行提示符……
以后大量的程序安装、升级、卸载,都靠 Homebrew 。
使用同一个工具管理所有软件的下载安装,当然远比一个个打开网站手动下载再安装方便太多了。
但,用 Homebrew 最直接的好处就是,用它可以直接下载并安装必要的连接全网软件,免费的比如 Shadowsocks-NG-R、ClashX,收费的比如 Surge 等等 —— 没有 Homebrew,你就被限制住了:没有连接全网的软件,所以,无法打开 Google,也无法连接到下载上面提到的三个软件的网站上,然后,死循环……
Homebrew 官方的代码仓库保存在 GitHub 上,在国内很多地方,直接访问 Github 要么直接访问不了,要么非常非常慢…… 所以,安装 Homebrew 的时候,需要「绕行」一下,先用国内镜像安装,然后再切换回官方源。
将以下代码拷贝粘贴到 Terminal 里,而后,按 ⏎
键,即,Return 键:
# 使用国内源安装
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
注意
拷贝粘贴代码的时候,第一行包括进去了也没问题。
#
这个字符是用来标注注释的,shell 会自动忽略当前行中#
后面的所有内容。补充
官方源的安装使用以下代码
# 使用官方源安装 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"另外,如果用的是官方安装脚本,那么,在安装结束之后,要补充执行以下命令:
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile eval $(/opt/homebrew/bin/brew shellenv)
第一步选择镜像。我在北京,所以,就输入了 2
,即,选择了清华大学下载源;随后,输入 y
确认开始执行脚本;之后会要求输入 password…… 这个 password 就是你的「开屏密码」(就是打开电脑,或者待机之后重新开机,需要登录的时候,所需要输入的那个密码)—— 在输入密码的时候,你在 Terminal 里看不到之前在图形界面中你所熟悉的对应的星号 *****
,正确输入之后,按 ⏎
键即可。如果输入错误,那就多按几次 delete
键,确保彻底删除所有已输入字符,重新输入即可。
这个安装脚本会在 .zprofile
文件里补上一行:eval $(/opt/homebrew/bin/brew shellenv)
,你暂时忽略这个细节,重新启动 Terminal。
而后,可以用以下命令验证 Homebrew 的安装:
which brew
brew update
brew doctor
实际上,brew
的常用命令也没几个,先放在这里,回头再来逐个试几遍……
brew -v
brew list
brew doctor
brew update
brew upgrade
brew search
brew info
brew cleanup
brew config
注意
我现在用的是基于 Apple Silicon 芯片的 Mac,Homebrew 的安装目录,在基于 Intel Chip 的 Mac 上可能有所不同。Homebrew 的根目录到底是什么,在安装好之后,可以用
echo $(brew --prefix)
查看。
MacOS 上可用的 VPN 客户端,免费的有 Shadowsocks 和 ClashX,收费的有 Surge,都可以通过 brew
命令安装。
brew install shadowsocksx-ng-r
brew install clashx
brew install surge
使用 brew
命令安装的第三方程序,在系统默认的情况下,会触发警告,比如这样的:
于是,需要你在 System Preferences 里设置一下,在 Allow apps downloaded from:
之下,选择 App Store and identified developers
,然后,按那个 Allow Anywa
按钮:
如果你已经购买过 VPN 服务,并且能用以上三个 VPN 程序中的某一个设置好,那么,你应该能够顺畅地连接「外网」了,那么你现在可以把 homebrew 的「源」切换回官方源了 —— 将以下代码拷贝粘贴到 Terminal 里执行:
# 恢复官方源
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-cask"
git remote set-url origin git://github.com/Homebrew/homebrew-cask.git
# 更新至最新
brew update
# 检查 Homebrew 状态
brew doctor
若是看到警告信息,
Warning: A newer Command Line Tools release is available.
Update them from Software Update in System Preferences or run:
softwareupdate --all --install --force
那么,就执行一遍 softwareupdate --all --install --force
好了……
如果将来需要切换到国内的源,那么得按照以下方法操作(第一遍操作的时候,请直接跳到下一节开始阅读):
替换为阿里源
# 查看 brew.git 当前源
$ cd "$(brew --repo)" && git remote -v
origin https://github.com/Homebrew/brew.git (fetch)
origin https://github.com/Homebrew/brew.git (push)
# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin https://github.com/Homebrew/homebrew-core.git (fetch)
origin https://github.com/Homebrew/homebrew-core.git (push)
# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
$ brew update
替换为清华源
# 替换各个源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
$ git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
$ brew update
替换为中科大源
# 替换各个源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
$ git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
$ brew update
重置为官方源
# 重置 brew.git 为官方源
$ git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
# 重置 homebrew-core.git 为官方源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git
# 重置 homebrew-cask.git 为官方源
$ git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask
# zsh 注释掉 HOMEBREW_BOTTLE_DOMAIN 配置
$ subl ~/.zshrc
# export HOMEBREW_BOTTLE_DOMAIN=xxxxxxxxx
# bash 注释掉 HOMEBREW_BOTTLE_DOMAIN 配置
$ subl ~/.bash_profile
# export HOMEBREW_BOTTLE_DOMAIN=xxxxxxxxx
# 刷新源
$ brew update
现在,可以「装修」一下 Terminal 了。
先安装一个字体
brew tap homebrew/cask-fonts
brew install --cask font-sauce-code-pro-nerd-font
设置 Terminal 的字体(目前使用的 Profile 是 Basic)—— 在 Terminal 处于当前焦点的情况下,按快捷键 ⌘ ,
呼出 Terminal 的 Preferences 窗口,而后,在 Profiles 标签里,点击左边栏的 Basic
,而后,在右侧 Text
标签页里设置 Font
在右边的 Font
区域,点击 Change
按钮后,字体设置窗口里只有一个下拉菜单设置字体大小:
但是,如果你把窗口拉长,就可以直接输入字体大小了,比如,我经常用的是 15
—— 在下拉菜单里就没有这个设置。下图中,我已经把字体换成了 SauceCodePro Nerd Font Mono
,Typeface 选择了 ExtraLight
……
注意:一定要把字体设置 Sauce Code Pro Nerd Font Mono
,这就是之前我们用 brew
命令新安装的字体。
在 Window 标签里,可以设置窗口大小(也就是一屏显示多少行,每行多少个字符),我一般是设置成 120 x 32
,你自己看着办:
现在,再安装 Terminal 的 Powerlevel10K Theme for zsh:
brew install romkatv/powerlevel10k/powerlevel10k
安装完毕之后,有一段提示
To activate powerlevel10k, add the following line to .zshrc:
source /opt/homebrew/opt/powerlevel10k/powerlevel10k.zsh-theme
If your .zshrc sets ZSH_THEME, remove that line.
为了能很方便滴编辑 .zshrc
文件,我们再安装一个文本编辑器(免费,但也可以缴费注册)
brew install sublime-text
如此这般安装好 sublime-text 之后,在 Terminal 里,随时可以使用 subl
命令编辑任何文本文件。
现在使用 sublime-text 编辑 ~/.zshrc
文件,在 Terminal 里输入
subl ~/.zshrc
在 ~/.zshrc
这个文件里,已经有很多内容(都是之前安装 Oh-My-Zsh)的时候生成的。在里面找到有 ZSH_THEME="robbyrussell"
的那一行,在这一行开头加上以一个 #
(在这个设置文件里,#
是注释符号,一行内 #
之后的部分会被忽略掉):
# ZSH_THEME="robbyrussell"
而后,在按 ⌘ s
保存之后,退出 SublimeText。
然后重新启动 Terminal,执行以下命令,Powerlevel10K 的配置脚本会自动开始。按照提示一步一步选择即可。可以多试几次,不满意,就重新设置一遍。如果实在不知道该怎么办,参照我的选择。以后想要重新设置 Powerlevel10K 的话,就用以下命令:
p10k configure
另外,我比较喜欢 SpaceGray 这个 Terminal Theme。(事实上,你可以在网上找到很多 Terminal Theme for Mac OSX……)
cd ~
curl https://raw.githubusercontent.com/wtanna/Spacegray-OSX-Terminal-Theme/master/spacegray.terminal --output spacegray.terminal
open spacegray.terminal
然后,一个新的 Terminal 窗口会被打开。接着用快捷键 ⌘ ,
(即,同时按下Command 键和逗号键的组合),呼出 Preferences 窗口,而后,在 Profiles 标签里,点击左边栏的 SpaceGray
,而后,在右侧 Text
标签页里设置 Font
,Windows
标签里设置窗口大小…… 而后,再将 SpaceGray
设置为 Default
。
设置完之后,可以把刚才下载的 spacegray.terminal
文件删掉:
cd ~
rm spacegray.terminal
而后, Terminal 就被「装修」成了这个样子:
这个 Terminal 的标题栏上,标识是 joker@192
,这里的 192
是目前系统的 hostname
,而 192
是我当前使用电脑的内网 IP 地址中最没用的第一段(总计四段),没有任何意义…… 所以,我可以用以下命令设置当前计算机的hostname
:
scutil --set HostName "Macbook-Air-M1"
而后重新启动 zsh:
第三方的程序,绝大多数都可以通过 brew
命令下载、安装、升级(我自己用的程序里,目前只有 Mixin Desktop 不能通过 brew
命令安装)—— 甚至,用 brew
命令还能安装一个 mas
用来管理 App Store 里的程序…… 而后,我可以用一行命令升级所有程序 brew update && brew upgrade && mas upgrade
—— 当然,这条命令,你得等会儿才可以使用。
注意,在使用 brew install
之前,最好卸载已经安装的软件,否则,系统会提醒你使用 brew reinstall
命令。于是,最好先 brew install appcleaner
,用 AppCleaner 软件,卸载(它能把应用程序之外留下的各种文件一并删掉)
brew install git # MacOS 自带的 Apple Git 也不是不能用,但,替换掉已经成了习惯
brew install wget # 比 curl 方便一点的下载工具
brew install carlocab/personal/unrar # 命令行解压缩工具
brew install tree # 用来查询目录的树状结构
brew install mas # 用来管理 App Store 里的软件
brew install yt-dlp # 主流视频网站文件命令行下载工具
brew install symboliclinker # 生成 Symbolic Link(类似 Windows 里的「快捷方式」)的服务
brew install appcleaner # 图形化的软件卸载工具
brew install onyx # 系统维护工具,比如清理系统垃圾
brew install cleanmymac # 系统维护工具,功能比 onyx 多一点点,收费软件
brew install bettertouchtool # 定制各种快捷操作,也能做窗口管理,收费软件
brew install alfred # 定制各种工具流,还包括一个剪贴板增强工具,收费软件
brew install blackhole-64ch # 系统音频软导流工具,用 OBS 做直播播放音乐时需要
brew install sublime-text # 轻量级、速度快、功能丰富的纯文本编辑器
brew install visual-studio-code # 微软出品的代码编辑器(基于 Google Atom)
brew install typora # MacOS 上最好最方便的 Markdown 编辑器
brew install google-chrome
brew install firefox
brew install microsoft-edge
brew install brave-browser
brew install opera tor-browser # 自带翻墙软件 tor,缺点是速度慢
brew install shadowsocksx-ng-r # 支持订阅的 shadowsocks 客户端
brew install clashx # 另外一个代理服务器客户端(我没咋用过)
brew install surge # 收费的代理服务器客户端,还可以单独装在一台电脑上做局域网的网管
事实上,很多在 App Store 里能下载的软件,brew
里面也有,比如 Wechat 桌面版,比如微软的 Remote Desktop…… 只要是能用 brew
下载安装的,就全都用 brew
—— 无非是在安装之前,先去用 brew search <softwarename>
搜索一下,看看能不能找到;找到之后,再用 brew info <software name>
确认一下……
brew install android-studio # 安卓模拟器,我用它在 MacOS 使用 Kindle 听读有声书
brew install audacity # 音频编辑器
brew install baidunetdisk # 百度网盘
brew install calibre # 电子书管理用具,我经常用它做一些电子书的格式转换
brew install dropbox # 云存储
brew install keka # 解压缩用具
brew install microsoft-remote-desktop # 远程桌面管理(比如,登录局域网内的某台 Windows 设备)
brew install miniconda # conda 极简版,我平时用 Jupyter lab 比较多
brew install obs # 直播推流软件,也可以用来录屏
brew install openaudible # 将 Audible 的文件转换成 mp3,收费软件
brew install sketch # 矢量图编辑工具,收费软件
brew install skitch # 印象笔记出品的一个截屏软件,比系统自带的功能更全一些
brew install spotify # 音乐软件,收费软件
brew install thunder # 迅雷下载工具
brew install transmission # 另一款 bittorrent 下载客户端
brew install vlc # 媒体播放器
brew install webcatalog # 将很多网站服务打包成 App 独立运行的软件,我用它下载 Google Sheets 之类
brew install wechat # 微信桌面版
也可以以下脚本安装以上所有软件(以下我用了 brew reinstall
命令,因为常常有不小心已经安装好的软件):
#!/bin/zsh
PACKAGES="git wget tree mas yt-dlp symboliclinker appcleaner onyx cleanmymac bettertouchtool alfred blackhole-64ch sublime-text visual-studio-code typora "
for p in $PACKAGES; do
if (echo $(brew list) | fgrep -q $p); then
echo "$p has already installed."
else
brew install $p
# echo "$p installed successfully."
fi
done;
# brew cleanup
# brew upgrade
用这个脚本的好处是,不会因为安装某个软件出错而中断。也可以下载这个脚本,根据需求编辑下载列表,而后在 Terminal 里运行 sh brewinstall.sh
(当然要先用 cd
命令转到这个脚本所在的目录之中)。
尚未安装 mas
的话,用 brew install mas
安装。mas
命令的用法如下:
mas list # 列出 App Store 中已安装的软件
mas upgrade # 升级所有 App Store 中的软件
mas search # 搜索某软件的安装 ID
mas install <software id> # 安装某软件
在新电脑上,我用以下命令安装所有我需要在 App Store 中安装的软件:
mas install 1333542190 ## 1Password 7 密码管理软件
mas install 1569813296 ## 1Password for Safari
mas install 438292371 ## Amadeus Pro 音频编辑软件,收费
mas install 1487937127 ## Craft 笔记管理软件,MacOS、iOS 通用,收费
mas install 409222199 ## Cyberduck 可用 brew 安装,sftp 软件,但,我在 App Store 里付费了
mas install 553245401 ## Friendly Streaming 收费视频平台聚合,我用它在电脑上看 Netflix 什么的
mas install 682658836 ## GarageBand 苹果的音乐工作室
mas install 1461845568 ## Gifox 录屏软件,保存为 gif 动图
mas install 1551462255 ## GMRight Mouse Lite 与 Windows 系统相似的鼠标右键菜单增强;付费版本是 1555844307
mas install 1474276998 ## HP Smart 惠普打印机管理
mas install 408981434 ## iMovie
mas install 1136220934 ## Infuse 我用它来播放局域网内的视频
mas install 409183694 ## Keynote
mas install 1295203466 ## Microsoft Remote Desktop
mas install 462054704 ## Microsoft Word
mas install 409203825 ## Numbers
mas install 409201541 ## Pages
mas install 485812721 ## TweetDeck Twitter 的桌面客户端,可多栏显示
mas install 970502923 ## Typeeto 可用电脑键盘为 iOS 输入
mas install 497799835 ## Xcode
如此这般之后,我就可以用以下一行命令升级电脑里的所有软件了……
brew update && brew upgrade && brew tap buo/cask-upgrad && yes | brew cu --all --force && brew cleanup && mas upgrade
注意,brew upgrade
不会更新通过 --cask
安装的软件,所以,需要 brew tap buo/cask-upgrad && brew cu --all --force
才行……
在整个操作过程中,有可能「不小心搞乱了」,那就重来一遍,无所谓的。
注意
不能在此之前卸载 Homebrew 😅
卸载单个软件,用 brew uninstall <package name>
命令即可,比如,brew uninstall shadowsocksx-ng-r
。若是想要卸载所有通过 Homebrew 安装的软件,那么,执行以下命令即可:
brew remove --force $(brew list) --ignore-dependencies
brew cleanup
卸载 Homebrew 的脚本如下 —— 至于两个脚本里用哪个,要看你正在使用的是哪个源:
# 使用官方源
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
# 使用国内镜像
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
然后再在 Terminal 里删除整个 Homebrew 的目录:
sudo rm -rf /opt/Homebrew
使用 uninstall oh-my-zsh
命令即可。
一个有趣的现象是,新手在接触到命令行的时候,大脑好像时刻处于「恐慌状态」(Panic Mode),面对突然出现的一整屏信息「不知所措」—— 不仅是中国人害怕英文,事实上,就算那是母语(美国人看英文、中国人看中文),也是一样的反应……
事实上,作为新手所能遇到的问题,比如,执行某个步骤的时候所遇到的出错信息,都是可以通过 Google 找到答案的 —— 因为你肯定不是第一个也肯定不是唯一一个遇到同样问题的人。
在 Terminal 里遇到的出错信息,用鼠标选中(Mac 上也可能是触摸板),而后点右键呼出 Context Menu,里面有一项,就是 Search with Google
—— 所谓的「研究」,其实不过是 Search, Search, and Research,就是反复搜索么!
除了系统自带的 Terminal 之外,还有很多终端软件,比如 iTerm 之类。其中一个用起来很顺手也非常高性能的是 Ghostty,可以试试。
brew install --cask ghostty
在 Terminal 中已经设置过的 p10k
在 Ghostty 里直接生效。
Ghostty 的配置文件里,需要写的东西很少(更多配置可以参照它的官方文档):
font-family = "SauceCodePro NFM ExtraLight"
font-size = 16
window-width = 120
window-height = 32
这个配置文件的保存位置是: ~/Library/Application Support/com.mitchellh.ghostty/config