自从去年我的电脑经历了各种挫折之后,新的一年到了,虽然矿难还没有真正的到来,但是 AMD RX6600 XT 显卡 居然在 macOS 12.1 版本支持驱动了,于是就果断剁手了,新的系统,新的配置,这篇文章就此诞生了。

去年的电脑

2021 年 5 月 10 日

晚上打了一把守望先锋后就关机了,第二天无法开机发现主板短路了?造成的损失如下:

  • 主板的 NVME 接口损坏无法使用
  • 主板上已经安装的 海康威视 C2000 NVME SSD 1TB 损坏,且数据无法恢复
  • 主板 PCIE 接的蓝宝石 RX580 2304SP 8GB 满血版损坏(正值矿潮)

2021 年 9 月 2 日

租的房子突然跳闸断电了,一开机直接发现 2TB HDD 损坏,DG 打开提升扇区错误:

2TB 数据又没了,不过还好经历过第一次损失,我后面搞了 Radi1 备份了很多关键数据。

2021 年 9 月 12 日

阿斯加特 Asgaed 洛极 T2 DDR4 2666频率 16GB 内存坏了一根,还好是 JD 购买的,官方直接给我换新的,就是等待的时间有一点点长。

2021 年 10 月 11 日

玩电脑的时候我们家猫猫老是喜欢凑过来,这不就乘我不注意把我的 AOC U2790PQU 的 4k 显示器面板咬坏了:

啊这,后面被迫换了面板,然后买了几千个积木把我的显示器包裹了起来,这样再也不用担心猫猫咬显示器了:

写在前面

之前写的这篇:国光的 macOS 配置优化记录 确实有点老了,当初是基于 macOS 10.15 写的,如今 macOS 都出到 12.X 的版本了,很多设置都发生了不小的变化,所以得重新记录一下了。本文是基于 macOS Monterey 12.1 写的:

系统设置

实用命令

  1. 取消 4 位数密码限制

macOS 10.14 后不允许设置 4 位数以下的密码,对于一个弱口令的坚定维护者,每次敏感操作都要输入一长串的密码,国光我是接受不了的,所以可以使用下面的命令来取消关闭这个密码负责的策略的限制:

# 取消4位数密码限制 
➜ pwpolicy -clearaccountpolicies

# 更改密码passwd
  1. 允许安装任意来源的 App

有时候我们需要安装一些非官方 AppStore 的软件,这个时候就得到「安全与隐私」-「通用」里面来勾选开启任何来源,但是默认是没有这个选项的,在 macOS 早期是可以顺利开启的,但是到了近几年的版本我们得如需下面命令来手动开启:

# APP安装开启任何来源sudo spctl --master-disable

然后下面的这个任何来源的隐藏选项就出现啦:

  1. 修改主机名和共享名称

在 shell 环境下会看到如下效果:

guang@guangdeMacBook-Pro ~ % 

这个主机名看上去实在比较臃肿,可以使用如下命令来修改:

# 修改主机名sudo scutil --set HostName {自定义主机名}

同样也可以修改共享电脑名称,使用如下命令:

# 修改共享名称sudo scutil --set ComputerName {自定义电脑名}

这样其他用户使用隔空投送的时候就会看到此时设置的自定义的共享名称了。 实际上这条命令的效果和在「设置」-「共享」里面的效果一模一样:

  1. 安装 Xcode Command Line Tools

Command Line Tools 是在 Xcode 中的一款工具,macOS 下不少开发工具都会依赖这个,所以我们手动安装一下,后面安装其他工具可以省下不少麻烦:

# 安装 xcode 命令行工具
➜ xcode-select --install
  1. 减少程序坞的响应时间

如果只有一个屏幕的时候,国光我经常在「程序坞与菜单栏」勾选「自动隐藏和显示程序坞」,这样增加屏幕的利用率,但是 macOS 默认情况下唤出这个程序坞有点慢一拍的感觉,我们可以通过命令来减少响应时间:

# 设置启动坞动画时间设置为 0.5 秒
➜ defaults write com.apple.dock autohide-time-modifier -float 0.5 && killall Dock

# 设置启动坞响应时间最短
➜ defaults write com.apple.dock autohide-delay -int 0 && killall Dock

