我折腾的shell笔记

shell 代码集合

Mac一些常用的快捷键记录

iTerm2或者命令行相关

命令 说明
ctrl + d 删除当前光标的字符
ctrl + h 删除光标之前的字符
ctrl + w 按单词(word)单步删除输入的命令
ctrl + a 光标移动到行首
ctrl + e 光标移动到行尾
ctrl + f/b 前进后退: (相当于左右方向键)
ctrl + p 上一条命令
ctrl + r 搜索命令历史
ctrl + t 交换光标处文本
ctrl + k 删除到文本末尾
⌘ + rctrl + l 清屏(⌘ + r = clear,而且只是换到新一屏,不会想 clear 一样创建一个空屏)
ctrl + q , ctrl + u 清除输入的命令行当前行
open ./ 弹出当前目录finder
⌘ + t 新建标签页
⌘ + w 关闭标签页
⌘ + 数字⌘ + 左右方向键 切换标签页
⌘ + enter 切换全屏
⌘ + f 查找
⌘ + d 垂直分屏
⌘ + shift + d 水平分屏
⌘ + option + 方向键⌘ + [⌘ + ] 切换屏幕
⌘ + ; 查看历史命令
⌘ + shift + h 查看剪贴板历史
⌘ + f 查找

Mac桌面上或者某目录下操作

  • ⌘ + shift + G 前往文件夹
  • ⌘ + space 聚焦搜索即全局搜索
  • ⌘ + shift + . 隐藏/显示隐藏文件或文件夹
  • ⌘ + shift + 3 全屏截图
  • ⌘ + shift + 4 可选取范围截图
  • ctrl + ⌘ + space 弹出emoji选择窗口
  • ctrl + ← 向左切换桌面
  • ctrl + → 向右切换桌面
  • ctrl + ↑ 显示全部桌面选择
  • ctrl + ↓ 显示最近打开编辑过的文件
  • ⌘ + tab 切换已打开程序坞上的应用
  • ⌘ + q 关闭当前程序
  • ⌘ + w 关闭当前窗口
  • ⌘ + n 新建文件
  • ⌘ + s 保存
  • ⌘ + , 当前应用的偏好设置
  • ctrl + space 切换输入法

一些实用脚本示例

代码无提示或者其他抽风症状,清除Xcode缓存

#!/bin/bash
defaults write com.apple.dt.XCode IDEIndexDisable 0
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Caches/com.apple.dt.Xcode
# 关闭Xcode 
killall Xcode

查看当前网络ip地址

#!/bin/bash
curl ip.sb

日常提交推送git代码

#!/bin/bash

read -p "输入提交日志信息: " commit_message
read -p "输入分支名(默认为dev分支): " branch_name

if [[ -n "${commit_message}" ]]; then
	#statements
	echo "日志信息参数为: ${commit_message}"
else
	echo "日志信息参数为空,已使用默认模板: 🚀update~"
	commit_message="🚀update~"
fi

if [[ -n "${branch_name}" ]]; then
	#statements
	echo "分支名参数为: ${branch_name}"
else
	echo "分支名参数未输入,默认为dev"
	branch_name="dev"
fi

git add .
git commit -am  "${commit_message}"
git push origin ${branch_name}

统计iOS代码行数

#!/bin/bash
	read -p "输入代码文件所在路径: " code_path
	find ${code_path} "(" -name "*.h" -or -name "*.mm" -or -name "*.m" -or -name "*.swift" ")" -print | xargs wc -l 

Plistbuddy相关的操作

  • 添加name字段 值为iqiyi
plistbuddy -c 'Add :items:0:metadata:name string "iqiyi"' ~/Desktop/man.plist
  • 修改title值为你好
plistbuddy -c 'Set :items:0:metadata:title "你好"' ~/Desktop/man.plist
  • 删除name字段
plistbuddy -c 'Delete :items:0:metadata:name ' ~/Desktop/man.plist
  • 合并两个plist 可设置层级
PlistBuddy -c 'Merge A.plist' B.plist
plistbuddy -c "Merge ~/Desktop/Global.plist :Software:Gallery"~/Desktop/man.plist
  • 打印
