每次安装完系统配置环境都是一个极为耗费时间的时期,特此写一篇文章记录一下 macOS 的常用配置,为后面再次配置少走一些弯路。本文主要基于 macOS Catalina10.15 来编写的,其他 版本的 macOS 仅供参考。

前言

本文有点老了,新版本系统又有一点变化,大家可以参考新的文章:国光的 macOS Monterey 12.X 配置记录

系统设置

实用命令

  1. 取消 4 位数密码限制

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

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

# 更改密码
passwd
  1. 允许 App的来源

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

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

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

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

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

guang@guangdeMacBook-Pro ~ % 

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

# 修改主机名
sudo scutil --set HostName xxxxx

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

# 修改共享名称
sudo scutil --set ComputerName xxxxx

这样其他用户使用隔空投送的时候就会看到此时设置的自定义的共享名称了。

  1. xcode 命令行工具

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

# 安装 xcode 命令行工具
xcode-select --install

程序坞

首先移除掉入国内基本上不会使用的 APP:

「自动显示和隐藏程序坞」一般使用触控板的时候呢,默认是不勾选隐藏的,如果勾选隐藏的话,我们需要定制一 Dock 的唤醒动画。

因为 macOS 系统默认的程序坞唤醒是有些许延迟的,Dock 程序坞显示隐藏缓慢的原因,是因为 OS X 隐藏和显示 Dock 的动画持续时间被设置成了 1 秒,想要改变这一时间,只需要打开终端,选择以下代码的其中一项执行就可以实现:

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

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

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

# 恢复默认启动坞响应时间
defaults delete com.apple.Dock autohide-delay && killall Dock

时间可以自己调整,基本上调整下来感觉速度比原来快多了。

启动台

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

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

# 设置行数
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 下的默认光标使用方向键左右移动是非常慢的,这个时候得手动调快一些,才可以达到 Linux 下那种顺滑的移动效果,只需要到将「按键重复」调快一些,然后将「重复前延迟」调短一些即可:

关闭 SIP

后面不关闭 SIP 的话类似于 proxychains-ng 这种代理神器就无法使用。

重启 Mac,按住 Option 键进入启动盘选择模式,按 + R 进入 Recovery 模式。

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

# 关闭SIP
csrutil disable

# 查看SIP状态
csrutil status

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

软件相关

这里比较多,国光只简单列举几个典型的列子,关于国光的软件清单大家可以参考我的这篇文章:

Google Chrome

Chrome 浏览器受欢迎的一个主要原因就是有丰富的插件,下面是国光使用的 Chrome 插件清单:

插件名 说明 链接地址
Charset 修改网站的默认编码 Github-Chrome-Charset
Fatkun图片批量下载 批量爬取下载图片神器 chrome 网上应用店
Link Grabber 批量提取网页链接 chrome 网上应用店
Proxy SwitchyOmega 轻松快捷地管理和切换多个代理 chrome 网上应用店
Separate Window 局部视频选定播放支持20倍播放 chrome 网上应用店
Shodan 信息收集插件之端口探测 chrome 网上应用店
Tampermonkey 支持各种强大的插件 chrome 网上应用店
uBlacklist 禁止特定的网站显示在 Google 的搜索结果中 chrome 网上应用店
Wappalyzer 网站指纹基础信息探测 chrome 网上应用店
超级简单的自动刷新 顾名思义,自动刷新 chrome 网上应用店

iTerm2

Apperance

窗口主题和标签页的停靠位置,这里我设置的左边,iTerm2标签页放在顶部有时候很容易误关!!主题自带的 「Minima」和「Compact」都还是不错的,然后标签位置选择「Left」:

Profiles

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

接着在「Window」标签下可以设置 iTerm2 终端窗口大小、背景透明程度、背景毛玻璃虚化程度,下面是国光我设置的细节图:

配置效果

一键调出 iTerm2 终端

有时候我们只突然想用命令行进行一个即时操作,这种情况下再去打开 iTerm2 然后新建标签,这样就会显得比较凌乱不优雅,实际上 iTerm2 自带快捷键唤醒功能,我们只需要开启并制定快捷键即可,首先创建一个热键配置:

国光我配置的是双击 Control 键唤醒,然后勾选浮动窗口,这样就可以随时随地唤醒了,无论当前是否处在全屏应用中都可以唤醒:

实际效果很赞,这个功能很实用,强烈建议大家尝试一下,只需 3 翻钟,你就会爱介个操作。

Typora

