awesome-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
# 通过 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
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
~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/ksinstall --nuke
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
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'
# 开启
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool YES
# 关闭
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool NO
defaults write com.bohemiancoding.sketch3 exportCompactSVG -bool yes
去掉弹窗并设置默认自动加载
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
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
通过 Homebrew 编译出完整 Mac Vim,包括覆盖系统的 Vim。
brew install macvim --HEAD --with-cscope --with-lua --with-override-system-vim --with-luajit --with-python
通过 Homebrew 安装现代化的 Vim 替代品。
brew install neovim
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
# 开启
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
支持的格式有纯文本、富文本(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
从 High Sierra 开启,没有中央程序,并且使用不一致,因为大多数功能都被卷入到 tmutil
。
/System/Library/Filesystems/apfs.fs/Contents/Resources/hfs_convert /path/to/file/system
/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
这个命令可以应用在 .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
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
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
避免创建 .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)')"
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
你需要先下载和安装 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';'
system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p'
system_profiler SPDisplaysDataType | grep Resolution
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
sudo pmset displaysleep 15
sudo pmset sleep 30
sudo systemsetup -getcomputersleep
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
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!'
defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1
# 禁止
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"
sudo ipconfig set en0 DHCP
ipconfig getpacket en0
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
networksetup -setmanual "Ethernet" 192.168.2.100 255.255.255.0 192.168.2.1
ping -o github.com
traceroute github.com
在 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
输出所有使用 80 端口的应用程序。
sudo lsof -i :80
仅当你的 ISP 没有替换 DNS 请求(一般不会)。
dig +short myip.opendns.com @resolver1.opendns.com
在所有网络中都可使用的替代方法。
curl -s https://api.ipify.org && echo
文件将从 /private/tftpboot
启动。
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist && \
sudo launchctl start com.apple.tftpd
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
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'
ipconfig getifaddr en0
defaults read /Library/Preferences/SystemConfiguration/com.apple.airport.preferences | grep LastConnected -A 7
如果你希望使用 SSID 查询密码。
security find-generic-password -D "AirPort network password" -a "SSID" -gw
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
find . -type f -name '*.DS_Store' -ls -delete
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
-i
修饰符意味着搜索对大小写敏感。
locate -i *.jpg
# 在 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
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 会话疯狂。(比如某些脚本或应用程序将其变成乱码)。
stty sane
sudo reboot
sudo poweroff
sw_vers
显示上次开机到现在过去的时间。
uptime
cat whatever.txt | pbcopy
pbpaste | textutil -convert txt -stdin -stdout -encoding 30 | pbcopy
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
# 开启
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
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
安装最新版本的 Bash,并且设置为用户的默认的 shell
brew install bash && \
echo $(brew --prefix)/bin/bash | sudo tee -a /etc/shells && \
chsh -s $(brew --prefix)/bin/bash
安装最新版本的 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,并且设置为用户的默认的 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 - 专为用户交互以及编程的等宽字体家族。
版本 | 名称 | 发布日期 | 最新版本 |
---|---|---|---|
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) |