Mac Tips - 使用Mac的一些小技巧 (持续更新)

1. Mac快捷键(Emoji、Finder)

  • Finder内拷贝完整路径: option+command+c
  • 快速弹出emoji表情: ctrl+command+space

2. 拷贝浏览器URL不做转移

拷贝浏览器URL不做url_encode编码: 在URL最前面添加逗号,,当拷贝完后再删除,

3. Mac服务管理 - launchd/lannchctl

参考 https://www.xiebruce.top/983.html

3.1. 启动服务列表

# 列表
$ launchctl list
PID	Status	Label
-	0	com.apple.SafariHistoryServiceAgent
1621	0	com.apple.progressd
-	0	com.google.keystone.user.xpcservice
-	0	com.apple.cloudphotod
...

4. 京造键盘(Keychron K2)操作快捷键,可以工作20~80小时(灯光耗电影响,10M蓝牙)

https://item.jd.com/100012895086.html

  1. 多设备匹配,在BT模式下(共联3台设备) - ****
    1. 长按Fn+13s,从设备1连接键盘,待按键1闪烁,连接好设备1 - (Mac-Home)
    2. 长按Fn+23s,从设备2连接上键盘,待按键2闪烁,连接好设备2 - (Mac-Company)
    3. 长按Fn+33s,从设备3连接键盘,待按键3闪烁,连接好设备3 - (Ipad Pro)
  2. 多设备切换:按下Fn+1Fn+2Fn+3选择之前连接的设备,进行多设备切换
  3. 灯快捷键键,右上角(15种设置),键盘灯Fn+F5减亮,Fn+F6增亮
  4. 电量查看:Fn+B,注意可以先调低灯光亮度查看
    1. 全亮:电量 >=70%
    2. 第一排灭:电量 30-70%
    3. 第二排灭:电量 0-30%
  5. 有线下取消休眠模式:长按FN+S+O(注意不是零)
  6. 多系统切换,侧边栏支持Mac/Win切换
  7. BT(蓝牙)/Cable(有线)切换/Off(关闭)
  8. 恢复出厂设置:长按Fn+J+Z3s恢复出厂设置
  9. Win下的一些更多按键,参考: https://item.jd.com/100012895086.html

5. 系统安装相关

5.1. Mac烧录可引导的USB记忆

  1. 方式一:利用dd命令,对下载的CentOS ios镜像文件进行烧录(参见下面操作)
  • 参考1:https://cloudwrk.com/create-centos-7-bootable-usb-on-osx/
  • 参考2:https://wiki.centos.org/HowTos/InstallFromUSBkey
  1. 方式一:参照ubuntu的教程:https://ubuntu.com/tutorials/create-a-usb-stick-on-macos (我烧录过程中,报错了)

5.2. dd烧录具体操作

  1. 利用MAC磁盘工具,格式化USB为exFAT格式
  2. 下载CentOS7的iso镜像资源,参考:http://www.centos.org/download/mirrors/
  3. 利用mac的diskutil查看磁盘设备名称
  4. 利用dd命名,复制CentOS的iso到USB驱动
  5. virtuabox上面测试usb的驱动

tips: 下面的dd拷贝,将/dev/disk2s2,替换成/dev/rdisk2s2,r代表raw元素磁盘拷贝,比块拷贝更快!(想下Linux的IO栈),利用CTRL+T,可以查看当前dd的进度!

// 磁盘列表
$ diskutil list
...

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *31.5 GB    disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:       Microsoft Basic Data CENTOS                  31.3 GB    disk2s2

// dd拷贝
$ sudo dd if=./CentOS-7-x86_64-Everything-2003.iso of=/dev/rdisk2s2 ibs=256m obs=16m
load: 2.41  cmd: dd 12007 uninterruptible 0.00u 0.15s
1+0 records in
4+0 records out
67108864 bytes transferred in 9.546129 secs (7029956 bytes/sec)
load: 2.46  cmd: dd 12007 uninterruptible 0.00u 0.15s
1+0 records in
6+0 records out
100663296 bytes transferred in 14.703729 secs (6846107 bytes/sec)

5.3. diskutil和dd写入

// 写入需要通过mac下的diskutil工具先将磁盘卸载
$ diskutil unmount /dev/disk2s1

