Basis - OS - Mac OS X

闷骚的程序员

快捷键约定:

C –> Ctrl

S –> Shift

M –> Alt/Option

Cmd –> Command

Mac 键盘快捷键官方参考

窗口

功能快捷键
显示桌面F11
上/下一个桌面/工作区C-Left/Right
切换窗口全屏状态C-Cmd-F
隐藏当前程序的所有窗口Cmd-H
最小化窗口Cmd-M
关闭窗口Cmd-W
关闭当前程序Cmd-Q
新建标签Cmd-T
新建窗口Cmd-N
调度中心C-Up
当前应用的所有窗口C-Down

程序

功能快捷键
打开 emoji 表情窗口C-Cmd- 空格
打开 SpotlightC- 空格
切换输入法Cmd- 空格
打开 AlfredM- 空格
打开 Finder 并查找C-M- 空格
打开 Launchpad四指合拢

音量

功能快捷键
微调音量M-S-音量加/音量减

命令行

快捷键

功能按键
移动光标至行首C-a
移动光标至行尾C-e
清屏C-l
删除光标前的所有文字。如果光标位于行尾则删除整行。C-u
与退格键相同C-h
检索使用过的命令C-r
终止当前执行C-c
退出当前 shellC-d
将执行中的任何东西放入后台进程。fg 可以将其恢复。C-z
删除光标之前的单词C-w
删除光标后的所有文字C-k
将光标前的两个文字进行互换C-t
光标向前移动一个单词C-f
光标向后移动一个单词C-b
将光标前的两个单词进行互换Esc + t
自动补全文件或文件夹的名称Tab

命令

按键 / 命令描述
cdHome 目录
cd [folder]切换目录
cd ~Home 目录,例如 ‘cd ~/folder/’
cd /根目录
ls文件列表
ls -l文件详细列表
ls -a列出隐藏文件
ls -lh文件详细列表中的文件大小以更友好的形式列出
ls -R递归显示文件夹中的内容
sudo [command]以超级用户身份执行命令
open [file]打开文件 ( 相当于双击一个文件 )
top显示运行中的进程,按 q 终止
nano [file]打开编辑
pico [file]打开编辑
q退出
clear清屏

命令历史

按键/命令描述
history n列出最近执行过的 n 条命令
ctrl-r检索之前执行过的命令
![value]执行最近以 ‘value’ 开始的命令
!!执行最近执行过的命令

文件管理

按键/命令描述
Cmd-Shift-.显示/恢复隐藏文件
touch [file]创建一个新文件
pwd显示当前工作目录
..上级目录, 例如.
‘ls -l ..’上级目录的文件详细列表
‘cd ../../’向上移动两个层级
.当前目录
cat连接
rm [file]移除文件, 例如 rm [file] [file]
rm -i [file]移除时出现确认提示
rm -r [dir]移除文件及内容
rm -f [file]强制移除
cp [file] [newfile]复制文件
cp [file] [dir]复制文件到指定目录
mv [file] [new filename]移动 / 重命名, 例如 mv -v [file] [dir]

目录管理

按键/命令描述
mkdir [dir]创建新目录
mkdir -p [dir]/[dir]创建子目录
rmdir [dir]移除目录 ( 仅限目录下没有内容时 )
rm -R [dir]移除目录及内容

管道 - 连接多个带有输出的命令

按键/命令描述
more按当前窗口大小输出内容
> [file]输出至指定文件, 注意文件将会覆盖
» [file]在制定文件的末尾附加内容
<从文件中读取内容

帮助

按键/命令描述
[command] -h显示帮助信息
[command] –help显示帮助信息
[command] help显示帮助信息
reset重置当前终端
man [command]显示指定命令的帮助信息
whatis [command]显示指定命令的简述

搜索

  • 使用 find 命令,例如:

    find ~ -iname aapt
    
  • 使用 mdfind 命令,例如:

    全局搜索

    mdfind -name aapt
    

    或搜索指定文件夹

    mdfind -onlyin ~/Library aapt
    
  • 使用 locate 命令,例如:

    locate aapt
    

复制文件路径

  • 在 Finder 下

    先按键 Cmd-i,然后从弹出的窗口里复制。

  • 在 Terminal 下

    pwd|pbcopy
    

Safari

功能快捷键
定位到地址栏Cmd-L
切换标签Cmd-S-Left/Right
收藏页面Cmd-D

保存 Safari 里正在播放的视频

$ su
# cd /private/var/folders
# ls
nk zz
# cd nk
# ls
zy3770994vqg83xvmbc9pd0m0000gn
# cd zy3770994vqg83xvmbc9pd0m0000gn/T
# open .

然后复制里面叫 FlashTmp.xxx 的文件,改名为 FlashTmp.flv。(操作过程中保持视频在播放状态)

