网淘吧来吧,欢迎您!

macOS

2026-03-31 新闻来源:网淘吧 围观:19
电脑广告
手机广告

BSD 与 GNU 命令对比

  • sed -i需要扩展名参数:sed -i '' 's/a/b/' file——空字符串表示不备份,Linux 不需要这个参数
  • find不支持-printf——改用-exec statxargs配合stat -f替代
  • date使用不同的格式标志:date -j -f '%Y-%m-%d' '2024-01-15' '+%s'——-j阻止设置时间
  • grep -P(Perl 正则表达式)不存在——改用grep -E(扩展正则表达式)或自行安装ggrep通过Homebrew安装
  • xargs默认使用/usr/bin/echo而非指定命令——请始终明确指定命令
  • readlink -f不存在——请使用realpathpython3 -c "import os; print(os.path.realpath('path'))"

Homebrew路径

  • Apple Silicon芯片:/opt/homebrew/bin/opt/homebrew/lib
  • Intel芯片:/usr/local/bin/usr/local/lib
  • 检查系统架构:uname -m返回arm64x86_64
  • Homebrew不会自动添加到PATH中 — 检查~/.zprofile寻找eval行
  • 运行x86二进制文件:arch -x86_64 /bin/bash然后安装/运行仅支持Intel的工具

钥匙串(密钥管理)

  • 存储:security add-generic-password -a "$USER" -s "service_name" -w "secret_value" -U
  • 检索:security find-generic-password -a "$USER" -s "service_name" -w
  • -U标志用于更新现有条目 — 若无此标志,重复条目会报错
  • 钥匙串在首次使用时请求访问权限 — 为自动化操作永久授权
  • 删除:security delete-generic-password -a "$USER" -s "service_name"

launchd(服务管理)

  • 用户代理:~/Library/LaunchAgents/— 用户登录时以用户身份运行
  • 系统守护进程:/Library/LaunchDaemons/— 以 root 身份在启动时运行
  • 加载:launchctl load -w ~/Library/LaunchAgents/com.example.plist
  • 编辑前先卸载:launchctl unload— 对已加载 plist 文件的修改将被忽略
  • 检查错误:launchctl list | grep service_name然后launchctl error <退出代码>
  • 日志:log show --predicate 'subsystem == "com.example"' --last 1h

隐私权限 (TCC)

  • 若未授予"完全磁盘访问"或"自动化"权限,自动化脚本会静默失败
  • 在系统设置 → 隐私与安全性 → 对应类别中授予权限
  • 终端和 iTerm 需要分别授予权限 — 授予其中一个不会同时授予另一个
  • tccutil reset清除权限:tccutil reset AppleEvents针对自动化权限
  • 检查已授予的权限:sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "SELECT * FROM access"

defaults(偏好设置)

  • 读取:defaults read com.apple.finder AppleShowAllFiles
  • 写入:defaults write com.apple.finder AppleShowAllFiles -bool true
  • 删除:defaults delete com.apple.finder AppleShowAllFiles
  • 更改后重启应用:killall Finder
  • 查找应用包标识符:osascript -e 'id of app "App Name"'
  • 导出全部:defaults export com.apple.finder -输出XML格式

文件操作

  • ditto保留资源分支和元数据 — 在处理应用包时使用此命令代替cp创建DMG:
  • Create DMG:hdiutil create -volname "名称" -srcfolder ./文件夹 -format UDZO 输出文件.dmg
  • 挂载 DMG:hdiutil attach 镜像文件.dmg—— 返回挂载点路径
  • 卸载:hdiutil detach /Volumes/名称
  • 扩展属性:xattr -l 文件用于列出属性,xattr -c 文件用于清除所有属性
  • 移除隔离属性:xattr -d com.apple.quarantine 应用程序.app

剪贴板

  • 复制到剪贴板:echo "文本" | pbcopy
  • 从剪贴板粘贴:pbpaste
  • 复制文件内容:pbcopy < 文件.txt
  • 保留 RTF 格式:pbpaste -Prefer rtf
  • 剪贴板在 SSH 会话中对本地机器有效——便于远程文件复制

截图与屏幕

  • 截图区域至文件:screencapture -i output.png
  • 截图窗口:screencapture -w output.png
  • 截图至剪贴板:screencapture -c
  • 无界面模式(无UI):screencapture -x—— 抑制声音和光标
  • 屏幕录制需要在隐私设置中授予屏幕录制权限

进程管理

  • 防止睡眠:caffeinate -i command—— 在命令运行时保持系统唤醒
  • 带超时防止睡眠:caffeinate -t 3600—— 1小时
  • 检查为何不睡眠:pmset -g assertions
  • 电源设置:pmset -g用于查看,sudo pmset -a sleep 0以禁用睡眠
  • 当前焦点应用:osascript -e 'tell application "System Events" to get name of first process whose frontmost is true'

网络

  • 列出接口:networksetup -listallhardwareports
  • 获取IP:ipconfig getifaddr en0(Wi-Fi在笔记本电脑上通常为en0)
  • DNS服务器:scutil --dns | grep nameserver
  • 刷新DNS:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • 代理设置:networksetup -getwebproxy "Wi-Fi"

系统完整性保护

  • 检查状态:csrutil status
  • 禁用(仅在恢复模式下):csrutil disable——不建议在生产环境中使用
  • 受保护路径:/System/usr(除了/usr/local)、/sbin/bin
  • 即使以 root 身份也无法修改这些路径——请围绕此设计你的自动化流程

日志

  • 实时流式查看:log stream --predicate 'process == "processname"'
  • 搜索近期记录:log show --last 1h --predicate 'eventMessage contains "error"'
  • 子系统筛选:log show --predicate 'subsystem == "com.apple.example"'
  • 保存至文件:log collect --output ./logs.logarchive——会在 Console.app 中打开

自动化技巧

  • 打开 URL:open "https://example.com"— 使用默认浏览器
  • 打开应用程序:open -a "Safari"— 按名称而非路径
  • 使用特定应用程序打开文件:open -a "TextEdit" file.txt
  • 运行 AppleScript:osascript -e 'tell application "Finder" to get name of home'
  • Spotlight 搜索:mdfind "kMDItemDisplayName == 'filename.txt'"— 对于已索引的文件,比 find 命令更快

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Obsidian Tasks 下一篇:Openclaw Social Scheduler

相关文章

您是本站第349300名访客 今日有175篇新文章/评论