Mac终端优化

Mac终端优化。

快捷键

快捷键 作用
Command+K 清屏

终端优化

Homebrew

Homebrew是类似于Linux的apt-get软件包管理器。

安装与卸载

官方途径

在终端输入以下命令即可。

1
2
3
4
5
# 安装
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 卸载
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"

国内途径

最新方法
1
2
3
4
5
# 安装
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

# 卸载
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

或以下命令。

1
2
3
4
5
# 安装
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

# 卸载
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/uninstall.sh)"

若命令执行中卡在Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core',可执行以下命令后再重新执行脚本。

1
2
3
cd "$(brew --repo)/Library/Taps/"
mkdir homebrew && cd homebrew
git clone git://mirrors.ustc.edu.cn/homebrew-core.git

若为安装cask时卡住,则为以下命令。

1
2
3
cd "$(brew --repo)/Library/Taps/"
cd homebrew
git clone https://mirrors.ustc.edu.cn/homebrew-cask.git
【进阶】对于M1芯片

M1芯片需要使用ARM版的Homebrew,安装路径为/opt/homebrew。安装完成后须在终端输入以下命令以设置环境变量。

1
2
3
4
5
6
7
# bash用户
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.bash_profile
eval "$(/opt/homebrew/bin/brew shellenv)"

# zsh用户
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/opt/homebrew/bin/brew shellenv)"

也可在M1芯片安装普通的x86版,命令如下。

1
arch -x86_64 /bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

若同时安装了两个版本,需要在/.zshrc或/.bash_profile添加以下命令。

1
2
alias abrew='arch -arm64 /opt/homebrew/bin/brew'
alias ibrew='arch -x86_64 /usr/local/bin/brew'

保存后,在终端输入abrew表示使用ARM版,输入ibrew表示使用x86版。

失效教程

在终端输入以下命令以获取install文件。

1
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install

打开所获取的install文件(一般在用户目录),更改脚本中BREW_REPOCORE_TAP_REPO两处,两个镜像源任选一个。

1
2
3
4
5
6
7
// 中国科学技术大学源
BREW_REPO = "https://mirrors.ustc.edu.cn/brew.git".freeze
CORE_TAP_REPO = "https://mirrors.ustc.edu.cn/homebrew-core.git".freeze

// 清华大学源
BREW_REPO = "https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git".freeze
CORE_TAP_REPO = "https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git".freeze

在终端输入以下命令以执行脚本即可。

1
/usr/bin/ruby brew_install

卸载则输入以下命令。

1
2
3
4
5
6
7
cd `brew --prefix`
rm -rf Cellar
brew prune
rm `git ls-files`
rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
rm -rf .git
rm -rf ~/Library/Caches/Homebrew

更换默认源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 中国科学技术大学源
## 替换核心软件仓库
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

## 替换cask软件仓库
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git

## 替换Bottles源
## 以下二选一
(bash用户)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

(zsh用户)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc


# 清华大学源
## 替换核心软件仓库
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

## 替换cask软件仓库
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

## 替换Bottles源
## 以下二选一
(bash用户)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

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

也可通过以下链接获取换源命令。

1
https://brew.idayer.com/guide/change-source

完成后在终端输入以下命令更新Homebrew。

1
2
brew update
brew upgrade

常用命令

命令 操作
brew help 帮助
brew list 列出安装包
brew update 更新Homebrew
brew upgrade 更新包
brew install [包名] 安装包
brew install [包名]@版本 安装固定的包
brew uninstall [包名] 卸载包
brew info [包名] 查看包信息
brew -v Homebrew版本
brew search [包名] 搜索可安装的包
brew autoremove 自动卸载未用包
brew cleanup 清理所有包的旧版本
brew outdated 查看需要更新的包
brew deps –installed –tree 列出软件包的依赖关系

常用包

tree

用树状结构表示当前目录下的文件层级。

tcl

