Mac实用小技巧

本文主要记录我在使用Mac操作系统中遇到的问题,不断更新

关键词:Mac

安装系统

由于我使用的是黑苹果,所以有了这一章😂,不打算在这里写,咕咕咕。。

略。

键盘问题

(⌃)Control-------------> Ctrl (⌥)Option-------------> Alt (⌘)Command--------> Win

如果不习惯这样的键位,可以在系统偏好设置——键盘——修饰键选项中更改Control和Win的位置,这样复制粘贴操作在两种系统的键盘上是一致的😄

美化自带终端

自带是zsh,直接装Oh-My-Zsh

Github

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

Gitee

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

设置主题

编辑~/.zshrc

1
2
3
4
# 找到 ZSH_THEME
# robbyrussell 是默认的主题
ZSH_THEME="robbyrussell"
# ZSH_THEME="样式名称"

设置history记录时间

1
HIST_STAMPS="mm/dd/yyyy"

设置插件

这个也是Oh-My-Zsh最有用的特性之一

1
plugins=(docker docker-compose git zsh-autosuggestions)

这里分别设置了docker、docker-compose、git命令和全局自动补全的命令。这些插件都是自带安装的。

设置kubectl的自动补全

https://kubernetes.io/zh/docs/tasks/tools/included/optional-kubectl-configs-zsh/

1
source <(kubectl completion zsh)

设置快捷命令行代理

1
2
alias set_proxy='export https_proxy=http://localhost:7890;export http_proxy=http://localhost:7890'
alias unset_proxy='unset https_proxy;unset http_proxy'

设置nerdctl别名为docker

这样就可以继续愉快的使用docker-cli命令了

1
alias docker='nerdctl'

设置终端颜色

终端——偏好——描述文件——高级,选择xterm-256color

SSH问题

ssh别名

编辑~/.ssh/config,设置对应的ssh别名

1
2
3
4
5
6
Host github.com *.github.com coding.net *.coding.net jihulab.com *.jihulab.com
User git
Port 22
HostName %h
IdentityFile ~/.ssh/xxxx
ProxyCommand nc -x 127.0.0.1:7890 %h %p # 走代理的ssh协议

ssh保持链接

客户端编辑/etc/ssh/ssh_config,在Host *加入

1
2
ServerAliveInterval 30 # 每隔30s向server端sshd发送keep-alive包,
ServerAliveCountMax 60 # 如果发送60次server无回应断开连接

或者是服务端编辑/etc/ssh/ssh_config,添加下列设置

1
2
ClientAliveInterval 30 # 服务端每隔30秒向client发送一个数据包来保持链接
ClientAliveCountMax 60 # 如果发送60次client无回应断开连接

如果什么都不操作,服务端配置可以让连接保持 30s*60=30 min

共享ssh链接

如果需要在多个窗口中打开同一个服务器连接,可以尝试添加 ~/.ssh/config,添加两行

1
2
ControlMaster auto
ControlPath ~/.ssh/connection-%r@%h:%p

配置之后,第二条连接共享第一次建立的连接,加快速度。

添加长链接设置

1
ControlPersist 4h

每次 SSH 连接建立之后,此条连接会被保持 4 小时,退出服务器之后依然可以重用

配置连接中转

1
ForwardAgent yes

当需要从一台服务器连接到另一台服务器,同时两台服务器需要传输数据,以上设置可以不用通过本地电脑中转。

开机或定时执行任务

launchctl是一个统一的服务管理框架,启动、停止和管理守护进程、应用程序、进程和脚本。

编写plist文件

定时执行

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
<?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>com.denglibing.checkin</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array> <string>/Users/denglibing/Desktop/denglibing_checkin/denglibing_checkin_request.sh</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Weekday</key>
<integer>1</integer>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<string>58</string>
</dict>
<dict>
<key>Weekday</key>
<integer>2</integer>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<string>52</string>
</dict>
</array>
<key>StandardOutPath</key>
<string>/Users/denglibing/Desktop/denglibing_checkin/outlog</string>
<key>StandardErrorPath</key>
<string>/Users/denglibing/Desktop/denglibing_checkin/errorlog</string>
</dict>
</plist>

开机启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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>com.xray.cloudflare</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/wf09/Bin/xray/xray</string>
<string>-c</string>
<string>/Users/wf09/Bin/xray/cloudflare.json</string>
</array>
<key>StandardOutPath</key>
<string>/Users/wf09/Bin/xray/cloudflare.log</string>
</dict>
</plist>

选择存放plist文件位置

建议存放在~/Library/LaunchAgents路径下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
* ~/Library/LaunchAgents 由用户自己定义的任务项
* /Library/LaunchAgents 由管理员为用户定义的任务项
* /Library/LaunchDaemons 由管理员定义的守护进程任务项
* /System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
* /System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

/System/Library和/Library和~/Library目录的区别?
/System/Library目录是存放Apple自己开发的软件。
/Library目录是系统管理员存放的第三方软件。
~/Library/是用户自己存放的第三方软件。

# LaunchDaemons和LaunchAgents的区别
LaunchDaemons是用户未登陆前就启动的服务(守护进程)。
LaunchAgents是用户登陆后启动的服务(守护进程)。

加载命令

加载任务
1
launchctl load -w com.denglibing.checkin.plist
删除任务
1
launchctl unload -w com.denglibing.checkin.plist
查看任务列表
1
launchctl list | grep 'com.denglibing'
启动任务
1
launchctl start -w com.denglibing.checkin.plist

关闭任务

1
launchctl stop -w com.denglibing.checkin.plist

添加快速操作到文件夹

有时需要添加一个操作如在终端中打开文件夹、在VScode中打开文件夹

  1. 打开自动操作

command + space搜索自动操作

  1. 选择快速操作

  1. 搜索框输入打开,选中打开访达项目

  1. 工作流程收到当前一栏选择文件或文件夹,并选中位于访达

  1. 打开方式选择你想要打开的应用程序,这里选择最常用的终端

  1. 验证效果