// 通过sudo dd将资源写入
$ sudo dd if=/Users/Terry/Downloads/cn_windows_10_consumer_editions_version_2004_x64_dvd_0c2eefdb.iso of=/dev/disk2s1 bs=1m

// Mac下观察磁盘的IO情况
$ iostat -dCU 1

6. MAC远程访问相关(VNC、SSHD、SMB服务)

6.1. MAC开启SSHD服务或者SMBD服务,支持远程登录

进入系统偏好 > 共享

  • 文件共享:在Mac1上共享User1的数据,在Mac2上通过访达 > 前往(连接服务器 CMD+K),利用SMB协议访问,比如smb://192.168.3.73
  • 远程登录:在Mac1上开放sshd远程登录,支持Mac2上通过命令行,ssh Terry@192.168.3.73快速连上,ssh密码是开机密码

6.2. VNC服务开启:允许其他人使用VNC远程桌面访问您的Mac电脑

进入系统偏好 > 共享,有不同的模式支持共享:

  • 远程管理`
    • 设置访问用户:
      • 所有用户,让其他有用户通过MAC用户账号来共享屏幕
      • 仅指定用户,指定指定MAC用户
    • 电脑设置:可以设置VNC访问密码,可以在Mac2上通过访达 > 前往(连接服务器 CMD+K),利用VNC客户端登录Mac1
    • 选项:设置访问用户的权限:观察(仅画面共享)、控制(操作)、观察时候显示,如果临时改变配置,需要重新连入VNC

远程访问端口:5900

// 开启后,在MAC下看下服务5900端口
$ netstat -anp tcp|grep -i listen

$ cat /etc/services|grep 5900
rfb             5900/tcp    vnc-server # VNC Server
rfb             5900/udp    vnc-server # VNC Serve

https://support.apple.com/zh-cn/guide/mac-help/mh11851/mac

6.3. MAC VNC客户端:mac下连接其他vnc服务

  • 访达 > 前往 > 连接服务器(CMD+K),键入vnc://192.168.1.100
  • 或者两台MAC用的同一个AppleID,共享屏幕权限

6.4. MAC连接Win10

主要依赖一个RDP客户端,下个Jump Desktophttps://xclient.info/s/jump-desktop.html

速度比VNC这类,都要好不少!速度、性能和流畅度上都非常不错,支持全屏、文本粘贴复制、快捷键发送等功能,在各种细节上要比微软的远程桌面优秀很多,可以用它远程连接Windows电脑!

7. Jetbrains Library路径

#!/bin/sh
# reset jetbrains ide evals

OS_NAME=$(uname -s)
JB_PRODUCTS="IntelliJIdea CLion PhpStorm GoLand PyCharm WebStorm Rider DataGrip RubyMine AppCode"

if [ $OS_NAME == "Darwin" ]; then
	echo 'macOS:'

	for PRD in $JB_PRODUCTS; do
    	rm -rf `~/Library/Preferences`/${PRD}*/eval
    	rm -rf ~/Library/Application\ Support/JetBrains/${PRD}*/eval
	done
elif [ $OS_NAME == "Linux" ]; then
	echo 'Linux:'

	for PRD in $JB_PRODUCTS; do
    	rm -rf ~/.${PRD}*/config/eval
    	rm -rf ~/.config/${PRD}*/eval
	done
else
	echo 'unsupport'
	exit
fi

echo 'done.'

8. Mac下触控板失效

打开【活动监视器(Activity Monitor)】,找到【Dock】或者是【程序坞】将其强制退出。

9. 密码重置

参考: https://sspai.com/post/34023

10. 笔记本升级到BigSur几个小问题

10.1. 电池显示

系统偏好>程序坞与菜单栏>电池

10.2. 系统偏好设置提示密码不正确

系统偏好信息,解决方案:https://support.apple.com/zh-cn/HT203127

如果您在点按锁形图标来更改设置时,“系统偏好设置”不接受有效的管理员密码,请尝试本文中所述的解决方法。

  • macOS 用户帐户的密码为空。如果您已使用空白密码登录 Mac,请在“用户与群组”偏好设置中更改密码。请勿使用空白密码。
  • 在使用macOS Big Sur 11.1时,搭载 Apple T2安全芯片的Mac机型存在需要重置SMC的问题。在您重置SMC后,“系统偏好设置”应该会接受您的密码。

10.3. 笔记本重置SMC

重置SMC:https://support.apple.com/zh-cn/HT201295

10.4. 尝试1

我的19款Mac Pro可行,尝试2没有进行

  1. 将Mac关机。
  2. 按住电源按钮 10 秒钟,然后松开这个按钮。
  3. 等待几秒钟,然后按下电源按钮以将 Mac 开机。

10.5. 尝试2

  1. 将Mac关机。
  2. 在内建键盘上,按住键盘左侧的Control+Option (Alt) +键盘右侧的Shift(Mac可能会开机)
  3. 按住以上三个按键不松7秒钟,然后不松按键的情况下按住电源按钮,如果Mac处于开机状态,它将按住这些按键时候关机
  4. 继续按住全部四个按键7秒钟,然后松开这些按键。
  5. 等待几秒钟,然后按下电源按钮以将Mac开机。

11. MAC下进程跟踪

可以通过关闭保护模式,或者cp二进制命令再跟踪,亦或是通过-f跟踪子命令三种方式;

系统完整性保护状态关闭,因为储在每台Mac的NVRAM中,只能在恢复环境中对其进行修改 Command + R。您将进入恢复环境。单击“实用程序”菜单,然后选择“终端”以打开终端窗口。

$ csrutil status
System Integrity Protection status: enabled.

$ sw_vers
ProductName:  Mac OS X
ProductVersion: 10.15.3
BuildVersion: 19D76

// 1. 系统完整性保护状态关闭
csrutil disable

// 2. 开启
csrutil enabled

// 2. CP方式
cp $(which whoami) .
dtruss ./whoami

12. 新旧MAC同步

12.1. /data目录文件迁移

  1. 迁移助手
  2. 新版本MacOS Catalina不支持直接创建/data目录解决方案,创建初始化挂载/etc/synthetic.conf
  3. 注意从以下目录/System/Volumes/Data/Users/Shared/Relocated\ Items/中拷贝出data相关内容
$ cat /etc/synthetic.conf
data    private/data
company private/company

13. Mac的开发环境配置

13.1. Mac Awesome仓库

Mac Awesome仓库,包含了各类Mac相关软件,和Awesome系列仓库有类似的效果

地址: https://github.com/jaywcjlove/awesome-mac#developer-tools`