plistbuddy -c 'Print' ~/Desktop/man.plist

修改终端欢迎页面

# 无论是linux还是Mac,终端都有这么一个配置文件,专门设置初始页面的展示,可以自由发挥(写上自己的大名或者画一张ascii图佛祖保佑永无bug之类的,座右铭啥的...)
vim /etc/motd

oh-my-zshagnoster的主题配置需要注意的几个问题

#agnoster主题,zsh默认目录是不带颜色的,在.zshrc末尾加上即可
export LSCOLORS="exfxcxdxbxexexabagacad"

# 修改终端路径前缀,默认为电脑用户名,可以在~/.oh-my-zsh/themes/agnoster.zsh-theme修改prompt_context函数或者将其调用注释即可缩短路径长度

prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    # prompt_segment black default "%(!.%{%F{yellow}%}.)$USER@%m"
    prompt_segment red default "🎯Coding"
  fi
}

# 改变路径显示颜色和缩减路径长度
prompt_dir() {
  #prompt_segment blue black '%~' #默认显示全路径
   prompt_segment 3 white '%c' #只显示当前路径
}

# 还有有git管理的目录下的路径颜色显示也可以改prompt_git函数
 
 if [[ -n $dirty ]]; then
      #prompt_segment yellow black
      prompt_segment yellow white
    else
      #prompt_segment green black
      prompt_segment green  white
    fi

Xcode模拟器编译相关

Xcode指定模拟器编译&&打开指定模拟器

xcodebuild -scheme ProjectName -destination 'platform=iphonesimulator,name=iPhone 13 pro Max' -derivedDataPath ~/Desktop/buildData
xcrun instruments -w 'iPhone 13 pro Max'

Xcode模拟器安装.app文件 && 自动打开指定App

xcrun simctl install booted "xxx.app" 
xcrun simctl launch booted "com.xxx.xxx" 

英文大小写转换

英文转大写

typeset -u text
text=$1
#拷贝到剪贴板
osascript -e 'set the clipboard to "'"${text}"'" as text'

英文转小写

typeset -l text
text=$1
#拷贝到剪贴板
osascript -e 'set the clipboard to "'"${text}"'" as text'

以上两个方法Alfred的终端可以执行,但是iTerm2执行不了(猜测是typeset被一些插件alias了),以下方法可代替

function to_lowercase()
{
    LOWER_CASE=$(echo ${1} | tr '[A-Z]' '[a-z]')
    echo ${LOWER_CASE}
}
 
function to_uppercase()
{
    UPPER_CASE=$(echo ${1} | tr '[a-z]' '[A-Z]')
    echo ${UPPER_CASE}
}

Mac终端IP地址获取

IP=$(ifconfig | sed -e '/.*inet /!d;s///;s/ .*//' | tail -n 1)
echo $IP

Python开启本地webServer(用这个东西内网传东西方便)

#! /bin/bash
#调用: webServer -p 8080
IP=$(ifconfig | sed -e '/.*inet /!d;s///;s/ .*//' | tail -n 1)
IP_PORT=8080
while getopts "p:" opt; do
  case $opt in
    p)
       IP_PORT=$OPTARG
      ;;
    \?)
      IP_PORT=8080
      ;;
  esac
done

IPAddress="http://${IP}:${IP_PORT}"
CurrentDir=`pwd`
echo "🚀 当前目录为:${CurrentDir},WebServer已开启"
echo "🏡 地址为: ${IPAddress} 已拷贝至剪贴板📋"
echo "🔥 欢迎使用~ 组合键 Ctrl + C 即可退出🔥"

echo ${IPAddress} | pbcopy
python -m SimpleHTTPServer $IP_PORT

github镜像下载文件

