前端的 Shell 魔法笔记
关闭占用端口的程序
lsof -ti:8080 | xargs -n1 kill -9
读取 package.json 的数据
需要安装jq
库解析 json 文件
Github Action 中自带 jq 库,无需安装。
# debian apt install jq # mac brew install jq
# 读取package.json中的name cat package.json | jq -r '.name' # 将package.json中的多个字段拼接成新的字符串 `${name}=${version}` cat package.json | jq -r "'.name' + '=' + '.version'"
给 monorepo 添加 tag
echo $(pnpm -r exec cat package.json | jq -r '.name + "@" + .version') | xargs -n1 git tag
获取本地存在但远程不存在的 Tag
为避免给 monorepo 添加的 tag 已经存在而导致的git push --tags
报错。可以过滤掉已存在的 tags 再推送。
changeset tag
也会添加已存在的 tag
REMOTE_TAGS=$(git ls-remote --refs -t | awk '{print $2}' | awk -F '/' '{print $3}') LOCAL_TAGS=$(git tag -l) TAGS_REMOTE_NOT_EXIST=$(echo "$REMOTE_TAGS $REMOTE_TAGS $LOCAL_TAGS" | xargs -n1 | sort | uniq -u) echo $TAGS_REMOTE_NOT_EXIST | xargs -n1 git push origin
载入 dotenv 的环境变量
直接从文件读取
source .env # OR export $(cat .env | xargs)
从 Github Actions 的 inputs 中读取
# 假设我们给`your_action`一个`inputs.variables`参数 runs: steps: - uses: your_actions with: variables: | V1=my_variable1 V2=my_variable2
# 可以这样读取到V1和V2到环境变量中 export $(cat <<EOF | xargs ${{inputs.variables}} EOF ) echo $V1 # my_variable1 echo $V2 # my_variable2