13.2. Iterm推荐终端环境

13.2.1. Mac下无权限操作

Iterm2下操作dd或者ls查看磁盘内容,提示Operation not permitted

解决方法:通用 > 安全和隐私 > 完全磁盘访问权限,把iTerm.app勾选上,重启iTerm.app就可以了

13.2.2. bash-it

bash-it类似于,oh-my-zsh,只是针对bash环境,功能包括自动完成,主题,别名,自定义功能等

地址:https://github.com/Bash-it/bash-it

13.2.3. oh-my-zsh

oh-my-zsh之前一直在用,安装也较为容易,配合iterm终端+一些字体配置就可作出比较炫酷开发环境;

建议将个人的相关配置信息(命令别名、PATH路径导出、环境参数设定等)与原有的~/.zshrc分离,通过source ~/.my.sh方式加载,与zsh表现样式、插件相关配置分离,更好的管理。

地址:https://github.com/robbyrussell/oh-my-zsh

13.3. Iterm常用其他插件或配置

13.3.1. zsh-completions自动提示
$ brew info zsh-completions
$ brew install zsh-completions

// 配置之前先做dump
rm -f ~/.zcompdump; compinit
chmod go-w '/usr/local/share'

// 配置到.zshrc
fpath=(/usr/local/share/zsh-completions $fpath)

类似的bash shell可以采用bash-completions

13.3.2. autojump 快速cd跳转

autojump是一种更快捷的文件系统导航方式。它的工作原理是从命令行维护您最常使用的目录的数据库。该autojump -s命令显示数据库的当前内容。

每天都在命令行下不断的cd到不同的目录,autojump做到了一个简单的统计概率,利用j keywords可以基于权重值(反映了您在目录中花费的时间)快速jump到指定的目录

参考:https://github.com/wting/autojump/wiki

也可以基于man autojump查看更多

// 安装
$ brew install autojump

// 命令
j  keywords: 跳转到keyworks相关目录
jc keywords: 跳转到当前子目录中包含关键字的目录
jo : 从终端打开,在Finder、Explorer中所在目录
jo keywords: 在Finder、Explorer中打开文件所在目录
jco: 子目录打开在Finder、Explorer中
jco keywords: 子目录中含关键字打开在Finder、Explorer中