不要担心改不回来,可以使用下面的命令恢复系统初始化的设置:

# 恢复启动坞默认动画时间
➜ defaults delete com.apple.dock autohide-time-modifier && killall Dock

# 恢复默认启动坞响应时间
➜ defaults delete com.apple.Dock autohide-delay && killall Dock
  1. 修改启动台行和列数

启动台里面也可以设置应用的列和宽,使用如下命令即可:

# 设置列数为 9
➜ defaults write com.apple.dock springboard-columns -int 9

# 设置行数为 6
➜ defaults write com.apple.dock springboard-rows -int 6

# 重启 Dock 生效killall Dock

国光设置的 9 列 6 行的效果如下:

这个效果因人而异 ,大家可以自己去摸索,如果你想恢复默认的话可以使用下面的命令:

# 恢复默认的列数和行数
➜ defaults write com.apple.dock springboard-rows Default
➜ defaults write com.apple.dock springboard-columns Default

# 重启 Dock 生效killall Dock

触控优化

MBP 上使用触控板或者台式机外接妙控板进行鼠标指针拖移的话,默认得按压下去才可以拖动窗口,长时候按压难免让手指更加酸痛而且效率不高,这个时候在「辅助功能」-「指针控制」-「鼠标与触控板」开启传说中的「三指拖移」:

这才是 macOS 的触控板真正的精髓呀!效率提升杠杠的。

光标响应

macOS 下的默认光标使用方向键左右移动是非常慢的,在终端下敲命令的时候尤为明显。这个时候得手动调快一些,才可以达到 Linux 下那种顺滑的移动效果,只需要到将「按键重复」调快一些,然后将「重复前延迟」调短一些即可:

关闭 SIP

有些软件需要关闭 SIP 才可以实用,比如 proxychains-ng 这种系统级代理软件

白苹果

白苹果得进恢复模式才可以修改,重启 Mac,按住 Option 键进入启动盘选择模式,按 + R 进入 Recovery 模式。

「菜单栏」 ->「 实用工具(Utilities)」-> 「终端(Terminal)」:

# 关闭SIP
➜ csrutil disable

# 查看SIP状态
➜ csrutil status

System Integrity Protection status: disabled.(表明关闭成功)

黑苹果

黑苹果的话也可以进恢复模式,但是不如直接修改配置文件更方便高效。以 OC 为例,只要勾选「AllowToggleSip」:

然后就可以在开机选择系统的时候手动切换 SIP 开关状态了:

开机自启

有些类似截图等软件是每次开机必备的,貌似新版本系统软件里面的「开启启动」类似的选项都不太好用,不用担心,我们可以手动给他们设置开机自启:

不过有些不良心的软件会偷偷自启,但是设置里面却看不到,不要头疼,我们可以使用腾讯柠檬清理来管理这类偷偷自启的软件:

编程开发

iTerm2

iTerm2 的颜值真的挺高的(配合 Zsh 主题的话),但是默认情况下有的丑,需要我们稍微设置一下颜值才会高一点。

  • Preferences - Apperance

主要设置一下主题以及标签页的显示位置,下面是国光的设置习惯:

另外记得到这个 Windows 标签页勾选「Hide scrollbars」隐藏滚动条,让终端看上去更简约一点。

  • 新建配置 - 字体设置

新建一个自己的配置,并设置为默认「Set as Default」,在新的配置里面可以进行字体相关的设置,字体大小国光设置的是 16 号,使用的是 macOS 自带的 Monaco 高颜值字体:

  • 新建配置 - 窗口设置

Homebrew

Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 系统上的软件安装过程,程序猿开发必备神器。

➜ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

第一次安装可能有点慢,给终端挂个代理可以提高下速度:

# ClashX 代理示例
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

没有代理的话可与去刷个抖音冷静一下。

国光的 brew 常用命令与软件:

# 更新 Homebrew
➜ brew update

#  搜索相关的包
➜ brew search [关键词] 

# 查看包的信息
➜ rew info [软件名]
 
# 查看已安装的包
➜ brew list

# 更新某个软件
➜ brew upgrade [软件名]