github下载文件镜像加速(使用场景为浏览器打开时用的fastgit.org镜像,下载时为了兼容github.com走https://gh.api.99988866.xyz 所以有了这个)

query=$1

if [[  -n "${query}" ]];
then 
URL=${query/hub.fastgit.org/github.com}
openWebLink=https://gh.api.99988866.xyz/${URL}
else
pb=`pbpaste`
URL=${pb/hub.fastgit.org/github.com}
openWebLink=https://gh.api.99988866.xyz/$URL
fi

echo $openWebLink #此链接通过Alfred用浏览器打开即可

Mac启动台的应用图标九宫格排列

#设置矩阵columns的数量
defaults write com.apple.dock springboard-columns -int 7
#设置矩阵rows的数量
defaults write com.apple.dock springboard-rows -int 6
#重启方可生效
defaults write com.apple.dock ResetLaunchPad -bool TRUE;killall Dock

Mac系统暗黑模式切换

重复执行即可取反

#!/bin/bash

dark='not dark mode'
Script="tell app \"System Events\" to tell appearance preferences to set dark mode to $dark"
osascript -e "$Script"

Mac终端 sed 命令总结

获取匹配内容的行号

# 匹配标识 <- <# Version Replace Flag #> -> 文件所在行号
lineNum=`grep -n "<- <# Version Replace Flag #> ->" test.txt | cut -d ":" -f 1`
echo $lineNum

删除指定行

sed -i "" "${lineNum}d" ./test.txt
sed -i ".bak" "${lineNum}d" ./test.txt #会生成一个.bak备份文件 避免数据丢失

插入指定行(这个插入Mac里只能使用单引号使用,但是单引号内无法引用变量$x,所以变量$version要在单引号外进行拼接)

version=3.0.0
sed -i "" ''${lineNum}'i\
    return @\"'${version}'\";//<- <# Version Replace Flag #> ->
     ' ./test.txt
#或者
sed -i ".bak" ''${lineNum}'i\
    return @\"'${version}'\";//<- <# Version Replace Flag #> ->
     ' ./test.txt

替换文本文件内容

# 匹配代码里的版本号按正则规则匹配 然后替换成 $newVersion
sed -i ".bak" "s/    return @\"[0-9].[0-9].[0-9]\";/    return @\"${newVersion}\";/g" ${SDK_File_Version_Path} 

版本号字符串切割

codeText=$(cat $SDK_File_Version_Path | grep -oE  "\"[0-9]+.[0-9]+.[0-9]+\"" | tail -n 1)
echo "匹配结果: "$codeText # "2.0.1"

leftText=${codeText#*\"} # 2.0.1"
resultText=${leftText%\"*} # 2.0.1
lastVersion=$resultText
echo $lastVersion #2.0.1

version_array=(${lastVersion//./ }) (2 0 1)
Major=${version_array[0]} # 2
Minor=${version_array[1]} # 0
Build=${version_array[2]} # 1
#Build号自增 数字运算
result=$(echo "${Build}+1" | bc) # 2 

iOS .app文件打成白包

原理是简单,建立一个Payload文件夹把.app文件放进去,zip压缩一下改后缀名.ipa即可,每次都这么操作就比较烦了~
干脆写个脚本去搞, 进阶版就是配合Mac自动操作去执行~ 就是这样

# /bin/bash
# iOS打白包 Demo.app => Demo.ipa
#AppFilePath="/Users/wangguibin/Desktop/Demo.app"
# sh white_ipa.sh "./xxx.app"
AppFilePath=$1
AppName_all=${AppFilePath##*/}
AppName=${AppName_all%.*}

cd ~/Desktop #打到桌面上来 比较好找
mkdir -p Payload
cp -Rf $AppFilePath ./Payload/
zip -qryX ./$AppName.ipa  ./Payload
rm -rf Payload

或者直接RunScript里加如下代码即可

app_dir="${BUILD_ROOT}/${CONFIGURATION}-iphoneos"
cd $app_dir

AppName=${EXECUTABLE_NAME}
AppFile=./${AppName}.app
mkdir -p Payload
cp -Rf ${AppFile} ./Payload/
zip -qryX ./$AppName.ipa  ./Payload
rm -rf Payload
open $app_dir
posted @ 2020-03-06 13:47  CoderWGB  阅读(502)  评论(0编辑  收藏  举报