Typora 用来写 markdown 自带的默认体验就不差,国光我主要就是在图像这里进行了调整,默认使用相对路径,报错到当前 md 文件的 imgs 目录下,另外 Typora 后面新的版本支持自定义命令上传,所以国光我就写了图床脚本,用起来很舒服:

另外根据自己的喜欢,在「偏好设置」-「外观」 勾选「侧边栏的大纲视图允许折叠和展开」,关于 Typora 的主题,国光我使用的是 Vue 黑 的主题,后面发现 Pie 主题颜值也还是不错的。

VS Code

VS Code 使用的也比较多,国光这里简单列举一下我平时使用的插件列表:

Chinese (Simplified) Language Pack for Visual Studio Code:官方中文插件

VSCode Great Icons:文件夹图标主题

filesize:左下角显示文件大小

ASCIIDecorator:常用来生成一些酷炫的logo

Vibrancy:VS Code毛玻璃效果插件

Terminal:命令行爱好者必备插件

Beautify:代码格式美化插件

Excel Viewer:CSV 表格内容显示插件

Diff:比较2个文件的区别

Python:微软官方的 Python 插件

kite:Python 语句补全插件 自动语义提示效率很高(得配合Kite这个APP来使用)

hexdump for VSCode: 以十六进制显示指定文件

上一个默认代码配色的效果图:

Atom

第一次启动Atom可能会出现如下的报错:

The package `spell-check` cannot load the system dictionary for `zh-CN`. See the settings for ways of changing the languages used, resolving missing dictionaries, or hiding this warning.

这个是Atom拼写检查插件报错,解决方法很简单 Packages / Spell Check 去掉勾选 Use Locales

字体

国光习惯编辑器使用的是IBMPlexMono字体

谷歌字体详情链接:https://fonts.google.com/specimen/IBM+Plex+Mono

Settings-Editor-Font Family中 Atom 默认的字体为:

Menlo, Consolas, DejaVu Sans Mono, monospace

国光安装第三方字体手设置了为:

IBMPlexMono-MediumItalic

实际上 macOS自带的字体 Monaco 也是很不错的

标题栏

Settings-Core-Title Bar,国光这里为了颜值将其设置为了hidden

这样就把 Atom 的标题栏隐藏起来了,整体看上去更加清爽一点。

插件

Atom 插件安装慢的话 可以手动使用apm配合proxychains4命令来安装,安装成功后重启,这样总的下来速度会快很多:

activate-power-mode

只勾选Auto ToggleParticles - EnabledEnable,其他全部取消勾选。

Particles Colours下面选择Colour at the cursor表示烟花效果的颜色是光标所在的颜色

这样在编码的时候就会直接触发烟花效果了,而且不会有烦人的屏幕震动和码字速度统计。

其他插件

kite:Python 语句补全插件 自动语义提示效率很高 (得配合Kite这个APP来使用)

atom-beautify:atom 代码格式美化插件

atom-clock:底部状态栏时钟插件

platformio-ide-terminal:Atom必备终端命令行插件 颜值也很高

minimap:编辑器右侧代码小地图

minimap-find-and-replace:代码小地图查找和替换高亮

highlight-selected:鼠标高亮选择

minimap-highlight-selected:代码小地图中鼠标选择高亮,依赖 highlight-selected插件

busy-signal:和 linter插件配套使用

linter-ui-default:和 linter插件配套使用,依赖intentions, busy-signal

linter:代码法检测

intentions:和 linter插件配套使用

ide-python:Python 代码检测

one-vibrancy:Atom毛玻璃透明效果

Sublime Text3

Sublime Text3 插件的话首先得安装 Package Control,然后才可以愉快地安装插件,安装方法很简单 菜单栏-Tools-Install Package Control,如果安装卡顿的话 开一个全局代理的话速度会快很多,这里不再赘述。安装成功后可以在 菜单栏-Sublime Text-Preferences-Package Control-输入Install Package,等待左下角进度加载完即可安装任意插件。

吐槽一下 安装插件这么常用的功能 为什么要做的这么复杂 这让小白该怎么办 =,=

Sublime Text3 国光也就经常编辑文本使用,所以插件安装的不多,下面只列出了一些国光自己用的插件,大家也可以去官网自己搜索想要的插件:https://packagecontrol.io

LocalizedMenu:Sublime Text 中文汉化插件

A File Icon:文件图标插件,提高颜值

kite:Python 语句补全插件 自动语义提示效率很高 (得配合 Kite 这个 APP 来使用)

开发相关

Homebrew

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

