MacOS使用技巧
恢复u盘实际容量
装机系统启动盘恢复
1 | # 查看要回复的 U盘 |
log 命令
查看过去一小时日志
1 | log show --info --start "$(date -u -v-1H +%Y-%m-%d\ %H:%M:%S)" |
查看 sshd 进程最后10条记录
1 | log show --predicate 'process == "sshd"' --info --last 10 |
命令行操作远程登录
1 | # 查看远程登录是否开启 |
命令行使用 typora 打开 markdown 文件
1 | echo 'alias typora="open -a typora"' >> ~/.zshrc |
iPhone、iPad 备份位置
1 | ls -lah ~/Library/Application\ Support/MobileSync/Backup/ |
远程桌面管理
在 访达
中键入 ⌘ + K
输入 vnc://192.168.36.47
。
命令行方式开启远程管理
开启
1 | # 允许指定用户 |
关闭
1 | sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -configure -access -off |
Mac 如何清除 dns 缓存
10.11.5及以上
1
sudo killall mDNSResponder
10.10.4
1
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say cache flushed
tar 打包时存在多余 _ 文件
1 | find . -name "._*" | xargs rm -f |
1 | COPYFILE_DISABLE=1 tar -cvf inws.tar inws |
Mac 开启远程登录
- 系统偏好设置
- 共享
- 勾选允许远程登陆
xcode 无法升级 - 一直提示”无法连接到服务器”
访问官方网站 https://developer.apple.com/download/more 下载xcode
最新包.
刚下载的 xx.app 运行时提示软件已损坏,无法打开
设置允许任何来源
系统偏好设置 -> 安全性与隐私 -> 任何来源
macOS Sierra 10.12
系统需要执行以下命令:1
sudo spctl --master-disable
修复 xxx.app
1
sudo xattr -rd com.apple.quarantine /Applications/VLC.app
git diff 时出现的 ^M
1 | # 去除git diff 时出现的 ^M(只是git不再提醒了,内容并未变化) |
brew install Error: Your Command Line Tools are too outdated
1 | $ softwareupdate --list |
1 | $ sudo rm -rf /Library/Developer/CommandLineTools |
brew 切换至清华大学源。
https://juejin.cn/post/6844904069471928328
在执行 brew install 命令时,自动升级旧版软件
1 | # 防止升级所有软件 |
切换至 root 用户
1 | sudo su |
mount_hfs: Operation not permitted?
起因:iMac 默认配置是机械硬盘,为了提速换成了USB外接固态硬盘。并将硬盘划分了两块分区,第一块分区做系统盘,第二块分区做代码数据盘(区分大小写—为了与线上环境保持一致),第二块分区在开机未登录的时候是未挂载到系统上了,在用户登录后会自动进行挂载。目前一些文件做了软链至第二块分区,这就导致自启动脚本需依赖挂载第二块分区后才能正常运行。
本来是想放到 launchctl 自启动脚本中的,但尝试了各种办法未实现,但 crontab 确可以。
mount 命令需要 sudo 权限,下面方法也是为了解决在使用 sudo 时不需要输入密码。
创建
mount-disk.sh
脚本1
2
3
4
5
6
7
8
if [ -z "$(mount | grep 'work')" ]; then
echo $(date '+%F %H:%M:%S')": try mount..."
mkdir /Volumes/work || mount -t hfs /dev/disk1s3 /Volumes/work
else
echo $(date '+%F %H:%M:%S')": mounted..."
fi
1 | # 添加执行权限 |
crontab -e
添加 crontab 任务1
* * * * * /usr/bin/sudo /Users/codezm/intranet-penetration/mount-disk.sh >> /tmp/crontab-root.log 2>&1
sudo 取消密码输入
1
2
3
4
5
6
7
8
9
10
11
12sudo visudo
# 将以下内容
# root and users in group wheel can run anything on any machine as any user
root ALL = (ALL) ALL
%admin ALL = (ALL) ALL
# 替换为
# root and users in group wheel can run anything on any machine as any user
root ALL = (ALL) ALL
%admin ALL = (ALL) ALL
codezm ALL=(ALL) NOPASSWD: /Users/codezm/intranet-penetration/mount-disk.sh
Crontab: Operation not permitted?
受Mac系统保护的影响,crontab 默认仅允许在用户主目录下执行脚本。
但脚本不在用户主目录下,则需要将 cron 添加到 完整磁盘访问权限
中,否则就会出现 Operation not permitted
错误。