Python的图形化界面依赖。

常见问题

brew install xxx 404

bottles镜像地址更新,须在/.zshrc或/.bash_profile中修改HOMEBREW_BOTTLE_DOMAIN的值。可通过更换默认源中的链接获取最新的bottles镜像地址。

command not found: brew

对于ARM版,需安装步骤添加环境变量。

对于x86版,可尝试在/.zshrc或/.bash_profile手动添加以下环境变量。

1
2
3
4
5
6
7
# bash用户
echo 'eval "$(/usr/local/Homebrew/bin/brew shellenv)"' >> ~/.bash_profile
eval "$(/usr/local/Homebrew/bin/brew shellenv)"

# zsh用户
echo 'eval "$(/usr/local/Homebrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/usr/local/Homebrew/bin/brew shellenv)"

设置zsh为默认Shell

Catalina及以上系统默认shell已为zsh,无需设置。

可在终端输入以下命令查看当前使用的shell和已安装的shell。

1
2
echo $SHELL
cat /etc/shells

若未安装zsh,可通过以下命令安装。

1
brew install zsh

输入以下命令,更换默认shell为zsh,重启终端生效。

1
chsh -s /bin/zsh

oh-my-zsh

安装

oh-my-zsh用于美化zsh终端,采用下列命令安装oh-my-zsh。

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

在终端输入以下命令以打开配置文件。

1
sudo vim ~/.zshrc

按i键以修改文件。修改ZSH_THEME,即可修改oh-my-zsh的主题。oh-my-zsh的GitHub Wiki页面提供了主题列表。

1
https://github.com/robbyrussell/oh-my-zsh/wiki/themes

推荐使用以下主题。

1
ZSH_THEME="agnoster"

在文件末尾加入以下代码,以在终端不显示电脑名称。输入后按Esc,然后输入:wq并回车,保存并退出。

1
DEFAULT_USER=$USER

修改完成后,需运行以下命令以更新zsh配置。

1
source ~/.zshrc

使用agnoster主题需要安装Powerline字体。在终端运行以下命令。

1
2
3
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh

在终端菜单点击偏好设置,在描述文件选项卡新建一个描述文件,将文本的字体修改为Powerline系的字体,注意需要在字体集中选择所有字体才能找到。保存后将该配置文件设置为默认,然后重启终端即可。

若希望改变主题默认配色,可在配置文件中配置相应的ANSI颜色。

外置主题

除使用oh-my-zsh内置主题,也可安装其它外置主题。

Powerlevel10k

终端输入以下命令。

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

在~/.zshrc修改以下内容,保存后重启终端。

1
2
POWERLEVEL9K_MODE="nerdfont-complete"
ZSH_THEME="powerlevel10k/powerlevel10k

该主题需要使用Nerd Fonts。打开以下链接,下载Hack.zip后解压,安装其中的所有字体。

1
https://github.com/ryanoasis/nerd-fonts/releases

完成后在终端的偏好设置中,将配置文件的字体设置为Hack Nerd Font。在终端自动配置流程将被触发,若未被触发,可运行以下命令。

1
p10k configure

更新

在终端输入以下命令即可。

1
upgrade_oh_my_zsh

插件

zsh-syntax-highlighting

语法高亮插件,在终端输入以下命令安装。

1
2
cd ~/.oh-my-zsh/custom/plugins &&\
git clone git://github.com/zsh-users/zsh-syntax-highlighting.git

修改~/.zshrc中的plugins,添加zsh-syntax-highlighting即可。

1
2
3
plugins=(
zsh-syntax-highlighting
)

zsh-autosuggestions

自动建议补全插件,在终端输入以下命令安装。

1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

修改~/.zshrc中的plugins,添加zsh-autosuggestions即可。

1
2
3
plugins=(
zsh-autosuggestions
)

auto-jump

自动跳转插件,在终端输入以下命令安装。

