前言

本手册用于统一团队认知,不对外提供任何解释。

贡献者

许可证

署名—非商业性使用—禁止演绎 4.0 协议国际版

Apple Store

⚠️ 注意:必须是美区 Apple Store

Amphetamine

阻止 Mac 睡眠

Xcode

一些工具的编译依赖

Redis Server

名字已经充分说明了功能

WireGuard

Linux 5.6 内核级特性,Linus 看了都说好

Tailscale

远程组网 + SSH

macOS 开启 SSH 登录

EasyRes

EasyRes 是一款适用于 Mac OS X 的快速屏幕分辨率切换器,具有实时动画预览。

DMG Application

clash-verge-rev

GitHub

Postman

API 调试工具

官网

OpenTrace

网络路由追踪图形化工具

GitHub

Homebrew

首次安装 + 镜像配置

macOS 基础

xcode-select --install

语言环境

Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Go

brew install go

Java

brew install --cask zulu@21

命令行工具

常用

brew install \
  aria2 \
  cmake \
  ncdu \
  sqlite \
  telnet \
  tldr \
  tree \
  watch \
  wget

topgrade

一键更新开发环境

brew install topgrade

ffmpeg

视频处理

brew install ffmpeg

常用软件

Shottr

截图

brew install --cask shottr

Fork

Git GUI

brew install fork

IINA

视频播放器

brew install iina

Easydict

翻译

brew install --cask easydict

iStat Menus(需要注册码)

系统性能监控

brew install istat-menus

监控 CPU 频率需要安装 Intel Power Gadget

brew install intel-power-gadget

注意:Intel Power Gadget 有可能会让你的 Mac 无限重启,在 iMac (Retina 4K, 21.5-inch, 2017) 上出现过这个问题,请慎重考虑是否安装。

无限重启修复方法:启动时按住 Shift 键,进入安全模式,使用 Intel Power Gadget 自带的 Uninstaller.pkg 完全卸载

OBS

推流 & 录屏

brew install obs

qBittorrent Enhanced

qBittorrent 增强版,自动 Ban 吸血 IP

brew install c0re100-qbittorrent

balenaEtcher

镜像烧录

brew install balenaetcher

数据库管理

Another Redis Desktop Manager

Redis

brew install another-redis-desktop-manager

Beekeeper Studio

MySQL, Postgres, SQLite, SQL Server

brew install beekeeper-studio

DBeaver

老牌工具

brew install --cask dbeaver-community

系统增强

Pearcleaner

卸载清理

brew install pearcleaner

Mos

鼠标行为调教

brew install mos

Maccy

粘贴板增强

brew install maccy

Keka

解压

brew install keka

Mounty

NTFS 读写

brew install mounty

Sloth

lsof GUI

brew install sloth

iTerm2

替代掉系统自带的 Terminal

brew install iterm2

SwitchHosts

快速切换 HOST 文件

brew install switchhosts

Open In Termina

鼠标右键在此处打开控制台

brew install --cask openinterminal

调试

mitmproxy

brew install mitmproxy

whistle

brew install whistle

Charles(需要注册码)

brew install charles

Wireshark

brew install wireshark

jmeter

压力测试,装完之后没有图标,在命令行启动

brew install jmeter

逆向

jd-gui

逆向,反编译 JAR

brew install jd-gui

jadx

Android 逆向,装完之后没有图标,在命令行启动

brew install jadx

字体

Hack Nerd Font

终端唯一指定字体

brew tap homebrew/cask-fonts
brew install font-hack-nerd-font

相关文章

Rust cargo

A curated list of command-line utilities written in Rust

y2z/monolith

https://github.com/y2z/monolith

将完整网页保存为单个 HTML 文件

安装

cargo install monolith

用法

monolith https://dev-man-macos.d8s.fun -o a.html

使用 Touch ID 认证 sudo

cd /etc/pam.d
sudo vim sudo

写在第一行

auth sufficient pam_tid.so
:x!

系统首选项调整

https://www.robinwieruch.de/mac-setup-web-development