具体操作步骤:
- 系统偏好设置 -> 安全与隐私 -> 隐私 -> 完全磁盘访问权限
- 点击
点按锁按钮以进行更改。
,输入账号及密码。 - 点击
+
,使用shift+command+G
快捷键,输入/usr/bin/cron
,点击打开
按钮。 - 点击
点按锁按钮以防再次更改。
。
查看crontab任务未执行原因:
1 | $ sudo launchctl list | grep 'cron' |
参考:
- https://apple.stackexchange.com/questions/378553/crontab-operation-not-permitted
- https://blog.humh.cn/?p=947
Mac 网络配置
1 | # 查看路由表 |
Mac 平台 tar
打包后,在其他平台解压时出现多余 ._
文件
设置 COPYFILE_DISABLE
变量,使其在压缩时避免生成 ._
文件。
解决方案
1 | tar --disable-copyfile -zcvf files |
1 | # 创建包文件 |
tar 中 -z
是压缩,-c
是归档,凡使用这两个参数创建的压缩包文件,则不能向其再追加文件。
mysql 更改存储路径
更改配置文件
vim /usr/local/opt/mysql/homebrew.mxcl.mysql.plist
1 | 将默认路径 `/usr/local/var/mysql` 更换为自定义路径 `/Volumes/work/web/databases/3306` |
vim /usr/local/opt/mysql@5.7/homebrew.mxcl.mysql@5.7.plist
1 | 将默认路径 `/usr/local/var/mysql` 更换为自定义路径 `/Volumes/work/web/databases/3307` |
删除默认数据存储目录
1 | rm -rf /usr/local/var/mysql |
初始化数据库
1 | /usr/local/Cellar/mysql/8.0.23/bin/mysqld --datadir=/Volumes/work/web/databases/3306 --initialize-insecure |
迁移数据
Got a packet bigger than 'max_allowed_packet' bytes
1 | # 默认:4M = 4194304,此处调整为 100M。 |
brew
在使用 brew list | grep mysql
命令时,提示 Error: Cask 'java' is unreadable: undefined method 'undent' for #<String:0x00007f8685373738>
错误信息。
1 | find "$(brew --prefix)/Caskroom/"*'/.metadata' -type f -name '*.rb' | xargs grep 'EOS.undent' --files-with-matches | xargs sed -i '' 's/EOS.undent/EOS/' |
在 Mac 上压缩含有中文名的文件后,再在 Windows 上解压时乱码
原因:Mac、Linux 默认使用的是 UTF-8 编码,而 Windows 使用的是 GBK 编码。
安装并使用 Keka 压缩软件,压缩格式设置为 7z
。
Keka
是一款免费且 开源 的文件压缩、解压软件。
禁止在移动存储设备上创建 .Trashes、.Spotlight-V100、.fseventsd 目录
1 | # 关闭索引创建 |
显示通知
脚本运行完后,来个提醒
1 | osascript -e 'display notification "hello world!"' |
参考
更新系统时间
1 | sudo sntp -sS time.apple.com |
Mac 备份盘
分区格式:Mac OS 扩展(日志式)
Mac 端重启 sshd 服务
1 | sudo kill -SIGHUP $(ps aux | grep sshd | grep priv | awk '{print $2}') |
iTunes 在 Mac 上的备份
1 | cd ~/Library/Application Support/MobileSync/Backup |
在 Finder
访达中显示/隐藏 .
前缀的隐藏文件快捷键
Shift + CMD + .
访达
跳转目录
Command + shift + g
输入目录路径。
刷新网页、强制刷新网页快捷键
- 刷新网页:
CMD + r
。 - 强制刷新网页:
Shift + CMD + r
。
查看文件权限、附加权限
普通文件可通过 ls -l
命令,查看文件所属用户、用户组。但部分文件增加了 @
符,是 Mac OS 追加的附加权限,可通过 xattr -l
命令查看。
如何更改 Mac 文件的默认打开方式
更改某一文件的默认打开方式
- 右键单击该文件
- 按住
option
键,在始终以此方式打开
列表中选择要打开此文件的应用。
以后再鼠标双击打开该文件时将使用配置的应用打开,但其他同类型文件则使用默认应用。
更改同类型文件的默认打开方式
- 右键单击该文件
- 选择
显示简介
选项。 - 在
打开方式
中,选择此后缀文件默认打开的应用。 - 点击
全部更改
按钮。
以后所有此后缀文件均有该应用打开,要想复原可再次通过以上步骤操作。
如何禁止创建 .DS_Store
文件
并未实践操作证明此项配置生效
1 | defaults write com.apple.desktopservices DSDontWriteNetworkStores true |
~/Libaray/Developer
占用大量存储空间
1 | $ du -d 1 -h |
修改主机名:hostname
1 | sudo scutil --set HostName codezm-Cicada |
MacBook Pro 2015款
随航❌:https://support.apple.com/zh-cn/HT210380
随航:可以将 iPad 用作显示屏,从而扩展或镜像 Mac 桌面。
通用控制❌:https://support.apple.com/zh-cn/HT212757
接力✅:https://support.apple.com/zh-cn/HT209455
Mac、iPhone、iPad、iPod touch 和 Apple Watch 上“连续互通”的系统要求