1
2
3
git clone git://github.com/wting/autojump.git
cd autojump
./install.py or ./uninstall.py

也可通过brew安装。

1
brew install autojump

incr

自动补全插件。打开下面网站下载incr插件,并放置于/.oh-my-zsh/customs/plugins/incr中(若无则新建)。

1
https://mimosa-pudica.net/zsh-incremental.html

修改~/.zshrc,在文件末尾添加以下代码即可。

1
source $ZSH/custom/plugins/incr/incr*.zsh

proxychains-ng

proxychains-ng用于终端翻墙,可用Homebrew安装。

1
brew install proxychains-ng

在终端输入以下命令以打开配置文件。

1
vim /usr/local/etc/proxychains.conf

[ProxyList]下注释掉原来的代理,并添加代理类型。示例如下。

1
socks5 127.0.0.1 9050

如果所在的网络很复杂,可能需要在配置文件中启用dynamic_chain,然后在[ProxyList]下添加多个代理。两种类型的区别如下。

类型 含义
dynamic_chain 按照列表中出现的代理服务器的先后顺序组成一条链,如果有代理服务器失效,则自动将其排除,但至少要有一个是有效的
strict_chain(默认) 按照后面列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的

~/.zshrc末尾添加如下内容并保存。

1
2
3
4
#   ---------------------------------------
# proxychain-ng config
# ---------------------------------------
alias pc='proxychains4'

配置完成后即可使用,示例如下。

1
pc curl http://www.google.com

终端命令

macOS中用\40代表空格。

磁盘工具添加调试菜单

1
defaults write com.apple.DiskUtility DUDebugMenuEnabled 1

显示Spotlight的搜索标题

1
2
3
mdimport /usr/include
mdimport /usr/local/include
mdimport /System/Library/Frameworks

安装Xcode Command Line

1
xcode-select --install

若提示不能下载该软件,因为网络出现问题,可打开以下链接,并搜索Command Line。可以通过在Mac App Store搜索Xcode,通过查看适合本机系统的Xcode版本以确定应当使用的Command Line版本。下载后安装即可。

1
https://developer.apple.com/download/more/

文件比较

1
diff [文件1] [文件2]

十进制转十六进制

1
printf '%x\n' [十进制数]

获取开机日志

1
log show --predicate "processID == 0" --start $(date "+%Y-%m-%d") --debug > ~/Desktop/bootlog.txt

应用多开

1
open -n /Applications/xxxx.app

测量系统放电瓦数

若想保留此函数的功能,则需将此函数写入~/.profile中。

1
2
3
4
5
6
7
8
9
10
11
12
13
// 将以下函数直接复制到终端运行
watts() {
FORMULA=$(system_profiler SPPowerDataType | awk '/Amperage\ \(mA\):/ {printf $3" * "}; /Voltage\ \(mV\):/ {print $3}')
WATTS=$(echo "scale=3; ${FORMULA} / 1000000" | bc 2>/dev/null)
if ! [[ ${WATTS} =~ [0-9] ]];
then
WATTS=0
fi
echo "${WATTS} mW"
}

// 使用
watts

终端的电源活动监视器

若想保留此函数的功能,则需将此函数写入~/.profile中。

1
2
3
4
5
6
7
// 创建函数
powertop() {
top -stats pid,command,power -o power
}

// 调用
powertop

查询CPU运行情况

1
sudo powermetrics --show-process-energy

把安装应用调成任意来源

1
sudo spctl --master-disable

获取某磁盘的UUID

1
diskutil info diskXsY | grep -i "Partition UUID" | rev | cut -d' ' -f 1 | rev

取消4位数密码限制

1
2
pwpolicy -clearaccountpolicies
passwd

Catalina挂载系统分区

1
sudo -S mount -uw / && killall Finder

查看睡眠时间

1
sysctl -a | grep sleeptime

查看睡眠唤醒时间

1
sysctl -a | grep waketime