打开 Axure 导出文件

  1. Safari 浏览器 - 偏好设置 - 高级 - 勾选「在菜单栏中显示开发菜单」;
  2. 展开「开发」菜单,勾选「停用本地文件限制」;

再将 Axure 导出文件的 index.html 使用 Safari 打开就好了。

Terminal

功能快捷键
新建标签Cmd-T
上 / 下个标签Cmd-{/}
删除光标前的输入C-U

WireShark

使用 WireShark 1.99 开发版,可以不依赖于 X11,界面基于 Qt,更加美观,符合 Mac 界面风格。

截图

功能快捷键
全屏截图保存到桌面Cmd-S-3
全屏截图并复制Cmd-C-S-3
选区截图保存到桌面Cmd-S-4
选区截图并复制Cmd-C-S-4
窗口截图保存到桌面Cmd-S-4 空格
窗口截图并复制Cmd-C-S-4 空格
QQ 截图Cmd-S-A

去除窗口截图时的阴影

defaults write com.apple.screencapture disable-shadow -bool TRUE
Killall SystemUIServer

如果要保留窗口截图时的阴影,则将 TRUE 改为 FALSE。

调整选区大小

使用选区模式选中一个区域并松开鼠标前,

  • 按住空格并移动鼠标,可以保持区域大小不变,并移动区域;
  • 按住Shift并移动鼠标,就可以保持区域的其它三个边不变,移动一个边的位置;
  • 按住Alt并移动鼠标,就可以对称的调整区域大小。

截图标注

使用预览工具可以完成截图标注。

延时截图

使用系统自带的 Grab 工具,运行后选择菜单的 Capture - Timed Screen。

iBooks 里的电子书保存路径

/Users/<username>/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books

安装 mpv 没有图形界面

使用 brew options mpv 可以看到有个 --with-bundle 是安装时创建 .app 文件。

brew install mpv --with-bundle
brew linkapps mpv

屏幕取色

使用 Mac 自带的“数码测色计”。

小技巧

程序坞延迟消除

Mac 自动隐藏/显示程序坞是默认有一秒延迟的。

消除延迟方法:

defaults write com.apple.Dock autohide-delay -float 0 && killall Dock

恢复默认:

defaults delete com.apple.Dock autohide-delay && killall Dock

修改默认 shell

chsh -s /bin/zsh

问题解决

No Xcode or CLT version detected

报错信息:

~/github/hs-airdrop$ npm install

> bcrypto@5.0.3 install /Users/username/github/hs-airdrop/node_modules/bcrypto
> node-gyp rebuild

No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.

gyp: No Xcode or CLT version detected!
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Darwin 19.3.0
gyp ERR! command "/usr/local/Cellar/node/12.12.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/username/github/hs-airdrop/node_modules/bcrypto
gyp ERR! node -v v12.12.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bcrypto@5.0.3 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypto@5.0.3 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

解决方法:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

通过扩展坞连接的键盘鼠标卡顿断电

我用 MacBook Pro 16 寸 2019 款,通过 biaze 五口扩展坞连接键盘、鼠标、显示器、网线,一直好好的,突然有一天键盘鼠标开始经常卡顿、断电。参考 https://support.apple.com/zh-cn/HT201295,重置 SMC 问题也没有解决。

尝试过插别的接口、换扩展坞、只接以上几种设备之一和之二等,都没解决。最后用了个别的鼠标试了下,好了。欲哭无泪。

macOS 12.4 Monterey 系统授权弹窗无法点击

自从电脑从本地账号切换到域账号之后,这个系统版本里经常一个程序用着用着,突然弹出个系统授权弹窗,申请访问文件夹、摄像头、麦克风、屏幕录制、System Events 等等,然后弹窗里的两个按钮点击无效,程序就卡在那里了。

比如下面这个弹窗:

解决方法:

  1. 打开「活动监视器」,结束掉 UserNotificationCenter 进程;

  2. 打开「系统偏好设置」-「安全性与隐私」,找到刚才提示的对应权限和应用,把左下角的锁打开后,勾选上;

删除 zip 文件里的隐藏文件

使用 Mac 自带的压缩功能,打出来的 zip 包里面会打入像 .DS_Store 和 __MACOSX 这些东西,在有些场景下需要将它们清除。

这时,可以使用以下命令:

zip -d 归档.zip "__MACOSX*"
zip -d 归档.zip "*.DS_Store"

或者,创建一个如下内容的 cleanzip.sh 文件,放到 PATH 环境变量包含的路径里面,然后在需要时执行 cleanzip 归档.zip 即可:

zip -d "$1" "__MACOSX*"
zip -d "$1" "*.DS_Store"

参考

文档信息

Search

    Table of Contents