# 截图格式设置为更小的 jpg,而不是 png
defaults write com.apple.screencapture type jpg

# 打开新文件时,不要打开以前预览的文件(例如 PDF)
defaults write com.apple.Preview ApplePersistenceIgnoreState YES

# 显示 Library 文件夹
chflags nohidden ~/Library

# 显示隐藏的文件
defaults write com.apple.finder AppleShowAllFiles YES

# Finder 显示路径栏
defaults write com.apple.finder ShowPathbar -bool true

# Finder 显示状态栏
defaults write com.apple.finder ShowStatusBar -bool true

killall Finder;

TinkerTool·系统深度设置维护工具,帮助修改一些系统隐藏的属性

https://www.bresink.com/osx/TinkerTool.html

清除 DNS 缓存

How to Flush DNS on Mac – MacOS Clear DNS Cache

MACOS VERSIONCOMMAND
macOS 12 (Monterey)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 11 (Big Sur)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 10.15 (Catalina)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 10.14 (Mojave)sudo killall -HUP mDNSResponder
macOS 10.13 (High Sierra)sudo killall -HUP mDNSResponder
macOS 10.12 (Sierra)sudo killall -HUP mDNSResponder
OS X 10.11 (El Capitan)sudo killall -HUP mDNSResponder
OS X 10.10 (Yosemite)sudo discoveryutil udnsflushcaches
OS X 10.9 (Mavericks)sudo killall -HUP mDNSResponder
OS X 10.8 (Mountain Lion)sudo killall -HUP mDNSResponder
Mac OS X 10.7 (Lion)sudo killall -HUP mDNSResponder
Mac OS X 10.6 (Snow Leopard)sudo dscacheutil -flushcache
Mac OS X 10.5 (Leopard)sudo lookupd -flushcache
Mac OS X 10.4 (Tiger)lookupd -flushcache

异常耗电日志排查

pmset -g log | grep -i "wake from"

参考资料

Homebrew 清理无用依赖

brew autoremove && brew cleanup

Python 镜像配置

升级 pip 到最新版

pip3 install --upgrade pip -i https://pypi.douban.com/simple

设置镜像

pip3 config set global.index-url https://pypi.douban.com/simple

NPM Binary Mirror

使用方式

添加到 .bashrc.zshrc

# === NPM BINRAY CHINA ===
# https://github.com/cnpm/binary-mirror-config/blob/master/package.json#L48
export NODEJS_ORG_MIRROR="https://cdn.npmmirror.com/binaries/node"
export NVM_NODEJS_ORG_MIRROR="https://cdn.npmmirror.com/binaries/node"
export PHANTOMJS_CDNURL="https://cdn.npmmirror.com/binaries/phantomjs"
export CHROMEDRIVER_CDNURL="https://cdn.npmmirror.com/binaries/chromedriver"
export OPERADRIVER_CDNURL="https://cdn.npmmirror.com/binaries/operadriver"
export ELECTRON_MIRROR="https://cdn.npmmirror.com/binaries/electron/"
export ELECTRON_BUILDER_BINARIES_MIRROR="https://cdn.npmmirror.com/binaries/electron-builder-binaries/"
export SASS_BINARY_SITE="https://cdn.npmmirror.com/binaries/node-sass"
export SWC_BINARY_SITE="https://cdn.npmmirror.com/binaries/node-swc"
export NWJS_URLBASE="https://cdn.npmmirror.com/binaries/nwjs/v"
export PUPPETEER_DOWNLOAD_HOST="https://cdn.npmmirror.com/binaries"
export SENTRYCLI_CDNURL="https://cdn.npmmirror.com/binaries/sentry-cli"
export SAUCECTL_INSTALL_BINARY_MIRROR="https://cdn.npmmirror.com/binaries/saucectl"
export npm_config_sharp_binary_host="https://cdn.npmmirror.com/binaries/sharp"
export npm_config_sharp_libvips_binary_host="https://cdn.npmmirror.com/binaries/sharp-libvips"
export npm_config_robotjs_binary_host="https://cdn.npmmirror.com/binaries/robotj"