查看最近一天睡眠唤醒原因

1
log show --last 1d | grep "Wake reason"

检查AppleALC和Lilu是否工作正常

1
log show --predicate 'process == "kernel" AND (eventMessage CONTAINS "AppleALC" OR eventMessage CONTAINS "Lilu")' --style syslog –source

关闭系统更新提醒红点

1
defaults write com.apple.systempreferences AttentionPrefBundleIDs 0

删除权限不足的文件

1
sudo rm -r -f [你要删除的文件(可以从Finder拖进来,支持多个)]

关机

1
sudo shutdown -h now

开启原生SSD Trim功能

1
sudo trimforce enable

一键查询硬件信息

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/daliansky/dell7000/master/Tools/archey)"

笔记本插电源出提示音

1
2
3
4
5
// 开启
defaults write com.apple.PowerChime ChimeOnAllHardware -bool true; open /System/Library/CoreServices/PowerChime.app &

// 关闭
defaults write com.apple.PowerChime ChimeOnAllHardware -bool false; killall PowerChime

手动安装kexts

移动kexts

1
2
3
4
5
6
7
// 删除重名/错误的kexts
sudo rm -Rf /Library/Extensions/KextToInstall.kext
sudo rm -Rf /System/Library/Extensions/KextToInstall.kext

// 把新kext移动到LE或SLE
sudo cp -R KextToInstall.kext /Library/Extensions
sudo cp -R KextToInstall.kext /System/Library/Extensions

修复权限和重建缓存

Mac不使用内核文件进行引导,而使用预链接内核。重建缓存即重建内核缓存/预链接内核。可用以下终端命令,也可在磁盘工具中选择macOS磁盘并点击修复。以下命令仅适用于Catalina系统及以下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 修复权限
sudo chmod -Rf 755 /S*/L*/E*
sudo chown -Rf 0:0 /S*/L*/E*
sudo chmod -Rf 755 /L*/E*
sudo chown -Rf 0:0 /L*/E*
sudo rm -Rf /S*/L*/PrelinkedKernels/*
sudo rm -Rf /S*/L*/Caches/com.apple.kext.caches/*

# 重建缓存(法一)
# 将-U后面的改为其它路径,即可在其它盘上进行重建缓存
sudo touch -f /S*/L*/E*
sudo touch -f /L*/E*
sudo kextcache -Boot -U /

# 重建缓存(法二)
sudo kextcache -i /

让AirDrop支持有线传输

1
defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1 && killall Finder

清空iCloud、iMassage和FaceTime缓存

1
2
3
4
5
6
7
8
9
10
11
12
13
cd ~/Library/Caches/
rm -R com.apple.Messages*
rm -R com.apple.imfoundation*
cd ~/Library/Preferences/

rm com.apple.iChat*
rm com.apple.icloud*
rm com.apple.ids.service*
rm com.apple.imagent*
rm com.apple.imessage*

rm com.apple.imservice*
rm -R ~/Library/Messages/

终端ftp工具

1
2
3
4
5
// 安装
brew install inetutils

// 使用
ftp

设置macOS电源相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 查看系统范围内的电源状态
pmset -g
pmset -g live

// 查看电源状态
pmset -g assertions

// 从日志查看电源状态
pmset -g log

// -a针对所有电源,-b针对电池电源,-c针对壁式充电器电源,-u以UPS电源为目标
// 休眠到内存(台式机默认设置)
sudo pmset -a hibernatemodes 0

// 休眠到硬盘
sudo pmset -a hibernatemodes 1

// 混合休眠(笔记本电脑默认配置)
sudo pmset -a hibernatemodes 3

// 省电休眠
sudo pmset -a hibernatemode 25

// 关闭powernap
sudo pmset -a powernap 0

// 关闭休眠
sudo pmset -a autopoweroff 0
sudo pmset -a standby 0

// 重置设置
pmset -a restoredefaults