# 清理所有软件的旧版
➜ brew cleanup

# 卸载某个软件
➜ brew uninstall [软件名]

# ip 命令 查看ip地址很方便
➜ brew install iproute2mac

诸如 Nginx、MySQL 等软件,都是有一些服务端软件在后台运行,如果你希望对这些软件进行管理,可以使用 brew services 命令来进行管理:

# 查看所有服务 
➜ brew services list:

# 单次运行某个服务
➜ brew services run [服务名]

# 运行某个服务,并设置开机自动运行
➜ brew services start [服务名]

# 停止某个服务
➜  brew services stop [服务名]

# 重启某个服务
➜ brew services restart

国光的 brew 常用配置:

# ip 命令 查看ip地址很方便
brew install iproute2mac

# 安装 brew-cask
brew install cask

# 空格预览 markdown
brew install qlmarkdown

# 空格预览代码文件
brew install syntax-highlight

Oh My Zsh

macOS Monterey 使用 zsh 作为默认 Shell,不过这个自带的 zsh 还不够好看,需要使用 Oh My Zsh 这个 zsh 美化增强脚本,来让自己的终端 Shell 颜值更逼格。

安装

# 安装卡的话就挂代理sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

主题

用户目录下的 .zshrc 文件为 Oh My Zsh 的配置文件

#修改配置文件vim ~/.zshrc

修改此行(等于号 后面填写自己的主题):

ZSH_THEME=robbyrussell

Oh My Zsh 已经内置了很多主题了:

# 查看自带的主题ls -l ~/.oh-my-zsh/themes

国光以前也比较喜欢花里胡哨的折腾这些,后来发现画船听雨大佬的 zsh 主题就是默认的 =,= 后面我就也没有再折腾这些花里胡哨的主题了。

插件

autojump

目录切换神器,大大提高工作效率。

➜ brew install autojump

~/.zshrc 中配置

plugins=(其他的插件 autojump)

输入zsh命令生效配置后即可正常使用j命令,下面是简单的演示效果:

# 第一次 cd 进入某个目录
➜  ~ cd Documents/Hexo
➜  Hexo cd ~

# 后面就可以直接通过 j 命令跳转到那个目录
➜  ~ j hexo
/Users/sec/Documents/Hexo

autosuggestions

终端下自动提示接下来可能要输入的命令,这个实际使用效率还是比较高的

# 拷贝到 plugins 目录下git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

~/.zshrc 中配置:

plugins=(其他的插件 zsh-autosuggestions)

输入zsh命令生效配置

zsh-syntax-highlighting

命令输入正确会绿色高亮显示,可以有效地检测命令语法是否正确

# 拷贝到 plugins 目录下git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

~/.zshrc 中配置:

plugins=(其他的插件 zsh-syntax-highlighting)

输入zsh命令生效配置。

其他

关掉 URL 反斜杠转义

经常在 zsh 里面粘贴 URL 会出现下面的情况:

http://xxx/?id=1

粘贴到 iTerm2 的 zsh 中会变成这样:

http://xxx/\?id\=1

为了避免每次粘贴后都要修改的麻烦,我们需要手工关掉 URL 特殊符号转义,编辑 .zshrc 配置文件,取消下面内容的注释:

DISABLE_MAGIC_FUNCTIONS=true

编辑完成后,保存输入zsh命令重新加载配置文件,再次粘贴就不会出现这种情况了。

禁用 zsh 自动更新

新版本的 zsh 禁用自动更新的方式稍微有点变化,编辑 .zshrc 配置文件,取消下面内容的注释即可:

zstyle ':omz:update' mode disabled

proxychains-ng

终端命令行下代理神器,可以让指定的命令走设置好的代理,内网渗透、科学上网必备工具:

# 安装
➜ brew install proxychains-ng

# 配置文件vim /usr/local/etc/proxychains.conf

将结尾的 socks4 127.0.0.1 9095改为

socks5 127.0.0.1 7890

国光的 macOS 下 ClashX 的默认代理为 7890 然后我就习惯了 7890 端口 这里根据自己的情况来设置。

下面是常用的几个命令:

# 代理终端基本示例
➜ proxychains4 curl https://www.google.com.hk

