mac电脑下放在环境变量中,方便提高效率执行
注:相关路径需要根据实际情况进行更新
需要在 .bash_profile 文件中定义如下(路径需要做实际替换):

source $HOME/software/scripts/base_profile.sh
source $HOME/software/scripts/custom_profile.sh

custom_profile.sh 通用内容如下:

# 将时间戳格式化为可读形式,示例: ts2 1714471312123 结果:2024-04-30 18:01:52.123
ts2() {local timestamp=$1# 检查输入是否纯数字if ! [[ "$timestamp" =~ ^[0-9]+$ ]]; thenecho "错误:时间戳必须是数字!" >&2return 1fi# 检查位数(10位=秒级,13位=毫秒级)local length=${#timestamp}if (( length == 10 )); then# 秒级时间戳date -r "$timestamp" "+%Y-%m-%d %H:%M:%S"elif (( length == 13 )); then# 毫秒级时间戳local milliseconds=$((timestamp % 1000))local seconds=$((timestamp / 1000))date -r "$seconds" "+%Y-%m-%d %H:%M:%S.${milliseconds}"elseecho "错误:时间戳必须是 10 位(秒级)或 13 位(毫秒级)!" >&2return 1fi
}# 使用示例: error demo
error(){# 红底白字echo -e "\033[41;37m $1 \033[0m"
}# 使用示例: info demo
info(){# 绿字echo -e "\033[47;32m $1 \033[0m"
}# 需要修改相关路径
# buildandroidcmd(){
#   echo "注意需要在 build 目录执行,且确保相关代码能正常执行"
#   echo "构建 Android 平台可执行程序"
#   cmake .. -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21
#   cmake --build .
# }# adb cmd
alias a='adb shell'
alias akill='adb kill-server'
alias astart='adb start-server'
alias apush='adb push '
alias apull='adb pull '
alias areboot='adb reboot'
alias atop='adb shell dumpsys activity top'
alias astop='adb shell top'
alias arecovery='adb reboot recovery'
alias abootloader='adb reboot bootloader'
alias alog='adb logcat'
alias alogcrash='adb logcat -b crash'
alias aloge='adb logcat -v time *:E'
alias lsime='adb shell ime list -s'
alias lspkg='adb shell pm list packages'
alias img='imgcat'alias lf='exa -l --time-style=full-iso'
alias lt='exa -T -l'
alias ll='exa -l'
alias grepnr='grep -n -r'# other cmd
alias rmdir='rm -r'alias obash='o ~/.bash_profile'
alias sbash="source ~/.bash_profile"# git 相关操作
alias giturl="git remote get-url origin"
alias gurl="git remote get-url origin"
alias gbr="git br -a |grep \"\""
alias gpull="git pull"
alias gclone="git clone "
alias gst="git status "
alias gco="git co "
alias gcheck="git checkout "alias kill9='kill -9 'alias ahome='adb shell input keyevent 3'
alias aback='adb shell input keyevent 4'# 修改后生效
# alias ocus='o $HOME/software/scripts/custom_profile.sh'
# 预期需要修改 author 后的内容
alias glastweek="git log --pretty=format:\"%an: %s\" --since=1.weeks --author=yongchao.yyc|grep yongchao"setproxy(){echo "first we clear the config of proxy before"adb shell settings put global http_proxy :0 echo "now we wait for it to finish for 2 second "sleep 2echo "second we set the proxy"info "ip:${1}  port:${2}"adb shell settings put global http_proxy $1:$2
}gitcheck(){git checkout -b $* origin/$*
}# 需要按实际情况修改后生效
# code(){
#   Open -a /Applications/Code.app $1
# }apkg(){adb shell dumpsys window |grep mCurrentFocus
}# 需要修改完路径后使用
# pstack(){
#    ndk-stack -sym $1 -dump /Users/muyi/Desktop/engine/crash/$2
# }tailf(){tail -f $*
}gclonetag(){git clone $1 --branch $2 --single-branch
}ft(){grep -rnw . -e $*
}# 将指定 so 替换指定包名中的指定动态库(设备需要root), 使用示例:pushsoto libxxx.so com.demo.app
pushsoto(){if adb shell "command -v su" >/dev/null 2>&1; thenecho "Device is rooted"elseerror "Device is not rooted, cant run this commond"returnfiso_file_path=$1so_dir=$(dirname "$so_file_path")echo "so_dir is:"echo "\t$so_dir"so_name=$(basename "$so_file_path")echo "so_name is:"echo "\t$so_name"(cd $so_dirresult=$(adb shell pm path $2)if [ $? -eq 0 ]thenfull_path=${result#package:}dir_path=$(dirname "$full_path")echo "app path:"echo "\t$dir_path"echo "push so to sdcard"push_result=$(adb push $so_name /sdcard/)echo "\t$push_result"echo "move so to"echo "\t$dir_path/lib/arm64"adb shell "su -c 'mv /sdcard/$so_name $dir_path/lib/arm64'"echo "run chmod command"adb shell "su -c 'chmod 777 $dir_path/lib/arm64/$so_name'"elseerror "Failed to execute adb command, please make sure you device is ok"fi)
}pushsoto32() {if adb shell "command -v su" >/dev/null 2>&1; thenecho "Device is rooted"elseerror "Device is not rooted, cant run this commond"returnfiso_file_path=$1so_dir=$(dirname "$so_file_path")echo "so_dir is:"echo "\t$so_dir"so_name=$(basename "$so_file_path")echo "so_name is:"echo "\t$so_name"(cd $so_dirresult=$(adb shell pm path $2)if [ $? -eq 0 ]thenfull_path=${result#package:}dir_path=$(dirname "$full_path")echo "app path:"echo "\t$dir_path"echo "push so to sdcard"push_result=$(adb push $so_name /sdcard/)echo "\t$push_result"echo "move so to"echo "\t$dir_path/lib/arm"adb shell "su -c 'mv /sdcard/$so_name $dir_path/lib/arm'"echo "run chmod command"adb shell "su -c 'chmod 777 $dir_path/lib/arm/$so_name'"elseerror "Failed to execute adb command, please make sure you device is ok"fi)
}# sign(){
#   jarsigner -verbose -keystore /Users/muyi/software/key_store/sign.keystore -signedjar sign_$1 $1 lonewolf -digestalg SHA1 -sigalg MD5withRSA
# }# dex2jar(){
#   sh /Users/muyi/software/tools/android_killer/dex2jar/d2j-dex2jar.sh $*
# }# de(){
#   java -jar /Users/muyi/software/tools/android_killer/bin/apktool/apktool/ShakaApktool.jar  d $*
# }# en(){
#   java -jar /Users/muyi/software/tools/android_killer/bin/apktool/apktool/ShakaApktool.jar  b $*
# }# decode(){
#   java -jar /Users/muyi/software/tools/android_killer/apktool_240.jar d $*
# }# apktool(){
#  java -jar /Users/muyi/software/tools/android_killer/apktool_270.jar $* 
# }# jd(){
#   java -jar /Users/muyi/software/tools/android_killer/jdgui141.jar
# }setime(){adb shell ime set $*
}apkpath(){adb shell pm path $*
}port(){lsof -i:$*
}lsport(){lsof -i:$*
}tap(){adb shell input tap $*
}swipe(){adb shell input swipe $*
}send(){adb shell am broadcast -a  $* 
}ascheme(){adb shell am start $*
}clearapp(){adb shell pm clear $*
}kapp(){adb shell am force-stop $*
}input(){adb shell am broadcast -a ADB_INPUT_TEXT --es msg $*
}f(){grep -R $* .
}aconip(){adb tcpip 5555sleep 3adb connect $*:5555adb devices -l
}cbuild(){cmake .make
}acon(){adb tcpip 5555sleep 3line="------------------------------------------\r\n"echo "now we fetch the ip of android device"aip=`aip`echo "ip is ${aip}"echo ${line}echo "now we connect"echo "${aip}:5555"adb connect "${aip}:5555"echo ${line}adb devices -l
}adis(){adb disconnect
}awifi(){adb tcpip 5555ip=`aip`echo "device's ip is ${ip}"adb connect ${ip}
}# 获取 ip 地址
ip(){ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
}# 获取 ip 地址并拷贝到粘贴板(针对 mac os)
ipcp(){ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"| pbcopy
}aip(){adb shell ifconfig |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
}# sh 的封装,在脚本执行结束后弹窗提示
ish(){sh $*say script finishosascript -e 'display notification "脚本执行完成" with title "ish"'
}kclient(){lsof -i tcp:12345 |grep ython | awk '{print $2}' |xargs kill -9
}# 获取对应文件的行数
count(){wc -l $*
}fsize(){du -sh $*
}# 安装 apk ,并在结束时给予声音和通知栏提示(针对 mac os)
apk(){result=$(echo $* | grep "Amap")if [[ "$result" != "" ]]theninfo "now we try to uninstall amap first"unainfo "then we intall"fiadb install $*# 以下两行针对 mac os# say "install finish"osascript -e 'display notification "安装完成" with title "apk"'# if [[ "$result" != "" ]]# then#       oa# else#       echo "不包含"# fi
}# 向鸿蒙手机安装包
hap(){hdc install $*osascript -e 'display notification "安装完成" with title "hap"'
}# 在控制台打印信息并在mac通知中显示对应信息
shownoti(){echo $*osascript -e 'display notification "'$*'" with title "脚本"'
}# 卸载指定包名的app
unapp(){adb uninstall $* 
}# 使用 SublimeText 打开内容
# 需要修改对应路径
# o(){
#   Open -a /Applications/SublimeText.app $1
# }# 查看 apk 包信息
apkdump(){aapt dump badging  $1
}# 查看已连接设备
list(){adb devices -l
}# 对Android设备执行录屏,ctrl+c结束录屏
arecord() {result=`adb devices -l |grep product |wc -l | tr -cd "[0-9]" `if [[ ${result} == "1" ]]; thenecho "连接了一台设备"else  error "已连接 ${result} 台设备,请确保有且仅有一台设备连接"returnfiif [ $# -eq 0 ]thenname="record"elsename="record$1"fi  trap 'onCtrlC' INTfunction onCtrlC () {running=falsetrap -- '' INT}info "开始录屏"adb shell screenrecord /sdcard/demo${name}.mp4info "录屏结束,等待录屏正常停止..."  sleep 5info "现在拉取视频..."target_dir="/Users/muyi/Pictures/videos"adb pull /sdcard/demo${name}.mp4 ${target_dir}/${name}.mp4info "视频已保存到:$target_dir"echo "文件名为:${name}.mp4"echo "完整路径为:${target_dir}/${name}.mp4"
}# 对当前设备截图保存到命令执行所在目录且将其打开
# 需要修改路径
asp() {target_dir="/Users/muyi/Pictures/screenshots"# current=`date "+%Y-%m-%d %H:%M:%S"`     #获取当前时间,例:2015-03-11 12:33:41       # timeStamp=`date -f "$current" +%s`      #将current转换为时间戳,精确到秒# currentTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) #将current转换为时间戳,精确到毫秒if [ $# -eq 0 ]then# name=${currentTimeStamp}".png"name="screenshot.png"elsename="$1.png"if [ $# -eq 2 ]thentarget_dir=$2fifiadb shell screencap -p /sdcard/${name}adb pull /sdcard/${name} ${target_dir}/${name}adb shell rm /sdcard/${name}echo "save to $target_dir/${name}"# for mac osopen $target_dir"/"$name
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92720.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92720.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92720.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE蓝图节点Add Impulse和Add Torque in Radians

​​​​​​​Add Impulse:对刚体施加一次性的线性脉冲(瞬时改变量),改变速度(与质量有关,除非你勾 bVelChange)。Add Torque (in Radians):对刚体施加转矩/旋转力(向量…

大型语言模型幻觉检测与缓解技术研究综述

摘要 本文系统综述了大型语言模型(LLMs)中的幻觉现象及其检测与缓解技术。研究首先从认知机制角度分析了幻觉产生的理论根源,包括模型对语言先验的过度依赖、训练数据偏差以及推理过程中的信息衰减等问题。在技术层面,综述将现有方法归纳为三类&#xff…

【数据结构初阶】--二叉树(二)

😘个人主页:Cx330❀ 👀个人简介:一个正在努力奋斗逆天改命的二本觉悟生 📖个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》 前言:上篇博客我们学习了有关树的概念和相关术语的介绍&…

jmm 指令重排 缓存可见性 Volatile 内存屏障

CPU指令重排 CPU指令重排是指CPU为了提高指令执行效率,可能会对指令的执行顺序进行优化,使得(单线程下)指令的实际执行顺序与代码中的顺序不同,但结果是一致的。 这种优化是通过乱序执行和缓存读写重排来实现的。 乱序…

卡车手机远程启动一键启动无钥匙进入有哪些好处

随着汽车科技的发展,卡车智能化升级已成为趋势,其中手机控车、远程启动、无钥匙进入及一键启动等功能显著提升了驾驶便捷性与安全性。以下从功能特点、技术原理、适用场景及改装建议等方面展开说明。一、核心功能及技术特点1. 无钥匙进入系统自动感应操作…

【pyqt5】SP_(Standard Pixmap)的标准图标常量及其对应的图标

目录 **常见SP_图标分类及用途** **1. 箭头和导航图标** **2. 文件和编辑操作** **3. 系统状态和通知** **4. 应用程序和菜单** **5. 数据视图控件** **完整列表(部分)** **使用建议** **6. 数据操作图标** **7. 编辑和文本操作** **8. 媒体控制图标** **9. 系统和应用状态**…

VS Git巨坑合并分支失败导致多项无关改变

基于主分支创建的临时分支上进行了一些开发,合并回主分支,期间主分支没有进行任何更改还是创建临时分支时的状态,但合并莫名其妙报错 “1 uncommitted …”,我可以确认主分支和临时分支均没有尚未提交的更改。更恶心的是&#xff…

开始记录U9客开过程中听点滴

很久没有更新了。终于有时间可以拾起U9的研究当中。时间长了就生疏了很多,记录下来备查吧。用这个工具可以生成一个VS 2022的项目,在指定的地方写自已的代码既可。BE插件,Busing Plugin 商业插件。总结一下,BE插件是应用于某一个单…

C# 异步编程(使用异步Lambda表达式)

使用异步Lambda表达式 到目前为止,本章只介绍了异步方法。但我们曾经说过,你还可以使用异步匿名方法和异步 Lambda表达式。这些构造尤其适合那些只有少量工作要做的事件处理程序。下面的代码片段将 一个表达式注册为一个按钮点击事件的事件处理程序。 st…

K8S云原生监控方案Prometheus+grafana

目录 1. 概述 1.1 系统架构 1.1.1 架构图 ​编辑 1.2 环境准备 2. 部署prometheus 2.1 创建Namespace 2.2 创建ConfigMap资源 2.3 创建ServiceAccount,Clusterrole,Clusterrolebinding,Service,Deployment,in…

Matplotlib库:Python数据可视化的基石,发现它的美

Matplotlib是Python中最基础、最广泛使用的数据可视化库,它提供了类似MATLAB的绘图接口,能够创建高质量的静态、动态和交互式图表。作为科学计算和数据可视化的核心工具,Matplotlib几乎成为Python数据科学生态系统的标准可视化组件。 今天与…

每日算法刷题Day59:8.9:leetcode 队列8道题,用时2h30min

一、基础 1.套路 1.队列常用在 BFS 中&#xff0c;见 网格图题单 和 图论题单。 2.队列(queue)是容器适配器&#xff0c;功能较少。 队尾插入元素&#xff0c;队首弹出元素&#xff0c;可以访问队首元素、队尾元素和队列长度。 无begin(),end()等迭代器 queue<int> qu…

Java选手如何看待Golang

写在前面&#xff1a;翻了很多博客&#xff0c;一直没有Java选手转行golang的学习经验贴&#xff0c;思考很久&#xff0c;写下这篇Java选手怎么看待golang这个冉冉新星。1.走完所有golang基础之后的感受&#xff08;1&#xff09;最大的不适应有这么几点&#xff1a;---变量定…

Codeforces Round 967 (Div. 2) D. Longest Max Min Subsequence

假设我们要选a[j]为答案数组b[i]&#xff0c;从i从1~m&#xff08;m为a数组中不同数的个数&#xff09;建立一个suf数组&#xff0c;代表以i开头的后缀有多少个不同且在b[1~i-1]中未出现过的的个数&#xff0c;预处理suf&#xff0c;发现后续我们怎么选数改变suf&#xff0c;su…

Linux运维新手的修炼手扎之第27天

mysql服务1 主从复制集群&#xff1a;多主机集群【复制】负载过大解决方案&#xff1a;横向扩展[增加服务器节点分散负载]、纵向扩展[提升单机硬件性能]复制工作原理&#xff1a;前提&#xff1a;基础数据一样&#xff0c;主节点上有同步数据用的账号主角色【二进制日志、binlo…

【Linux】Linux增删改查命令大全(附频率评级)

Linux增删改查命令大全&#xff08;附频率评级&#xff09;* 《Linux命令全景手册&#xff1a;增删改查全场景解析&#xff08;含136个高频命令&#xff09;》 按使用频率★分级 | 测试/运维/开发均适用 | 附思维导图下载一、命令全景表&#xff08;增删改查频率评级&#xff0…

SwiftUI 登录页面键盘约束冲突与卡顿优化全攻略

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

建筑物实例分割数据集-9,700 张图片 城市规划与发展 灾害评估与应急响应 房地产市场分析 智慧城市管理 地理信息系统(GIS) 环境影响评估

建筑物实例分割数据集-9,700 张图片&#x1f4e6; 已发布目标检测数据集合集&#xff08;持续更新&#xff09;&#x1f3e2; 建筑物实例分割数据集介绍&#x1f4cc; 数据集概览包含类别&#x1f3af; 应用场景&#x1f5bc; 数据样本展示使用建议&#x1f31f; 数据集特色&am…

LeetCode 刷题【36. 有效的数独】

36. 有效的数独 自己做 解&#xff1a;多层for class Solution { public:bool isValidSudoku(vector<vector<char>>& board) {int hight board.size(); //长if (hight 0)return true;int wide board[0].size(); //宽//判断一行是否出现重复bool…

Java 日志从入门到精通:告别日志混乱

作为一名 Java 开发者&#xff0c;你是否曾在生产环境故障排查时面对过这样的困境&#xff1a;系统报错却找不到关键日志&#xff0c;日志文件大到无法打开&#xff0c;或者日志内容杂乱无章根本无法定位问题&#xff1f;日志作为系统运行的 “黑匣子”&#xff0c;其重要性不言…