nusr/awesome-macos-command-line-zh
nusr/awesome-macos-command-line-zh has 348 GitHub stars and 29 forks. Star changes are not measured yet. Last checked 2026-11-13 22:25 UTC. Last push 2019-05-15.
Crecimiento de estrellas medido
- in 24h
- Recopilando historial
- in 7 days
- Recopilando historial
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
Acerca de
用你的 macOS 终端搞事情。(Use your macOS terminal shell to do awesome things. )
Herramientas de desarrolloREADME.md
Originalawesome-macos-command-line 收集了很多有趣的 Mac 终端命令。
看了一遍后,发现帮助很大。
见识了许多没有使用过的命令,加深了对 Mac 的认识。
所以翻译成中文,分享给其他需要的人查看。
翻译不妥的地方,欢迎提 issue 或者 pull request 。
喜欢点 star ,关注点 watch,贡献点 fork 。
为了获得更好的阅读效果,可以在线预览。在线预览地址
精心为 OS X 挑选的 shell 命令和工具。
“你无需知晓一切。仅仅在你需要的时候,找到它就行了。” (John Brunner)
中文 | English
外形
透明度
菜单和窗口的透明度设置
# 减小透明度
defaults write com.apple.universalaccess reduceTransparency -bool true
# 恢复默认透明度
defaults write com.apple.universalaccess reduceTransparency -bool false
桌面背景
设置桌面背景
# Mountain Lion 及之前的版本支持
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/path/to/picture.jpg"'
# 从 Mavericks 开始支持
sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/path/to/picture.jpg'" && killall Dock
应用
App Store
列出所有从 App Store 下载的应用
# 通过 find
find /Applications -path '*Contents/_MASReceipt/receipt' -maxdepth 4 -print |\sed 's#.app/Contents/_MASReceipt/receipt#.app#g; s#/Applications/##'
# 通过 Spotlight
mdfind kMDItemAppStoreHasReceipt=1
显示调试菜单
Yosemite 版本起作用
# 开启
defaults write com.apple.appstore ShowDebugMenu -bool true
# 关闭 (默认)
defaults write com.apple.appstore ShowDebugMenu -bool false
苹果远程桌面
唤醒手册
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -help
唤醒和睡眠 ARD Agent 和 Helper
# 激活并且重启 ARD Agent 和 Helper
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -restart -agent -console
# 睡眠并且停止远程管理服务
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -stop
开启和关闭远程桌面共享
# 给予所有用户完全的接入权限
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -configure -allowAccessFor -allUsers -privs -all
# 关闭 ARD Agent 和删除所有用户的接入权限
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -configure -access -off
删除苹果远程桌面设置
sudo rm -rf /var/db/RemoteManagement ; \
sudo defaults delete /Library/Preferences/com.apple.RemoteDesktop.plist ; \
defaults delete ~/Library/Preferences/com.apple.RemoteDesktop.plist ; \
sudo rm -r /Library/Application\ Support/Apple/Remote\ Desktop/ ; \
rm -r ~/Library/Application\ Support/Remote\ Desktop/ ; \
rm -r ~/Library/Containers/com.apple.RemoteDesktop
通讯录
调试模式
# 开启
defaults write com.apple.addressbook ABShowDebugMenu -bool true
# 关闭 (默认)
defaults write com.apple.addressbook ABShowDebugMenu -bool false
卸载 Google 更新
~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/ksinstall --nuke
iTunes
键盘媒体健
Yosemite 版本起作用。从 El Capitan 开始引入了系统完整性保护,可防止系统启动代理被卸载。
# 停止响应按键
launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist
# 响应按键 (默认)
launchctl load -w /System/Library/LaunchAgents/com.apple.rcd.plist
从 El Capitan 开始,您可以禁用 SIP 或者使用某种黑客手段,这将使任何用户都无法访问 iTunes,从而有效地阻止它自己和它的帮助者启动。 请注意,这将无法安装 iTunes ,并可能与操作系统的更新相冲突。
sudo chmod 0000 /Applications/iTunes.app
邮件
将附件显示为图标
Mac 10.14.4 测试,纯文本或其他文件会显示为图标,但是图片会直接插入。图片可以右键转换为图标,或者更换邮箱客户端解决。issue 1
defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes
清空邮件索引
下面的 AppleScript 代码将关闭邮件,清空 SQLite 索引,然后重新打开 Mail。在一个没有优化的大型电子邮件数据库中,可以显着提高响应速度。
(*
加快邮件索引。
代码来源: http://web.archive.org/web/20071008123746/http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
最初由 pmbuko 改编,Romulo 修改。Brett Terpstra 在 2012 年更新,Mathias Törnblom 在 2013 更新到 V3 支持 El Capitan。Andrei Miclaus 在 2017 年更新到 V4,支持 Sierra。
*)
tell application "Mail" to quit
set os_version to do shell script "sw_vers -productVersion"
set mail_version to "V2"
considering numeric strings
if "10.10" <= os_version then set mail_version to "V3"
if "10.12" <= os_version then set mail_version to "V4"
if "10.13" <= os_version then set mail_version to "V5"
if "10.14" <= os_version then set mail_version to "V6"
end considering
set sizeBefore to do shell script "ls -lnah ~/Library/Mail/" & mail_version & "/MailData | grep -E 'Envelope Index$' | awk {'print $5'}"
do shell script "/usr/bin/sqlite3 ~/Library/Mail/" & mail_version & "/MailData/Envelope\\ Index vacuum"
set sizeAfter to do shell script "ls -lnah ~/Library/Mail/" & mail_version & "/MailData | grep -E 'Envelope Index$' | awk {'print $5'}"
display dialog ("Mail index before: " & sizeBefore & return & "Mail index after: " & sizeAfter & return & return & "Enjoy the new speed!")
tell application "Mail" to activate
Safari
改变默认字体
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2StandardFontFamily Georgia
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultFontSize 16
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2FixedFontFamily Menlo
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultFixedFontSize 14
开启开发者菜单以及网络检查
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true && \
defaults write com.apple.Safari IncludeDevelopMenu -bool true && \
defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true && \
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true && \
defaults write -g WebKitDeveloperExtras -bool true
获取当前网页数据
其他选项: get source, get text.
osascript -e 'tell application "Safari" to get URL of current tab of front window'
使用 Backspace/Delete 返回上一页
# 开启
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool YES
# 关闭
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool NO
Sketch
导出压缩 SVG
defaults write com.bohemiancoding.sketch3 exportCompactSVG -bool yes
Skim
关闭自动加载弹窗
去掉弹窗并设置默认自动加载
defaults write -app Skim SKAutoReloadFileUpdate -boolean true
终端
焦点跟随鼠标
# 开启
defaults write com.apple.Terminal FocusFollowsMouse -string YES
# 关闭
defaults write com.apple.Terminal FocusFollowsMouse -string NO
文本编辑
将文本编辑设置为纯文本的默认打开方式
defaults write com.apple.TextEdit RichText -int 0
Visual Studio Code
解决 VSCode Vim 按键重复
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false
备份
时间机器
改变备份间隔
备份间隔改为 30 分钟,单位是秒。
sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 1800
本地备份
本地备份时,时间机器备份卷不可用。
# 查看状态
defaults read /Library/Preferences/com.apple.TimeMachine MobileBackups
# 开启 (默认)
sudo tmutil enablelocal
# 关闭
sudo tmutil disablelocal
从 High Sierra 开始,你无法禁用本地快照。 时间机器始终会创建本地 APFS 快照,并使用该快照作为创建常规备份的数据源,而不是使用活动磁盘作为数据源,就像 HFS 格式化磁盘一样。
防止时间机器提示将新的硬盘启动器作为本分卷
sudo defaults write /Library/Preferences/com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
显示时间机器的日志
这个脚本将输出过去 12 个小时时间机器的备份活动。
#!/bin/sh
filter='processImagePath contains "backupd" and subsystem beginswith "com.apple.TimeMachine"'
# show the last 12 hours
start="$(date -j -v-12H +'%Y-%m-%d %H:%M:%S')"
echo ""
echo "[History (from $start)]"
echo ""
log show --style syslog --info --start "$start" --predicate "$filter"
echo ""
echo "[Following]"
echo ""
log stream --style syslog --info --predicate "$filter"
充电时切换备份
# 查看状态
sudo defaults read /Library/Preferences/com.apple.TimeMachine RequiresACPower
# 开启 (默认)
sudo defaults write /Library/Preferences/com.apple.TimeMachine RequiresACPower -bool true
# 关闭
sudo defaults write /Library/Preferences/com.apple.TimeMachine RequiresACPower -bool false
验证备份
从 OS X 10.11 开始,时间机器记录文件校验和,并且复制到快照。 对于早期版本的 OS X,校验和不会复制到快照。
sudo tmutil verifychecksums /path/to/backup
开发者
Vim
编译 Sane Vim
通过 Homebrew 编译出完整 Mac Vim,包括覆盖系统的 Vim。
brew install macvim --HEAD --with-cscope --with-lua --with-override-system-vim --with-luajit --with-python
Neovim
通过 Homebrew 安装现代化的 Vim 替代品。
brew install neovim
Xcode
安装没有命令行工具的 Xcode
xcode-select --install
删除所有不可用的模拟器
xcrun simctl delete unavailable
程序坞
将最近使用的程序添加到程序坞
defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }' && \
killall Dock
添加间隔符的无名文件夹
defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = {}; "tile-type"="small-spacer-tile"; }' && \
killall Dock
添加空格
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' && \
killall Dock
添加小空格
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="small-spacer-tile";}' && \
killall Dock
根据用户最近的使用自动重排
# 开启 (默认)
defaults write com.apple.dock mru-spaces -bool true && \
killall Dock
# 关闭
defaults write com.apple.dock mru-spaces -bool false && \
killall Dock
图标弹跳
全局设置当唤醒应用时,是否弹跳图标。
# 开启 (默认)
defaults write com.apple.dock no-bouncing -bool true && \
killall Dock
# 关闭
defaults write com.apple.dock no-bouncing -bool false && \
killall Dock
锁住程序坞大小
# 开启
defaults write com.apple.Dock size-immutable -bool yes && \
killall Dock
# 关闭 (默认)
defaults write com.apple.Dock size-immutable -bool no && \
killall Dock
重置程序坞
defaults delete com.apple.dock && \
killall Dock
改变程序坞大小
完全改变程序坞主体大小。要调整大小,将 0 改为整数
defaults write com.apple.dock tilesize -int 0 && \
killall Dock
滚动手势
使用触摸板或鼠标滚轮与程序坞进行交互,允许您使用向上滚动手势打开应用。正在运行的程序也可以使用相同的手势调用程序窗口管理。
# 开启
defaults write com.apple.dock scroll-to-open -bool true && \
killall Dock
# 关闭 (默认)
defaults write com.apple.dock scroll-to-open -bool false && \
killall Dock
启用自动掩藏
defaults write com.apple.dock autohide -bool true && \
killall Dock
设置自动显示和掩藏的延迟时间
浮点数定义了显示和掩藏的延迟时间(单位毫秒)。
defaults write com.apple.dock autohide-time-modifier -float 0.4 && \
defaults write com.apple.dock autohide-delay -float 0 && \
killall Dock
显示掩藏 APP 的图标
# 开启
defaults write com.apple.dock showhidden -bool true && \
killall Dock
# 关闭 (默认)
defaults write com.apple.dock showhidden -bool false && \
killall Dock
仅显示启动的应用程序图标
# 开启
defaults write com.apple.dock static-only -bool true && \
killall Dock
# 关闭 (默认)
defaults write com.apple.dock static-only -bool false && \
killall Dock
文档
将文件转换为 HTML
支持的格式有纯文本、富文本(rtf)以及微软的 Word(doc/docx)。
textutil -convert html file.ext
文件、磁盘和卷
创建一个空文件
创建一个 10 GB 的空文件。
mkfile 10g /path/to/file
禁止突发动作感应
当你使用的是 SSD 时,这个设置是无用的。
sudo pmset -a sms 0
弹出所有可安装的卷
唯一可以向访达发送 AppleScript 命令的方法。
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
修复文件权限
不依赖图形化磁盘工具修复文件权限。
sudo diskutil repairPermissions /
从 OS X El Capitan 开始,系统文件权限将自动受到保护。 不再需要使用磁盘工具验证或修复权限。(来源)
设置启动卷
# Up to Yosemite
bless --mount "/path/to/mounted/volume" --setBoot
# From El Capitan
sudo systemsetup -setstartupdisk /System/Library/CoreServices
示所有附加的磁盘和分区
diskutil list
查看文件系统的使用率
连续显示文件使用信息。
sudo fs_usage
APFS
从 High Sierra 开启,没有中央程序,并且使用不一致,因为大多数功能都被卷入到 tmutil。
将卷从 HFS+ 转换为 APFS
/System/Library/Filesystems/apfs.fs/Contents/Resources/hfs_convert /path/to/file/system
创建新的 APFS 文件系统
/System/Library/Filesystems/apfs.fs/Contents/Resources/newfs_apfs /path/to/device
创建快照
tmutil localsnapshot
删除快照
tmutil deletelocalsnapshots com.apple.TimeMachine.2018-01-26-044042
列出所有快照
tmutil listlocalsnapshots /
挂载快照
快照是只读的。
mkdir ~/mnt
/System/Library/Filesystems/apfs.fs/Contents/Resources/mount_apfs -s com.apple.TimeMachine.2018-01-26-044042 / ~/mnt
磁盘映像
从文件内容创建磁盘映像
将安装的应用程序转换为二进制包。
hdiutil create -volname "Volume Name" -srcfolder /path/to/folder -ov diskimage.dmg
如果你想加密磁盘映像:
hdiutil create -encryption -stdinpass -volname "Volume Name" -srcfolder /path/to/folder -ov encrypted.dmg
打包前,你要输入密码。为了直接输入密码不弹窗:
echo -n YourPassword | hdiutil create -encryption -stdinpass -volname "Volume Name" -srcfolder /path/to/folder -ov encrypted.dmg
将磁盘映像刻录为 DVD
这个命令可以应用在 .iso 、.img 和 .dmg 文件上。
hdiutil burn /path/to/image_file
禁止磁盘映像验证
defaults write com.apple.frameworks.diskimages skip-verify -bool true && \
defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true && \
defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true
制作 OS X 启动卷
bless --folder "/path/to/mounted/volume/System/Library/CoreServices" --bootinfo --bootefi
挂载磁盘映像
hdiutil attach /path/to/diskimage.dmg
卸载磁盘映像
hdiutil detach /dev/disk2s1
将磁盘映像写入到卷中
就像磁盘工具的恢复功能。
sudo asr -restore -noverify -source /path/to/diskimage.dmg -target /Volumes/VolumeToRestoreTo
访达
桌面
显示外部媒体
外部的 HDs 、thumb drives 等等。
# 开启
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true && \
killall Finder
# 关闭 (默认)
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool false && \
killall Finder
显示内部媒体
自建的 HDs 或者 SSDs。
# 开启
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true && \
killall Finder
# 关闭 (默认)
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false && \
killall Finder
显示可移动媒体
CDs 、DVDs 、iPods 等等。
# 开启
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true && \
killall Finder
# 关闭 (默认)
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool false && \
killall Finder
显示网络卷
AFP 、SMB、 NFS、 WebDAV 等等。
# 开启
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true && \
killall Finder
# 关闭 (默认)
defaults write com.apple.finder ShowMountedServersOnDesktop -bool false && \
killall Finder
文件和文件夹
清除所有访问控制列表(ACLs)
sudo chmod -RN /path/to/folder
在访达掩藏文件夹
chflags hidden /path/to/folder/
显示所有文件的扩展名
defaults write -g AppleShowAllExtensions -bool true
显示掩藏文件
# 显示所有
defaults write com.apple.finder AppleShowAllFiles true
# 恢复文件的默认显示
defaults write com.apple.finder AppleShowAllFiles false
删除保护标签
sudo chflags -R nouchg /path/to/file/or/folder
在访达中显示全路径
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
取消隐藏用户文件夹
chflags nohidden ~/Library
增加最近访问文件数量
defaults write -g NSNavRecentPlacesLimit -int 10 && \
killall Finder
布局
显示退出访达按钮
显示 退出访达的默认快捷键是 Cmd + Q 。
# 开启
defaults write com.apple.finder QuitMenuItem -bool true && \
killall Finder
# 关闭 (默认)
defaults write com.apple.finder QuitMenuItem -bool false && \
killall Finder
平滑滚动
对旧 Mac 会弄乱动画很有用。
# 开启
defaults write -g NSScrollAnimationEnabled -bool false
# 关闭 (默认)
defaults write -g NSScrollAnimationEnabled -bool true
橡皮筋滚动
# 禁止
defaults write -g NSScrollViewRubberbanding -bool false
# 关闭 (默认)
defaults write -g NSScrollViewRubberbanding -bool true
展开默认保存面板
defaults write -g NSNavPanelExpandedStateForSaveMode -bool true && \
defaults write -g NSNavPanelExpandedStateForSaveMode2 -bool true
桌面图标可见性
# 掩藏图标
defaults write com.apple.finder CreateDesktop -bool false && \
killall Finder
# 显示图标(默认)
defaults write com.apple.finder CreateDesktop -bool true && \
killall Finder
路径栏
# 显示
defaults write com.apple.finder ShowPathbar -bool true
# 掩藏 (默认)
defaults write com.apple.finder ShowPathbar -bool false
滚动条可见性
可选的选项: WhenScrolling 、Automatic 和 Always。
defaults write -g AppleShowScrollBars -string "Always"
状态栏
# 显示
defaults write com.apple.finder ShowStatusBar -bool true
# 掩藏 (默认)
defaults write com.apple.finder ShowStatusBar -bool false
默认保存到磁盘
设置默认保存地址是本地磁盘,而不是 iCloud 。
defaults write -g NSDocumentSaveNewDocumentsToCloud -bool false
当当前文件夹设置为默认搜索范围
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
设置访达的默认文件夹
defaults write com.apple.finder NewWindowTarget -string "PfLo" && \
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"
设置侧边栏图标大小
将大小设置为中等大小。
defaults write -g NSTableViewDefaultSizeMode -int 2
元数据文件
禁止在网络卷创建元数据文件
避免创建 .DS_Store 以及 AppleDouble 文件。
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
禁止在 USB 卷创建元数据文件
避免创建 .DS_Store 以及 AppleDouble 文件。
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
打开文件
改变访达的工作文件夹
如果同时打开了多个窗口,选择最上面。
cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')"
打开 URL
open https://github.com
打开文件
open README.md
打开应用程序
你可以加上 -a 打开应用程序。
open -a "Google Chrome" https://github.com
打开文件夹
open /path/to/folder/
打开当前文件夹
open .
字体
清空当前用户字体缓存
为了清除所有用户的字体缓存,在命令前加上 sudo。
atsutil databases -removeUser && \
atsutil server -shutdown && \
atsutil server -ping
获取 SF Mono 字体
你需要先下载和安装 Xcode 8 beta,之后所有应用都可以使用。
cp -v /Applications/Xcode-beta.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources/Fonts/SFMono-* ~/Library/Fonts
对于 Sierra 之前的版本,它们包含 Terminal.app 中。
cp -v /Applications/Utilities/Terminal.app/Contents/Resources/Fonts/SFMono-* ~/Library/Fonts
函数
请看 这个文件.
硬件
蓝牙
# 查看状态
defaults read /Library/Preferences/com.apple.Bluetooth ControllerPowerState
# 开启 (默认)
sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 1
# 禁止
sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0 && \
sudo killall -HUP blued
硬盘
强制启用修剪
从 Yosemite 开始,可以开启非苹果 SSD 的修剪。
forcetrim
硬件信息
列出所有硬件端口
networksetup -listallhardwareports
剩余电池百分比
pmset -g batt | egrep "([0-9]+\%).*" -o --colour=auto | cut -f1 -d';'
剩余电池时间
pmset -g batt | egrep "([0-9]+\%).*" -o --colour=auto | cut -f3 -d';'
显示已连接设备的 UDID
system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p'
显示当前屏幕分辨率
system_profiler SPDisplaysDataType | grep Resolution
显示 CPU 品牌信息
sysctl -n machdep.cpu.brand_string
红外传感器
# 查看状态
defaults read /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled
# 开启 (默认)
defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -int 1
# 关闭
defaults write /Library/Preferences/com.apple.driver.AppleIRController DeviceEnabled -int 0
电池管理
禁止电脑休眠
一小时内不使用不睡眠。
caffeinate -u -t 3600
显示所有电池设置
sudo pmset -g
15 分钟无活动后显示器睡眠
sudo pmset displaysleep 15
30 分钟无活动后显示器睡眠
sudo pmset sleep 30
检查系统睡眠剩余时间
sudo systemsetup -getcomputersleep
将系统睡眠剩余时间设置为 60 分钟
sudo systemsetup -setcomputersleep 60
完全关闭系统睡眠
sudo systemsetup -setcomputersleep Never
系统冻结时自动重启
sudo systemsetup -setrestartfreeze on
充电时显示铃声
当 MagSafe 连接时,播放 IOS 充电声音。
# 开启
defaults write com.apple.PowerChime ChimeOnAllHardware -bool true && \
open /System/Library/CoreServices/PowerChime.app
# 关闭 (默认)
defaults write com.apple.PowerChime ChimeOnAllHardware -bool false && \
killall PowerChime
输入设备
键盘
自动纠正
# 禁止
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false
# 开启 (默认)
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool true
# 显示状态
defaults read -g NSAutomaticSpellingCorrectionEnabled
全键盘访问
对话框启用 Tab 。
# 仅限文本框和列表 (默认)
defaults write NSGlobalDomain AppleKeyboardUIMode -int 0
# 所有控件
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
按键重复
禁止默认的 "press and hold" 行为。
# 开启按键重复
defaults write -g ApplePressAndHoldEnabled -bool false
# 禁止按键重复
defaults write -g ApplePressAndHoldEnabled -bool true
按键重复频率
设置非常快的按键频率,根据个人品味调整。
defaults write -g KeyRepeat -int 0.02
启动台
重设启动台布局
你需要重启程序坞,因为启动台与它紧密相连。
# Yosemite 之前的版本
rm ~/Library/Application\ Support/Dock/*.db && \
killall Dock
# El Capitan及以上的版本
defaults write com.apple.dock ResetLaunchPad -bool true && \
killall Dock
删除启动台图标
长按删除图标以及重设启动台布局后,仍然无法删除的图标,使用下面的命令删除。
Gitter 是图标名称,大小写敏感。
sqlite3 $(find /private/var/folders \( -name com.apple.dock.launchpad -a -user $USER \) 2> /dev/null)/db/db "DELETE FROM apps WHERE title='Gitter';" && killall Dock
媒体
音频
将音频文件转换为 iPhone 铃声。
afconvert input.mp3 ringtone.m4r -f m4af
从文本创建音频书
使用 Alex 声音,将单纯的 UTF-8 文本文件转换为 AAC。
say -v Alex -f file.txt -o "output.m4a"
开机禁用声音
sudo nvram SystemAudioVolume=" "
静音音频输出
osascript -e 'set volume output muted true'
设置音量
osascript -e 'set volume 4'
播放音频文件
你可以播放所有 QuickTime 支持的音频格式。
afplay -q 1 filename.mp3
使用系统默认声音讲述文本
say 'All your base are belong to us!'
视频
QuickTime 自动播放视频
defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1
网络
Bonjour
Bonjour 服务
# 禁止
sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array-add "-NoMulticastAdvertisements"
# 开启 (默认)
sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array "/usr/sbin/mDNSResponder" "-launchd"
DHCP
更新 DHCP 租约
sudo ipconfig set en0 DHCP
显示 DHCP 信息
ipconfig getpacket en0
DNS
清除 DNS 缓存
sudo dscacheutil -flushcache && \
sudo killall -HUP mDNSResponder
域名
设置电脑域名
sudo scutil --set ComputerName "newhostname" && \
sudo scutil --set HostName "newhostname" && \
sudo scutil --set LocalHostName "newhostname" && \
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "newhostname"
网络设置
网络位置
在网络设置中切换网络位置。
# 查看状态
scselect
# 切换网络位置
scselect LocationNameFromStatus
设置静态 IP 地址
networksetup -setmanual "Ethernet" 192.168.2.100 255.255.255.0 192.168.2.1
网络工具
查看网络地址是否可以访问
ping -o github.com
解决路由问题
traceroute github.com
SSH
将私钥密码永久添加到 SSH 代理
在 macOS Sierra 之前,ssh 会弹出输入密码的对话框,并提供是否将其存储到钥匙串的选项。 这个功能之后被删除。
在 macOS Sierra 中引入了 UseKeychain 选项,允许用户指定是否将密码存储在钥匙串中。 默认情况下,这个选项是开启的,这会导致所有密码都存储在钥匙串中。
这不是预期的默认行为,因此在 macOS 10.12.2 更改过来。([来源](https://developer.apple.com/library/archive/technotes/tn2449/_index.html))
ssh-add -K /path/to/private_key
Then add to ~/.ssh/config:
Host server.example.com
IdentityFile /path/to/private_key
UseKeychain yes
远程登录
# 开启远程登录
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
# 关闭远程登录
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
TCP/IP
显示使用特定端口的应用程序
输出所有使用 80 端口的应用程序。
sudo lsof -i :80
显示外部 IP 地址
仅当你的 ISP 没有替换 DNS 请求(一般不会)。
dig +short myip.opendns.com @resolver1.opendns.com
在所有网络中都可使用的替代方法。
curl -s https://api.ipify.org && echo
TFTP
启动原生的 TFTP Daemon
文件将从 /private/tftpboot 启动。
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist && \
sudo launchctl start com.apple.tftpd
Wi-Fi
加入 Wi-Fi 网络
networksetup -setairportnetwork en0 WIFI_SSID WIFI_PASSWORD
扫描可用的接入点
创建 airport 轻松接入的符号链接。
sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
运行无线扫描:
airport -s
显示当前的 SSID
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'
显示本地 IP 地址
ipconfig getifaddr en0
显示 Wi-Fi 的连接历史
defaults read /Library/Preferences/SystemConfiguration/com.apple.airport.preferences | grep LastConnected -A 7
显示 Wi-Fi 网络密码
如果你希望使用 SSID 查询密码。
security find-generic-password -D "AirPort network password" -a "SSID" -gw
开启 Wi-Fi 适配器
networksetup -setairportpower en0 on
包管理器
- Fink - Unix 开源软件的全部 Darwin 世界,有点过时。
- Homebrew - OS X 缺少的包管理器,最流行的选择,我使用这个工具。
- MacPorts - 基于 X11 、Aqua 的开源软件,编译、安装和升级软件包命令行工具。 非常干净的工具,原作者使用它。
打印
清除打印队列
cancel -a -
默认展开打印面板
defaults write -g PMPrintingExpandedStateForPrint -bool true && \
defaults write -g PMPrintingExpandedStateForPrint2 -bool true
打印完成后停止打印机
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
安全
应用防火墙
防火墙服务
# 查看状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
# 开启
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
# 关闭 (默认)
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
将应用添加到防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /path/to/file
网关
添加网关异常
spctl --add /path/to/Application.app
删除网关异常
spctl --remove /path/to/Application.app
管理网关
# 查看状态
spctl --status
# 开启 (默认)
sudo spctl --master-enable
# 关闭
sudo spctl --master-disable
密码
产生安全的密码并且复制到剪贴板
LC_ALL=C tr -dc "[:alnum:]" < /dev/urandom | head -c 20 | pbcopy
物理访问
启动屏幕保护程序
# Sierra 之前
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
# Sierra 之后
/System/Library/CoreServices/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
锁屏
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
屏幕锁定
# 查看状态
defaults read com.apple.screensaver askForPasswordDelay
# 开启 (默认)
defaults write com.apple.screensaver askForPasswordDelay -int 0
# 禁止 (Integer = 锁屏的延迟秒数)
defaults write com.apple.screensaver askForPasswordDelay -int 10
屏幕保护密码
# 查看状态
defaults read com.apple.screensaver askForPassword
# 开启
defaults write com.apple.screensaver askForPassword -int 1
# 关闭 (默认)
defaults write com.apple.screensaver askForPassword -int 0
擦除数据
注意:在 MacOS 10.9 之后,srm 命令已经被删除了。 [Apple 支持页面](https://support.apple.com/en-us/HT201949)解释了原因。
使用 SSD 驱动器时,磁盘工具中不提供安全擦除和擦除可用空间功能。 SSD 驱动器不需要这些选项,因为标准擦除使得难以从 SSD 恢复数据。
安全删除文件
srm /path/to/file
安全删除文件夹
srm -r /path/to/folder/
安全强制删除文件夹
srm -rf /path/to/complete/destruction
搜索
查找
递归删除 .DS_Store 文件
find . -type f -name '*.DS_Store' -ls -delete
定位
建立定位数据库
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
通过定位查询
-i修饰符意味着搜索对大小写敏感。
locate -i *.jpg
系统
AirDrop
# 在 Ethernet 以上版本以及不支持的 Mac 版本,开启 AirDrop
defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true
# 开启 (默认)
defaults remove com.apple.NetworkBrowser DisableAirDrop
# 关闭
defaults write com.apple.NetworkBrowser DisableAirDrop -bool YES
AppleScript
执行 AppleScript
osascript /path/to/script.scpt
基础
比较两个文件夹
diff -qr /path/to/folder1 /path/to/folder2
复制较大文件显示进度条
确定你已经安装了 pv,并且使用适当的写入设备或者文件替换了 /dev/rdisk2。
FILE=/path/to/file.iso pv -s $(du -h $FILE | awk '/.*/ {print $1}') $FILE | sudo dd of=/dev/rdisk2 bs=1m
修复疯狂 Shell
如果你的 shell 会话疯狂。(比如某些脚本或应用程序将其变成乱码)。
stty sane
重启
sudo reboot
关机
sudo poweroff
显示 OS 版本信息
sw_vers
开机时间
显示上次开机到现在过去的时间。
uptime
剪贴板
复制数据到剪贴板
cat whatever.txt | pbcopy
将剪贴板数据转换为纯文本
pbpaste | textutil -convert txt -stdin -stdout -encoding 30 | pbcopy
将剪贴板内容中的 Tab 转换为空格
pbpaste | expand | pbcopy
复制剪贴板的数据
pbpaste > whatever.txt
删除剪贴板重复内容以及排序
pbpaste | sort | uniq | pbcopy
文件库
重启自动解锁文件库
如果在当前卷上启用了文件库,则会绕过初始解锁,重新启动系统。 该命令可能无法在所有版本上运行。
sudo fdesetup authrestart
文件库服务
# 查看状态
sudo fdesetup status
# 开启
sudo fdesetup enable
# 禁止 (默认)
sudo fdesetup disable
信息/报告
产生高级系统和性能报告
sudo sysdiagnose -f ~/Desktop/
安装系统
创建安装启动器
# Mojave
sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --nointeraction --downloadassets
# High Sierra
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ High\ Sierra.app
# Sierra
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ Sierra.app
# El Capitan
sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app
# Yosemite
sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app
- 删除驱动器之前进行确认,删去
--nointeraction选项。 - Mojave 中才可以使用
--downloadassets选项。 安装过程中可能会下载资源,比如更新。 - 从 Mojave 开始,
--applicationpath选项以及被废弃。使用该选项会抛出错误。
内核扩展
展示加载的内核扩展
sudo kextstat -l
加载内核扩展
sudo kextload -b com.apple.driver.ExampleBundle
卸载内核扩展
sudo kextunload -b com.apple.driver.ExampleBundle
自启动服务
请看 自启动服务.
自启动服务
重建自启动服务数据库
为了做到与 OS X 版本无关,这个工具依赖 locate 查找 lsregister。 如果你还没有建立你的 locate 数据库,请先创建。
sudo $(locate lsregister) -kill -seed -r
登录窗口
设置登录窗口文本
sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Your text"
内存管理
清除内存缓存
sudo purge
显示内存统计
# One time
vm_stat
# Table of data, repeat 10 times total, 1 second wait between each poll
vm_stat -c 10 1
通知中心
通知中心服务
# 关闭
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist && \
killall -9 NotificationCenter
# 启动 (默认)
launchctl load -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist
快速浏览
快速浏览文件
qlmanage -p /path/to/file
远程苹果事件
# 查看状态
sudo systemsetup -getremoteappleevents
# 开启
sudo systemsetup -setremoteappleevents on
# 禁止 (默认)
sudo systemsetup -setremoteappleevents off
Root 用户
# 开启
dsenableroot
# 禁止
dsenableroot -d
安全模式启动
# 查看状态
nvram boot-args
# 开启
sudo nvram boot-args="-x"
# 禁止
sudo nvram boot-args=""
截图
延迟截图
3 秒后截图为 JPEG 文件,并且在预览中展示。
screencapture -T 3 -t jpg -P delayedpic.jpg
保存截图到给定位置
设置保存地址为桌面。
defaults write com.apple.screencapture location ~/Desktop && \
killall SystemUIServer
设置截图文件格式
设置截图文件格式为 png,可选的格式有 bmp, gif, jpg, jpeg, pdf, tiff 。
defaults write com.apple.screencapture type -string "png"
禁止截图阴影
defaults write com.apple.screencapture disable-shadow -bool true && \
killall SystemUIServer
设置截图的默认文件名
截图文件名的时间戳保持不变。
defaults write com.apple.screencapture name "Example name" && \
killall SystemUIServer
软件安装
安装 PKG
installer -pkg /path/to/installer.pkg -target /
软件更新
更新所有可以更新的软件
sudo softwareupdate -ia
设置软件更新检查的时间间隔
将软件更新检查的时间间隔设置为天,而不是默认的周。
defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1
显示所有可以更新的软件
sudo softwareupdate -l
设置软件更新服务器
这仅适用于测试或非托管的客户端。 要在网络范围内使用,请正确设置 DNS 以及 Apple SUS 服务 并通过 OpenDirectory 绑定客户端。 或者,使用 Reposado 正确设置网络 DNS,使分辨率变得透明。 Margarita 看起来也不错。
# 使用自己 SUS
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL http://su.example.com:8088/index.sucatalog
# 恢复苹果的默认 SUS
sudo defaults delete /Library/Preferences/com.apple.SoftwareUpdate CatalogURL
软件版本
显示系统的版本号
sw_vers -productVersion
聚焦
聚焦索引
# 禁止
mdutil -i off -d /path/to/volume
# 关闭 (默认)
mdutil -i on /path/to/volume
擦除聚焦索引并重建
mdutil -E /path/to/volume
通过聚焦搜索
mdfind -name 'searchterm'
显示聚焦索引元数据
mdls /path/to/file
系统完整性保护
禁止系统完整性保护
按住 Cmd + R 重启,打开终端输入以下命令:
csrutil disable && reboot
开启系统完整性保护
按住 Cmd + R 重启,打开终端输入以下命令:
csrutil enable && reboot
时间和日期
列出所有时区
sudo systemsetup -listtimezones
设置时区
sudo systemsetup -settimezone Europe/Berlin
网络时间设置时钟
# 查看状态
sudo systemsetup getusingnetworktime
# 开启 (默认)
sudo systemsetup setusingnetworktime on
# 关闭
sudo systemsetup setusingnetworktime off
终端
终端响铃
开启终端响铃,并在其上显示徽标数。
tput bel
替代终端
Shells
Bash
安装最新版本的 Bash,并且设置为用户的默认的 shell
brew install bash && \
echo $(brew --prefix)/bin/bash | sudo tee -a /etc/shells && \
chsh -s $(brew --prefix)/bin/bash
fish
安装最新版本的 fish,并且设置为用户的默认的 shell
brew install fish && \
echo $(brew --prefix)/bin/fish | sudo tee -a /etc/shells && \
chsh -s $(brew --prefix)/bin/fish
- Homepage - 一个对 OS X 、Linux 用户友好的智能 shell,支持更多系统。
- The Fishshell Framework - 提供核心基础结构,允许您扩展或修改 shell 外观的软件包。
- Installation & Configuration Tutorial - 怎样通过 Fisherman、Powerline Fonts、 iTerm2 和 Budspencer Theme 安装 Fish Shell。
Zsh
安装最新版本的 Zsh,并且设置为用户的默认的 shell
brew install zsh && \
sudo sh -c 'echo $(brew --prefix)/bin/zsh >> /etc/shells' && \
chsh -s $(brew --prefix)/bin/zsh
- Homepage - 尽管 Zsh 是一种强大的脚本语言,它是专为交互式使用而设计的 shell。
- Oh My Zsh - 社区驱动开源框架,用于管理 Zsh 配置。
- Prezto - 一个快速的 Zsh 框架。 使用默认值,别名,函数,自动完成和主题来丰富命令行界面环境。
- zgen - 另一个管理 Zsh 配置的开源框架。 Zgen 可以兼容 oh-my-zsh 的插件和主题,并且具有自动克隆任何插件以及更快的优点。
终端字体
- Anonymous Pro - 四种固定宽度系列字体,适用于编程。
- Codeface - 用于开发人员的图库和等宽字体库。
- DejaVu Sans Mono - 基于 Vera Fonts 的字体家族。
- Hack - Hack 手动整理字体,是你编程字体的首选。
- Inconsolata - 一种等宽字体,专为编程设计。
- Input - 专为编程响应系统的字体设计。
- Meslo - Apple's Menlo 字体的自制版本.
- Operator Mono - 令人惊讶的商业等宽字体。
- Powerline Fonts - Powerline 插件的修补字体仓库
- Source Code Pro - 专为用户交互以及编程的等宽字体家族。
词汇表
Mac OS X、OS X 以及 macOS 的版本信息
| 版本 | 名称 | 发布日期 | 最新版本 |
|---|---|---|---|
| Rhapsody Developer Release | Grail1Z4 / Titan1U | August 31, 1997 | DR2 (May 14, 1998) |
| Mac OS X Server 1.0 | Hera | March 16, 1999 | 1.2v3 (October 27, 2000) |
| Mac OS X Developer Preview | n/a | March 16, 1999 | DP4 (April 5, 2000) |
| Mac OS X Public Beta | Kodiak | September 13, 2000 | n/a |
| Mac OS X 10.0 | Cheetah | March 24, 2001 | 10.0.4 (June 22, 2001) |
| Mac OS X 10.1 | Puma | September 25, 2001 | 10.1.5 (June 6, 2002) |
| Mac OS X 10.2 | Jaguar | August 24, 2002 | 10.2.8 (October 3, 2003) |
| Mac OS X 10.3 | Panther | October 24, 2003 | 10.3.9 (April 15, 2005) |
| Mac OS X 10.4 | Tiger | April 29, 2005 | 10.4.11 (November 14, 2007) |
| Mac OS X 10.5 | Leopard | October 26, 2007 | 10.5.8 (August 5, 2009) |
| Mac OS X 10.6 | Snow Leopard | August 28, 2009 | 10.6.8 v1.1 (July 25, 2011) |
| Mac OS X 10.7 | Lion | July 20, 2011 | 10.7.5 (September 19, 2012) |
| OS X 10.8 | Mountain Lion | July 25, 2012 | 10.8.5 (12F45) (October 3, 2013) |
| OS X 10.9 | Mavericks | October 22, 2013 | 10.9.5 (13F1112) (September 18, 2014) |
| OS X 10.10 | Yosemite | October 16, 2014 | 10.10.5 (14F27) (August 13, 2015) |
| OS X 10.11 | El Capitan | September 30, 2015 | 10.11.6 (15G31) (July 18, 2016) |
| macOS 10.12 | Sierra | September 20, 2016 | 10.12.6 (16G29) (July 19, 2017) |
| macOS 10.13 | High Sierra | September 25, 2017 | 10.13.6 (17G65) (July 9, 2018) |
| macOS 10.14 | Mojave | September 24, 2018 | 10.14 (18A391) (September 24, 2018) |
Explorar proyectos relacionados
codecrafters-io/build-your-own-x
Domina la programación recreando desde cero tus tecnologías favoritas.
562,336 estrellaspublic-apis/public-apis
Una lista colectiva de API gratuitas
498,774 estrellasmorluto/rea
Ingeniería inversa de cualquier cosa con agentes, desde el comportamiento de la aplicación hasta los binarios nativos.
457,513 estrellasopenclaw/openclaw
La IA que de verdad hace las cosas. Cualquier sistema operativo y cualquier plataforma. Al estilo langosta. 🦞
394,398 estrellas