我折腾的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 |
删除到文本末尾 |
⌘ + r 或 ctrl + 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-zsh
的agnoster
的主题配置需要注意的几个问题
#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
未经作者授权,禁止转载
本文来自博客园,作者:CoderWGB,转载请注明原文链接:https://www.cnblogs.com/wgb1234/p/12426157.html
THE END