安装

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# 给 homebrew 文件夹的写入权限
sudo chown -R $(whoami) /usr/local/*

brew 加速

替换 Homebrew Bottles源

  • zsh 用户
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc

source ~/.zshrc

# 再更新一下试试看效果 注意网速 应该可以跑满
brew update
  • bash 用户
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile

cd ~
source ~/.bash_profile

# 再更新一下试试看效果 注意网速 应该可以跑满
brew update

brew 重置恢复默认

手残搞错了源也不要紧,依次执行下面命令可以将其重置回来

重置 brew.git

git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git

brew update

手动删除 shell 配置记录

  • **zsh **用户

编辑~/.zshrc配置文件,删除之前添加的记录:

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
  • **bash **用户

编辑~/.bashrc配置文件,删除之前添加的记录:

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles

brew 常用软件

# brew 相关权限设置
sudo chown -R $(whoami) /usr/local/share/man/man8
chmod u+w /usr/local/share/man/man8

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

# 查看主机配置信息
brew install screenfetch

# 查看主机配置信息(这个包有点大 不如 screenfetch 好看)
brew install neofetch

proxychains

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

# 安装
brew install proxychains-ng

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

将结尾的 socks4 127.0.0.1 9095改为

socks5 127.0.0.1 1086

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

常用方法

# 代理终端命令
proxychains4 curl www.google.com

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

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

实际上新版的 ShadowSocksX-NG-R8 也附带了终端代理功能

实际上具体的命令如下:

export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;

这会临时在当前终端的 shell 环境生成一个 http 与 https 代理,想要永久代理的话就将这两条命令写入到 .zshrc 的配置文件即可,再补充一个使用 socks5 代理的命令:

export all_proxy="socks5://127.0.0.1:1086"

Vim

macOS 自带 vim 命令,这里主要就是开启 macOS vim 下自带的一个配色:

# 查看 vim 版本
vim --version

# 这样查看版本号也可以
ls /usr/share/vim/

# 查看自带的配色方案  vim80 当前vim 的版本号(macOS Mojave)
ls /usr/share/vim/vim80/colors

自带了如下的配色:

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

配色可以自己一个个尝试一下,下面新建一个 vim 的配置文件:

vim ~/.vimrc

内容如下:

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

配置修改为完,输入zsh命令生效配置

Oh My Zsh

macOS 下默认的命令行 Shell 环境为 Bash,不过在 10.15 之后为了取代 bash,macOS Catalina 使用 zsh 作为默认 Shell,不够这个自带的 zsh 还不够完美,需要使用 Oh My Zsh 这个 zsh 美化增强脚本,来让自己的终端 Shell 颜值更逼格。

安装

# 可选命令:全局代理(速度更快)
proxychains4 -q /bin/bash

# 或者这样添加一个临时代理(速度更快)
export ALL_PROXY=socks5://127.0.0.1:1086

# curl安装
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

如果输入 zsh 命令报类似下面这样错误的话:

[oh-my-zsh] Insecure completion-dependent directories detected:
...

那么是目录权限问题,使用如下两条命令即可解决问题:

chmod 755 /usr/local/share/zsh
chmod 755 /usr/local/share/zsh/site-functions

主题

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

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

ZSH_THEME=robbyrussell

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

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

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

插件

接下来主要就是一些相关插的配置了。

autojump

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

# macOS 安装
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命令重新加载配置文件,再次粘贴就不会出现这种情况了。

Git

配置邮箱和用户名

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

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

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

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

img

配置socks5代理

在天朝 使用 git clone 的正确姿势,配置这个代理的前提是自己得有一个可以访问国外的 Socks5 代理(比较敏感的话题 这里就不多说了)

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

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

# 查看 git 配置
cat ~/.gitconfig

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

Python

macOS 自带 Python 2.7 的版本,而且没有安装 pip,得自己再折腾完善一下。

pip2&pip3

macOS 里面 Python 自带 easy_install,用来安装 pip2 和 pip3 非常方便

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

# 查看pip的版本
pip --version
pip3 --version

# 更新最新版 pip
pip install --upgrade pip
pip3 install --upgrade pip

iPython3

Python2 要被淘汰掉了,iPython 这种辅助工具包的话 安装一个 iPython3 的话基本上可以满足日常的调试需求了:

# 安装ipython3
pip3 install ipython -i https://pypi.tuna.tsinghua.edu.cn/simple --user

pyenv

pyenv 是一个强大 Python 包管理工具,可以灵活地切换各种 Python 版本,macOS 下强烈建议大家安装体验一下,具体安装细节可以参考我的这篇文章:macOS pyenv入门使用记录

Node.js

国光我 Nodejs 用的不多,主要就用来跑跑 Hexo 博客和使用 Gitbook 来写点知识点,所以我一般都是直接在 Nodejs 官网下载 pkg 安装包一键安装的,但是评论区网页安利 nvm ,不能辜负网友们的好意,那么国光就来研究学习记录一下 macOS 下 nvm 的配置吧。

简介

nvm 是一个使用的 nodejs 版本管理工具,可以用来管理很多 node 版本和 npm 版本。

卸载 Node

若电脑已经安装 node,需要卸载掉,检查是否安装 node:

node -v

如果有版本返回,说明电脑已经安装 node,此时需要把 node卸载掉,若未安装 node 忽略以下操作,可以使用如下命令卸载:

sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d

验证是否卸载完成:

node  -v
npm  -v

安装 nvm

项目地址https://github.com/nvm-sh/nvm

这里自己去 release 里面去找最新的版本,然后替换到我下面 URL 里面的 0.35.3 即可:

# 临时代理加速(可选操作)
export ALL_PROXY=socks5://127.0.0.1:1086

# 下载并安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

安装完成后,到 ~/.zshrc 里面插入如下环境变量配置(自己检查一下 如果末尾已经插入了 就不用自己插入了):

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

执行完操作后,验证版本信息:

$ nvm --version
0.35.3

基本命令

# 查看当前 node 的版本
nvm version 

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

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

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

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

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

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

# 显示当前的版本
nvm current

Gitbook

首先得安装 npm 命令,官网直接下载 pkg 安装包 安装即可,也可以参考上面一个小节使用 nvm 来配置。值得一提的是目前 Gitbook 和 Node.js 14 的版本之间会出现兼容性问题,建议大家尝试安装使用 Node.js 12 LTS 版本

# 安装Gitbook
➜  ~ sudo npm install -g gitbook-cli

# 验证是否安装成功
➜  ~ gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3

卸载 Gitbook 可以使用如下命令:

# 卸载 Gitbook
npm uninstall -g gitbook-cli

# 清除npm缓存
npm cache clean -f

基本命令

下面是 Gitbook 常用的一些命令:

# Gitbook 目录结构初始化
gitbook init

# 本地预览
gitbook serve

# Gitbook指定端口启动Web服务
gitbook serve --port 8000

# 生成静态html
gitbook build

# 生成pdf文件(得安装配置好 https://calibre-ebook.com/download)
gitbook pdf

文章结构

README.md 与 SUMMARY.md编写

  • README.md

一本 Gitbook 的简介

# Gitbook 使用入门


> GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书。

本书将简单介绍如何安装、编写、生成、发布一本在线图书。
  • SUMMARY.md

一本书的目录结构

# Summary

* [Introduction](README.md)
* [基本安装](howtouse/README.md)
   * [Node.js安装](howtouse/nodejsinstall.md)
   * [Gitbook安装](howtouse/gitbookinstall.md)
   * [Gitbook命令行速览](howtouse/gitbookcli.md)
* [图书项目结构](book/README.md)
   * [README.md 与 SUMMARY编写](book/file.md)
   * [目录初始化](book/prjinit.md)
* [图书输出](output/README.md)
   * [输出为静态网站](output/outfile.md)
   * [输出PDF](output/pdfandebook.md)
* [发布](publish/README.md)
   * [发布到Github Pages](publish/gitpages.md)
* [结束](end/README.md)

插件相关

基本插件安装

下面演示一下 侧边栏宽度可调节插件的安装,后面就不再赘述了。

项目地址:https://github.com/yoshidax/gitbook-plugin-splitter

在 Gitbook 项目的根目录下建立book.json文件,内容如下:

{
    "plugins": ["splitter"]
}

然后执行

gitbook install

即可完成插件的安装

gitbook-plugin-search-plus

简介:支持中文搜索

项目地址:https://github.com/lwdgit/gitbook-plugin-search-plus

{
    plugins: ["-lunr", "-search", "search-plus"]
}

gitbook-plugin-anchor-navigation-ex

简介:文章目录 TOC 导航以及返回顶部

项目地址:https://github.com/zq99299/gitbook-plugin-anchor-navigation-ex

{
  "plugins": ["anchor-navigation-ex"]
}

因为该插件会自动生成自己的目录层级序号,国光本人喜欢自己来分层,所以这里需要配置一下关闭这个功能:

"pluginsConfig": {
  "anchor-navigation-ex": {
      "showLevel": false
  }
}

toggle-chapters

简介:Gitbook的左侧目录折叠

项目地址:https://github.com/poojan/gitbook-plugin-toggle-chapters

{
    "plugins": ["toggle-chapters"]
}

book.json

经过上面的简单配置后,我的 book.json 具体内容如下:

{
  "title": "Python学习记录",
    "author": "国光",
    "language": "zh-hans",
    "links": {
        "sidebar": {
          "个人博客": "https://www.sqlsec.com"
        }
      },
    "plugins": ["splitter","-lunr", "-search", "search-plus","anchor-navigation-ex","toggle-chapters"],
    "pluginsConfig": {
        "anchor-navigation-ex": {
            "showLevel": false
        }
    }
}

导出 PDF

使用 gitbook pdf 生成导出 PDF 文件默认是会报这样的错误:

InstallRequiredError: "ebook-convert" is not installed.
Install it from Calibre: https://calibre-ebook.com

提示缺少 ebook-convert , 此时去官网下载对应系统版本的安装包安装即可,然后配置好 path 环境变量就大功告成了:

sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin

Hexo

Hexo 是一个由 Node.js 编写的博客系统,完美支持 markdown 并且部署安装也比较方便,国光我的博客用了 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]

配置环境变量

国光在 10.14.6 系统下安装的 MySQL 可执行文件的位置是:

/usr/local/Cellar/[email protected]/5.7.28/bin

大家根据实际情况来配置下环境变量:

vim ~/.zshrc

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

source ~/.zshrc

基本操作相关

# 查看 M有SQL 服务状态
mysql.server status

# 启动 MySQL 服务
mysql.server start

# 重启 MySQL 服务
mysql.server restart

# 停止 MySQL 服务
mysql.server stop

设置 MySQL 密码

默认是 root 用户是空密码 可以直接登录:

mysql -uroot

当前用户的确是 root 用户设置密码的 SQL 语句如下:

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

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

数据库开启外连

这是个可选操作 根据自己的实际情况自行决定是否开启:

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

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

Docker

Docker 官网下载Docker Desktop for Mac and Windows | Docker

romeoz/docker-apache-php :PHP 版本很全,基本上都覆盖了,可以很方便地部署运行一个 Docker 下的靶场环境,更多的镜像可以参考我的另一篇文章:Docker 常用镜像整理

Redis

# 安装 redis
brew install redis

# 启动 redis 服务端
redis-server

# 启动 redis 客户端
redis-cli

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

安全相关

macOS 下也有很多原生的渗透测试工具,安装配置起来比 Windows 都要方便很多,安全相关的工具只做思路分享,更多安全工具等待着你自己去尝试。

aircrack-ng

WiFi 抓包以及跑包工具,macOS 上抓包一般不用这个,不够用来跑 WiFi 握手包还是蛮方便的。

# macOS安装binwalk
➜  ~ brew install aircrack-ng

# 查看版本信息
➜  ~ aircrack-ng

  Aircrack-ng 1.6  - (C) 2006-2020 Thomas d'Otreppe
  https://www.aircrack-ng.org

  usage: aircrack-ng [options] <input file(s)>
  ...

binwalk

文件分析工具,旨在协助研究人员对文件进行分析,提取及逆向工程,CTF 比赛中常用来解隐写相关的题目。

# macOS安装binwalk
➜  ~ brew install binwalk

# 查看版本信息
➜  ~ binwalk

Binwalk v2.2.0
Craig Heffner, ReFirmLabs
https://github.com/ReFirmLabs/binwalk

Usage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...

burpsuite

Web安全抓包改包必备神器,具体配置可以参考我的这篇文章:macOS下如何优雅的使用Burp Suite

Cobalt Strike

红队团队协作内网渗透神器,内网穿透代理非常简单方便,具体配置了可以参考我的这篇文章:macOS下如何优雅的安装Cobalt Strike

dirsearch

Web 目录扫描神器,自带的字典很强大,逐渐替代了御剑等一些工具。

# 进入安全工具的目录下(国光习惯将安全工具放在 Documents 目录下)cd /Users/sec/Documents/Sec

# git clone 下载最新版本的 dirsearchgit clone https://github.com/maurosoria/dirsearch.git
Cloning into 'dirsearch'...
remote: Enumerating objects: 1744, done.
remote: Total 1744 (delta 0), reused 0 (delta 0), pack-reused 1744
Receiving objects: 100% (1744/1744), 17.73 MiB | 1.26 MiB/s, done.
Resolving deltas: 100% (1015/1015), done.

# 创建 dirsearch 的快捷方式ln -s /Users/sec/Documents/Sec/dirsearch/dirsearch.py /usr/local/bin/dirsearch

# 刷新 zshzsh

# 发起一个基本扫描
➜ dirsearch -u https://www.baidu.com -e *

 _|. _ _  _  _  _ _|_    v0.3.9
(_||| _) (/_(_|| (_| )

Extensions: Applications | HTTP method: get | Threads: 10 | Wordlist size: 6104

Error Log: /Users/sec/Documents/Sec/dirsearch/logs/errors-19-12-26_22-09-24.log

Target: https://www.baidu.com

[22:09:24] Starting:
[22:09:24] 302 -  231B  - /.bash_history.php  ->  http://www.baidu.com/forbiddenip/forbidden.html
[22:09:24] 302 -  231B  - /.env.php  ->  http://www.baidu.com/forbiddenip/forbidden.html
[22:09:24] 302 -  231B  - /.env.sample.php  ->  
...

hashcat

密码破解神器,支持 GPU 破解:

# macOS安装hashcat
➜  ~ brew install hashcat

# 查看版本信息
➜  ~ hashcat --version
v5.1.0

httrack

看到好看的前端界面不要羡慕,httrack 在手,统统都可以原封不动的扒下来 =,=

# macOS安装httrack
➜  ~ brew install httrack

# 查看版本信息
➜  ~ httrack --version
HTTrack version 3.49-2

masscan

世界上最快的端口扫描器,一般和 nmap 配合使用,可以极大地提高效率:

# macOS安装masscan
➜  ~ brew install masscan

# 查看版本信息
➜  ~ masscan --version

Masscan version 1.0.4 ( https://github.com/robertdavidgraham/masscan )
Compiled on: Aug 21 2018 02:07:01
Compiler: gcc 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.43.1)
OS: Apple
CPU: unknown (64 bits)
GIT version: unknown

metasploit

黑客 TOP10 工具之一,漏洞攻击框架,必备神器之一,macOS 下配置可以参考我的这篇文章macOS下优雅的使用Metasploit

# 查看版本信息
➜  ~ msfconsole -V
Framework Version: 5.0.66-dev-75dc82f764050ff800dc2bf0482c31aae693edd4

➜  ~ msfconsole
 ______________________________________________________________________________
|                                                                              |
|                          3Kom SuperHack II Logon                             |
|______________________________________________________________________________|
|                                                                              |
|                                                                              |
|                                                                              |
|                 User Name:          [   security    ]                        |
|                                                                              |
|                 Password:           [               ]                        |
|                                                                              |
|                                                                              |
|                                                                              |
|                                   [ OK ]                                     |
|______________________________________________________________________________|
|                                                                              |
|                                                       https://metasploit.com |
|______________________________________________________________________________|


       =[ metasploit v5.0.66-dev-75dc82f764050ff800dc2bf0482c31aae693edd4]
+ -- --=[ 1956 exploits - 1091 auxiliary - 336 post       ]
+ -- --=[ 558 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

msf5 >

nmap

端口扫描必备神器:

# macOS安装nmap
➜  ~ brew install nmap

# 查看版本信息
➜  ~ nmap -v
Starting Nmap 7.80 ( https://nmap.org ) at 2019-12-26 21:07 CST
Read data files from: /usr/local/bin/../share/nmap
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.03 seconds

sqlmap

Web 安全必备工具,SQL 注入神器:

# 下载可能会卡 请自行备好代理
➜  ~ brew install sqlmap

如果安装卡这里的话,通过 proxychains4 也没有解决的话 ,国光我这里是这样临时解决的,终端下临时添加一个 socks5 代理:

# socks5 proxy
export ALL_PROXY=socks5://127.0.0.1:1086

配置修改为完,输入 zsh 命令生效配置

wpscan

WordPress 漏洞扫描器,收录了历届 WordPress 漏洞,可以辅助渗透测试一些 WordPress 相关的站点

# 部署可能会卡 请自行备好代理
➜  ~ brew install wpscan

# 查看 wpscan 版本信息
➜  ~ wpscan --version
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9.4
          Sponsored by Sucuri - https://sucuri.net
      @_WPScan_, @ethicalhack3r, @erwan_lr, @_FireFart_
_______________________________________________________________

Current version: 2.9.4
Last database update: 2019-12-26

支持一下

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

微信
支付宝

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