// 查看睡眠唤醒原因
pmset -g log | grep -Ei 'wake.*due'

// 关闭硬盘摔落保护功能
sudo pmset -a sms 0

下表为参数含义对照。

参数 含义
proximitywake 相同iCloud ID的设备靠近唤醒(1开启,0关闭)
disksleep 设置不活动后磁盘停止旋转之前的时间,值以分钟为单位(默认10)
standby 在系统已休眠一段时间后,此功能将从休眠转变为休眠状态(1开启,0关闭)
standbydelayhigh/standbydelaylow 将睡眠会话写入磁盘并关闭内存电源之前的延迟(以秒为单位)。当电池电量超过50%时,使用standbydelaylow,当电池电量低于50%时,使用standbydelaylow。对于台式机,这些值应相同
highstandbythreshold 待机延迟的电池阈值(默认50%)
autopoweroff 从休眠状态转换为关闭状态
autopoweroffdelay 计算机关闭之前的延迟(以秒为单位)

清空bootercfg存储在NVRAM的变量

1
sudo nvram bootercfg="log=0 debug=0"

将逻辑卷转换为物理卷

1
sudo diskutil corestorage revert /

查看加载驱动

1
2
3
4
5
6
7
8
9
10
11
12
// 查看所有加载的驱动
kextstat

// 查看除苹果以外加载的驱动
kextstat | grep -v "com.apple"

// 查看加载的非官方驱动
kextstat | grep -v "com.apple" | grep -v "Energy"

// 查看特定名称的驱动(以ACPIplat为例)
kextstat | grep -y acpiplat
kextstat | grep -i acpiplat

Finder显示完整文件路径

1
2
3
4
5
// 显示
defaults write com.apple.finder _FXShowPosixPathInTitle -bool TRUE && killall Finder

// 取消显示
defaults write com.apple.finder _FXShowPosixPathInTitle -bool FALSE && killall Finder

用Finder打开终端当前路径

1
open .

终端调用Chrome

1
2
3
4
5
// 打开Chrome浏览器
open -a Google\ Chrome --args -disable-web-security

// 直接打开网站
open www.baidu.com

屏蔽系统更新

1
sudo softwareupdate --ignore "macOS Catalina"

去掉应用的小红点提示

1
defaults write com.apple.systempreferences AttentionPrefBundleIDs 0 && killall Dock

配置Safari的开发功能

或打开Safari后选择偏好设置,勾选高级选项卡下的在菜单栏显示开发菜单,也可达到相同效果。

1
2
3
4
5
// 开启
defaults write com.apple.Safari IncludeInternalDebugMenu 1

// 关闭
defaults write com.apple.Safari IncludeInternalDebugMenu 0

制作Mac安装盘

以Sierra安装包为例。

1
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction

._文件删除

1
2
3
dot_clean [路径]
// 或
find . -type f -name '._*' -delete

删除.DS_Store

1
find . -name '*.DS_Store' -type f -delete

禁止/启用.DS_Store自动生成

1
2
3
4
5
// 禁止
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

// 启用
defaults delete com.apple.desktopservices DSDontWriteNetworkStores

zsh导入bash环境变量

~/.zshrc添加以下代码。

1
source ~/.bash_profile

在终端执行以下命令即可。

1
source .zshrc

暂时在zsh中使用bash

1
exec /bin/bash

查看EFI版本

EFI32或EFI64。

1
ioreg -l -p IODeviceTree | grep firmware-abi

参考教程

Mac terminal 清屏快捷键

1
https://blog.csdn.net/u010164190/article/details/78622884

Homebrew国内如何自动安装(国内地址)

1
https://zhuanlan.zhihu.com/p/111014448

这篇 iTerm2 + Oh My Zsh 教程手把手让你成为这条街最靓的仔

1
https://segmentfault.com/a/1190000022813972

镜像快速安装Homebrew教程

1
https://brew.idayer.com/