最近在公司申请到了一台新的21款MacBook Pro,16英寸,芯片是Apple M1 Pro的,32GB内存,HD512G,并回购了原来使用的18款MacBook Pro,15英寸,Intel芯片,16G内存,HD256G,配置上面有了不小的提升,并且M1芯片的Mac使用起来不发烫,工作的快乐这不就又回来了嘛!
俗话说得好,工欲善其事,必先利其器。在下根据之前的办公习惯,火速安装了一些效率软件,在此也不藏着掖着,就都奉献给在座的各位了。
// 将brew可执行文件所在目录添加到 ~/.zshrc 文件中
echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.zshrc
// 安装autosuggestions插件,可以根据命令的使用记录,提供自动补全提示功能
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
// 安装syntax-highlighting插件,提供语法高亮功能
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
cat /etc/shells // 查看当前系统中可用的shell类型
echo $SHELL // 查看当前用户默认的shell
echo $0 // 查看当前用户正在使用的shell
cat /etc/passwd | grep `whoami` // 查看用户配置的默认shell
ps -ef | grep `echo $$` | grep -v ps | grep -v grep // 查看当前shell进程
ssh-keygen -t rsa // 使用rsa加密算法,生成公私钥对,一直默认选择即可
cat ~/.ssh/id_rsa.pub // 输出公钥内容,可以copy到github或用于ssh登录
ssh-copy-id user@remote [-p port] // ssh server默认监听22端口,将公钥上传到remote机器user家目录的~/.ssh/authorized_key文件中
ssh user@remote -p port 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub // 如果ssh-copy-id不可用,可以执行该指令上传公钥
scp a.txt user@remote:~/ // 将本地的a.txt文件上传到ip=remote的user家目录下
~/.ssh/config 创建文件,写入以下内容,可以实现更方便的登录远程主机
Host host
HostName example.com或者ip
User user
IdentityFile ~/.ssh/id_rsa
Port 22
理解工作区、暂存区、本地仓库的概念,熟悉常用git命令
brew install git
// 常用git命令如下
git pull/push/add/commit/fetch/status/merge/rebase
git commit -am "msg"
git log --pretty=oneline --graph —all
git reset --hard head // 丢弃当前工作区和暂存区的修改
git rebase origin/master // 将当前分支的commit按顺序变基到origin/master分支
git rebase -i head~3 head // 操作最近3个commit
git rebase --onto origin/master head~1 head // 将当前分支最近1个commit变基到origin/master分支
git stash [pop/apply/drop/list]
git checkout -b dev_anin // 创建dev_anin分支,并指向当前commit
git branch -d dev_anin // 删除本地仓库dev_anin分支
git push -d origin dev_anin // 删除远程仓库dev_anin分支
git remote show origin // 展示远程仓库的一些信息
git remote prune origin // 将远程仓库中已经删除的origin/*分支在本地也删除
// 统计个人代码提交行数
git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | grep -v vendor | grep -v output | grep -v script | grep -v conf | grep -E "go$" | awk '{ add += $1 ; subs += $2 ; total += $1 + $2 ; net += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s, net increase lines: %sn",add,subs,total,net}'
--since=2018-10-01 --until=2018-12-31 添加起止时间
-n 1 指定最近1个commit
brew install openjdk
brew install openjdk@8 // 如果安装openjdk8,对于M1芯片,无法直接安装,需要使用下面的指令
brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8 // installed at /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home,在idea中配置该路径即可使用
// 安装完成idea,创建java项目
Project Settings -> Modules 中配置jdk版本
ll /Library/Java/JavaVirtualMachines/
drwxr-xr-x 3 root wheel 96B 4 21 2021 adoptopenjdk-8.jdk
lrwxr-xr-x@ 1 root wheel 45B 4 10 12:48 openjdk.jdk -> /opt/homebrew/opt/openjdk/libexec/openjdk.jdk
// 根据需要添加 Module SDK即可
// 先安装conda,conda有anaconda和miniconda两个版本,个人倾向使用miniconda
brew install --cask miniconda
conda init "$(basename "${SHELL}")" // 执行初始化指令
conda create -n py37 // 创建一个空环境
conda activate py37 // 激活py37环境,会从默认的base切换到py37环境
conda install python=3.7 // 安装python3.7版本,在Apple Silicon系统上无法使用3.8以下版本,执行下面指令后才能安装python 3.7版本
conda config --env --set subdir osx-64
conda --version // 查看版本
conda env list // 查看全部环境
// 安装完成pycharm,创建python项目
// 在project中设置python interpreter,选择conda environment,找到上面创建好的 py37 环境
/opt/homebrew/Caskroom/miniconda/base/envs/py37/bin/python
brew install go
// Installed at /opt/homebrew/Cellar/go/1.20.2/bin/go
// Symbolic link /opt/homebrew/bin/go -> ../Cellar/go/1.20.2/bin/go
echo "source /Users/anin/.gvm/scripts/gvm" >> ~/.zshrc // 安装gvm后如果找不到gvm命令,可以执行该指令
gvm install go1.19
gvm use go1.19
gvm use system
gvm version
gvm list
go get xxx/xxx/xxx // 更新项目go.mod中的 xxx/xxx/xxx 依赖,并下载依赖对应版本到 /Users/anin/go/pkg/mod
go mod tidy // 整理go.mod文件中依赖,下载go.mod中指定版本依赖至 /Users/anin/go/pkg/mod 中
go mod why xxx/xxx/xxx // 检查依赖 xxx/xxx/xxx 的原因,并列出依赖链路
// go代码中格式化可能会出现多个空行,以下指令可以只保留一个空行
go mod tidy | git add . | git diff --name-only head | grep -E "go$" | xargs -I{} sh -c "gsed -i '/import (/, /)$/{/^$/d}' ./{} && goimports -w {}"
brew install gsed // installed at /opt/homebrew/bin/gsed
go install golang.org/x/tools/cmd/goimports // installed at /Users/anin/go/bin/goimports, 可能需要将 /Users/anin/go/bin 添加到PATH变量中
// 执行git merge或rebase代码时,go.mod与go.sum文件经常发生冲突,删除冲突标识,执行go mod tidy即可保留较新依赖版本,并修复go.sum文件,也可以直接执行下面指令一键解决冲突
sh -c "sed '//d' > go.mod.bak" && rm go.mod && mv go.mod.bak go.mod && go mod tidy
// 安装完成goland,创建go项目
// 配置goland中GOROOT,/opt/homebrew/Cellar/go/1.20.2/libexec
// 配置goland中Go Mudules,开启 Enable Go modules integration
go mod init [module-path]
go代码中格式化可能会出现多个空行,一种方式是手动执行上面的那行指令,另一种解决方式是在Goland做如下配置,即可在CMD+S保存时,自动格式化
Settings -> Tools -> File Watchers -> gsed + goimports
设置技巧是在File Watchers页面,点击+号,选择goimports,然后修改Name和Program为gsed,修改Arguments参数,注意Advanced Options不要选中
-i "/import (/, /)$/{/^$/d}" $FilePath$