// 统计
$ j --stat
10.0:   /tmp
10.0:   /data/docker/services/centos-perf
14.1:   /data/docker
20.0:   /data
22.4:   /Users/Terry/.oh-my-zsh
33.2:   /data/www/tkstorm.com
________________________________________

109:     total weight
6:   number of entries
10.00:   current directory weight

data:    /Users/Terry/Library/autojump/autojump.txt

// j其实是个bash函数调用
$ which j

13.4. Iterm2下上传或下载 rz/sz

https://github.com/lupguo/iterm2-zmodem

  1. Install lrzsz on OSX: brew install lrzsz
  2. Save the iterm2-send-zmodem.sh and iterm2-recv-zmodem.sh scripts in /usr/local/bin/
  3. Set up Triggers (Profiles > YourProfile > Advanced > Triggers) in iTerm 2 like so:
Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Instant: checked

Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
Instant: checked

To send a file to a remote machine:

  1. Type rz on the remote machine
  2. Select the file(s) on the local machine to send
  3. Wait for the coprocess indicator to disappear

The receive a file from a remote machine

  1. Type sz filename1 filename2 … filenameN on the remote machine
  2. Select the folder to receive to on the local machine
  3. Wait for the coprocess indicator to disappear Future plans (patches welcome)
  • Visual progress bar indicator

13.5. git命令行下GUI工具

lazygit是一款在命令行下的,ACSII图像化的基于Golang开发的git仓库管理工具

参考:https://github.com/jesseduffield/lazygit

13.6. 终端key的绑定

通过终端中输入cat可以查看组合键,然后追加函数调用,实现一些命令绑定,做到类似快捷键的作用

 # bindkey
bindkey "^U"    backward-kill-line
bindkey "^u"    backward-kill-line
bindkey "^[l"   down-case-word
bindkey "^[L"   down-case-word

 # alt+<- | alt+->
bindkey "^[f" forward-word
bindkey "^[b" backward-word

 # ctrl+<- | ctrl+->
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

类似的bash shell中可以采用bind来绑定命令

14. 其他Mac小Tips

14.1. 另存为到指定目录

在另存为过程中,通过Command+Shift+G – 显示“前往文件夹”对话框,配合Alfred可以快速保存到指定位置

14.2. 构建应用程序的命令行快捷命令

sublime快速打开文件:

ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/sublime

14.3. Paste在Mac下的快捷粘贴

// 复制
$ echo hello|pbcopy

// 粘贴
$ pbpaste

14.4. MAC套接字打开的文件调整(ulimit资源调整)

Error: listen tcp 127.0.0.1:1313: socket: too many open files in system

  • 对于OS X Sierra(10.12.X):
// 编辑配置文件:
vim /Library/LaunchDaemons/limit.maxfiles.plist

// 内容
<?xml version="1.0" encoding="UTF-8"?>  
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
          "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">  
    <dict>
      <key>Label</key>
      <string>limit.maxfiles</string>
      <key>ProgramArguments</key>
      <array>
        <string>launchctl</string>
        <string>limit</string>
        <string>maxfiles</string>
        <string>64000</string>
        <string>524288</string>
      </array>
      <key>RunAtLoad</key>
      <true/>
      <key>ServiceIPC</key>
      <false/>
    </dict>
  </plist> 

// 更改配置权限
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

// 加载设定配置
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

// 检测限制参数
launchctl limit maxfiles

14.5. 无插件如何在Chrome下完成HTML页面截图

  1. 打开Chrome开发者工具
  2. 选择Element Html元素标签页,鼠标点击Body元素
  3. 按住组合键cmd+shift+p,打开调试命令行
  4. 输入screen关键字,选择Capture full screenshot,另存为即可截取全屏图片;
  5. 同时该功能支持,截取部分元素,强大的Chrome!!

14.6. 在VSCODE下的zsh工具命令行乱码问题

通过cmd+,,选择字体'Meslo LG M for Powerline', Monaco, 'Courier New', monospace, Menlo列表作为第一个字体名称

14.7. “Developer tools access” 需控制另一个进程才能继续调试 解决方案

DevToolsSecurity --status 查看状态
DevToolsSecurity --enable 输入密码,修改为enable,即可用
DevToolsSecurity --disable 输入密码,修改为disable,即关闭