# 全局代理 bash shell
➜ proxychains4 -q /bin/bash

# 全局代理 zsh shell
➜ proxychains4 -q /bin/zsh

如果发现你的 proxychains 并不能代理的话,尝试根据前面的部分关掉 SIP 后再试试看。

比较巧的是写本文的 1 小时前 proxychains-ng 刚刚支持 macOS 12 Monterey 系统的版本:

Vim

macOS 自带的 vim 是没有任何配色的,可以下面是国光常用的配色方案,先在用户目录下新建一个 vim 的配置文件:

vim ~/.vimrc

内容如下:

set nu                " 显示行号
colorscheme desert    " 颜色显示方案
syntax on             " 打开语法高亮

配置修改为完,输入zsh命令生效配置,国光我这里使用的 desert 配色方案,其他自带的配色可以参考这个目录下:

ls /usr/share/vim/vim*/colors 

README.txt	delek.vim	industry.vim	pablo.vim	slate.vim
blue.vim	desert.vim	koehler.vim	peachpuff.vim	tools
darkblue.vim	elflord.vim	morning.vim	ron.vim		torte.vim
default.vim	evening.vim	murphy.vim	shine.vim	zellner.vim

感兴趣的朋友可以自己去一个个尝试一下。

Git

Github 会根据这个邮箱显示对应的 commit 记录的头像

# 配置邮箱 git config --global user.email "[email protected]"

# 配置用户名git config --global user.name "国光"

下图中间两个 commit 记录没有头像的原因就是没有配置上述邮箱的问题造成的:

配置socks5代理

在天朝 使用 git clone 的正确姿势,配置这个代理的前提是自己得有一个可以访问国外的 Socks5 代理(实际上不嫌麻烦的话每次手动开启下终端代理也可以):

# 我这里习惯用 7890 端口 具体根据自己的配置来灵活设置git config --global http.proxy 'socks5://127.0.0.1:7890'git config --global https.proxy 'socks5://127.0.0.1:7890'

# 取消 git 代理git config --global --unset http.proxy
➜ git config --global --unset https.proxy

# 查看 git 配置cat ~/.gitconfig

# 或者这样也可以查看 git 的配置git config -l

Python

Python2

macOS Monterey 自带 Python 2.7.18 的版本,不过没有安装 pip,得自己再折腾完善一下。

# 安装 pip (貌似 Python2 的 PIP 太新会出问题 可以指定最后一个稳定的版本)sudo easy_install pip==20.3.4

# 查看pip的版本
➜ pip -V
pip 20.3.4 from /Library/Python/2.7/site-packages/pip-20.3.4-py2.7.egg/pip (python 2.7)

貌似 macOS 12.3 Beta 版本开始 macOS 开始不自带 Python2 工具了,不过还好有 pyenv 这个神器。

Python3

macOS Monterey 自带 Python 3.8.9 的版本,手动敲 Python3 会自动调用安装对应依赖,等待安装好即可。

同时也会自动安装好 pip3:

➜ pip3 -V
pip 20.2.3 from /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)

但是版本不够新,我们可以手动升级最新版的 pip3:

/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip

pyenv

pyenv 是一个强大 Python 包管理工具,可以灵活地切换各种 Python 版本。

# 安装 pyenv
➜ brew install pyenv

将以下内容写入到 ~/.zshrc 配置文件:

alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'

接着为 pyenv 配置 shell 环境:

echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

常用的一些命令下面一一列出来。

  • 版本安装
# 查看已经安装的Python版本
➜ pyenv versions

# 查看当前的 Python 版本
➜ pyenv version

# 查看可安装的版本
➜ pyenv install -l

# 安装与卸载 pypy3.8-7.3.7
➜ pyenv install pypy3.8-7.3.7
➜ pyenv uninstall pypy3.8-7.3.7

所安装的版本都在 ~/.pyenv/versions目录下。

  • 版本切换
# global 全局设置 一般不建议改变全局设置
➜ pyenv global <python版本>

# shell 会话设置 只影响当前的shell会话
➜ pyenv shell <python版本>
# 取消 shell 会话的设置
➜ pyenv shell --unset