数据来源

binary-mirror-config

DoH/DoT

macOS 开启 WebKit 审查元素

https://blog.jim-nielsen.com/2022/inspecting-web-views-in-macos/

defaults write NSGlobalDomain WebKitDeveloperExtras -bool true
defaults write -g WebKitDeveloperExtras -bool YES

删除所有 .DS_Store 文件

find . -name '*.DS_Store' -type f -delete

重置 Dock

rm ~/Library/Application\ Support/Dock/*.db && killall Dock
defaults write com.apple.dock ResetLaunchPad -bool true && killall Dock

Launchpad 重置

defaults write com.apple.dock ResetLaunchPad -bool true && killall Dock

开机启动项管理

https://wild-flame.github.io/guides/docs/mac-os-x-setup-guide/preference_and_settings/launch

  • /Library/LaunchDaemons
    • 系统启动时运行,用户不登录也会运行。
  • /Library/LaunchAgents
    • 用户登录后运行
  • ~/Library/LaunchAgents
    • 用户自定义的用户启动项
  • /System/Library/LaunchDaemons
    • 系统自带的启动项
  • /System/Library/LaunchAgents
    • 系统自带的启动项

修复摄像头黑屏

https://macreports.com/mac-camera-not-working-fix

sudo killall AppleCameraAssistant; sudo killall VDCAssistant

重装 macOS 前的检查清单

support.apple.com - 重新安装 macOS

  • VPN !!! VPN !!! VPN !!! 重要的事情说三遍,确认要重装系统前请先保证你的梯子是稳定的
  • 备份 ~/.ssh
  • 备份 ~/.keras
  • 备份 ~/.kaggle
  • 备份 ~/.ngrok2
  • 备份 ~/Projects
  • 备份 ~/Documents
  • 备份 ~/Pictures
  • 备份 ~/Wallpapers
  • 备份 ~/Downloads
  • 备份 ~/Movies
  • 备份 ~/Music
  • 备份 ~/Public
  • 备份 Bob 配置文件 偏好设置-通用-导入导出
  • 更新 dotfiles
  • 检查 /Applicationsbrew list 将新项目更新到 Must Install

macOS Environment Variables

Environment Variables

查看所有环境变量

env

设置一个 Variable

# 通过可执行文件设置
export JAVA_HOME=$(/path/to/JDK-exec-directory)

# 通过目录设置
export JAVA_HOME=/path/to/JDK-installed-directory

打印某个已设置的 Variable

echo $JAVA_HOME

PATH

查看当前 PATH

echo $PATH

修复损坏的 PATH (恢复默认 PATH)

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

添加自己的 PATH

export PATH="${PATH}:你的新目录"

刷新终端配置

source ~/.zshrc

常见的配置文件

  • /etc/paths (全局建议修改这个文件)

编辑 paths, 将环境变量添加到 paths 文件中, 一行一个路径

tips: 输入环境变量时, 直接拖动文件夹到 Terminal 里就可以了

  • /etc/profile (建议不修改这个文件)

全局(公有)配置,不管是哪个用户,登录时都会读取该文件

  • /etc/bashrc (一般在这个文件中添加系统级环境变量)

全局(公有)配置,bash shell 执行时,不管是何种方式,都会读取此文件

  • .profile (系统的每个用户设置环境信息)

当用户第一次登录时,该文件被执行,并从 /etc/profile.d 目录的配置文件中搜集 shell 设置

tips: 修改 /etc/profile 必须重启才会生效, 此修改对每个用户都生效

  • .bashrc (每一个运行 bash shell 的用户执行此文件)

当 bash shell 被打开时, 该文件被读取

tips: 对所有的 bash 用户生效, 修改后启动一个新的 bash shell 即可

  • .bash_profile (用于你的 bash shell 的 bash 信息)

当登录时以及每次打开新的 bash shell 时, 该文件被读取, 每个用户的家目录都有一个 .bashrc 文件

tips: 需要需要重启才会生效, /etc/profile 对所有用户生效, ~/.bash_profile 只对当前用户生效

  • .zshrc (每一个运行 zsh shell 的用户执行此文件)

当 zsh shell 被打开时, 该文件被读取

tips: 对所有的 zsh 用户生效, 修改后启动一个新的 zsh shell 即可

  • .zsh_profile (用于你的 zsh shell 的 zsh 信息)

当登录时以及每次打开新的 zsh shell 时, 该文件被读取, 每个用户的家目录都有一个 .zshrc 文件

tips: 需要需要重启才会生效, /etc/profile 对所有用户生效, ~/.zsh_profile 只对当前用户生效

  • .netrc (用于完成常见协议的权限验证) 当你访问 git、ftp 等常见协议的时候自动验证账号密码 tips: 有些时候不能直接用账号密码,而是要用 token

.netrc 示例

machine github.com
login charles
password password

修复声音卡顿问题

sudo killall coreaudiod

修复天气组件黑屏

defaults delete com.apple.notificationcenterui; killall NotificationCenter

将大小写锁定键映射为 ESC 键

System settings -> Keyboard -> Keyboard Shortcuts -> Modifier Keys -> Caps Lock key -> Escape

将 <Control + Space> 修改为 <Command + x>

System settings -> Keyboard -> Keyboard Shortcuts -> Input Source

错误

UNABLE_TO_GET_ISSUER_CERT_LOCALLY

原因

用 brew 安装 ca-certificates openssl 会更新系统的 CA,更新出错时会导致 SSL 校验失败。

解决方案

brew reinstall ca-certificates openssl@3 node

🇨🇳 安装 rustup

Rustup Mirror

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh

crates.io Mirror

vim ~/.cargo/config
[source.crates-io]
registry = "sparse+https://rsproxy.cn/index/"
[net]
git-fetch-with-cli = true

iTerm2 配置

主题配置

Preferences -> Appearance -> General -> Theme -> Minimal

状态栏配置

Preferences -> Profiles -> Session -> Status bar Enabled -> Configure Status Bar

Oh My Zsh 配置参考

github.com/jerryshell/dotfiles/blob/master/.zshrc

在 iTerm2 将 <Command + s> 修改为 <Control + s>

https://www.dfurnes.com/notes/binding-command-in-iterm

Preferences -> Profiles -> Keys -> +

⌘s

Send Text with 'Vim' Special Characters

\<C-s>

Chrome DoH

Chrome 83 之前

chrome://flags/#dns-over-https

Chrome 83 之后(包括 83)

chrome://settings/security

Chrome 开启多线程下载

chrome://flags/#enable-parallel-downloading

VS Code 关闭遥测信息收集

https://code.visualstudio.com/docs/getstarted/telemetry

  1. Code > Preferences > Settings
  2. 搜索 telemetry
  3. Telemetry: Telemetry Level 改为 off

解决 VSCode 安装 Vim 插件后长按按键无法移动光标的问题

defaults write -g ApplePressAndHoldEnabled -bool false

修改 OpenTTD 的中文字体

打开 ~/Documents/OpenTTD/openttd.cfg

修改以下配置

small_font = /System/Library/Fonts/PingFang.ttc
medium_font = /System/Library/Fonts/PingFang.ttc
large_font = /System/Library/Fonts/PingFang.ttc
mono_font = /System/Library/Fonts/PingFang.ttc
small_size = 16
medium_size = 16
large_size = 20
mono_size = 16
small_aa = true
medium_aa = true
large_aa = true
mono_aa = true

Audacity 卡顿修复

Applications -> Audacity.app -> 右键 -> Show Package Contents

Contents -> 用文本编辑器打开 Info.plist

<key>NSHighResolutionCapable</key>
<true/>

改为

<key>NSHighResolutionCapable</key>
<false/>

保存重启软件

Chrome 开启网页内容自动深色模式

选择 Enabled with selective inversion of non-image elements

chrome://flags/#enable-force-dark

点击查看

附录