# local 本地设置 只影响所在文件夹
➜ pyenv local <python版本>

pyenv 的 global、local、shell 的优先级关系是:shell > local > global

Node.js

国光我 Nodejs 用的不多,主要就用来跑跑 Hexo 博客和使用 Gitbook 来写点知识点,又因为 Node.js 版本也比较凌乱,所以这里主要是通过 nvm 来进行配置管理。

# 安装 nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

# 查看版本信息zsh
➜ nvm --version
0.39.1

# 查看当前 node 的版本
➜ nvm version 

# 安装最新稳定版 node
➜ nvm install stable

# 列出所有远程服务器的版本
➜ nvm ls-remote

# 安装指定版本
➜ nvm install v12.22.9
➜ nvm install <version>

# 列出所有已安装的版本
➜ nvm ls

# 卸载指定的版本
➜ nvm uninstall <version>

# 切换使用指定的版本node
➜ nvm use <version>

# 显示当前的版本
➜ nvm current

Hexo

Hexo 是一个由 Node.js 编写的博客系统,国光我的博客用了 Hexo 已经很多年了,大家如果要写博客的话,也建议大家尝试 Hexo 看看。

安装配置好 Node.js 之后,只需要如下命令即可安装好 Hexo:

npm install hexo-cli -g

下面是国光常用的一个 Hexo 命令:

# 清除缓存重新生成并启动 hexo 本地服务
$ hexo clean && hexo g && hexo s

因为国光我是把 Hexo 博客直接部署到阿里云服务器的,所以我不用 hexo d 这个命令好多年了。

MySQL

安装 MySQL

# 搜索可以安装的版本
➜ brew search mysql

# 安装对应的版本
➜ brew install [email protected]

配置环境变量

# 查看 MySQL 可执行文件的位置cd /usr/local/Cellar/[email protected]/*/bin && pwd
/usr/local/Cellar/[email protected]/5.7.37/bin

然后下面内容写入 ~/.zshrc 配置文件中:

export PATH="${PATH}:/usr/local/Cellar/[email protected]/5.7.37/bin"

写入完成后可以使用 zsh 刷新一下配置或者手动 source ~/.zshrc 一下。

常用操作

# 查看 M有SQL 服务状态
➜ brew services info [email protected]
➜ mysql.server status

# 启动 MySQL 服务
➜ brew services start [email protected]
➜ mysql.server start

# 重启 MySQL 服务
➜ brew services restart [email protected]
➜ mysql.server restart

# 停止 MySQL 服务
➜ brew services stop [email protected]
➜ mysql.server stop

设置 MySQL 密码

# 默认是 root 用户是空密码 可以直接登录
➜ mysql -uroot

# 修改 root 密码的 SQL语句
mysql > use mysql;
mysql > set password for 'root'@'localhost' = password('你设置的密码');

# 刷新权限 并退出
mysql > flush privileges;
mysql > quit; 

数据库外连

这是个可选操作 根据自己的实际情况自行决定是否开启(有被攻击的风险):

mysql > grant all on *.* to root@'%' identified by '你设置的密码' with grant option;
mysql > flush privileges;

大家根据实际情况来决定是否开启外连。

Redis

# 安装 redis
➜ brew install redis

# 启动 redis 服务端
➜ redis-server

# 启动 redis 客户端
➜ redis-cli

# 编辑默认配置文件sudo vim /usr/local/etc/redis.conf

Gitbook

Gitbook 确实是一个写文档的神器,对于我来说是必装的了。这个坑点就是使用高版本的 Node.js 安装会出各种玄学问题,换 10.X 的版本即可:

# 安装并切换老版本的 Node.js
➜ nvm install v10.24.1
➜ nvm use v10.24.1

# 安装 Gitbook-clinpm install -g gitbook-cli

# 验证版本并安装相关依赖
➜ gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3

安全相关

大家都是搞安全的,配置环境这个对你们来说很简单的吧,这里就不再赘述了,之前的老文章有这部分的配置,大家也可以参考一下,然后发散一下,基本上足够了:国光的 macOS 配置优化记录

总之 macOS 用来做渗透等安全研究还是比较舒服的。

参考资料

支持一下

本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

微信
支付宝

没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光