Shell知识以及常用的脚本
2019-12-04 本文已影响0人
放羊娃华振
- 获取某个文件夹下的所有文件名(含文件夹),并显示
#!/bin/sh
#============ get the file name ===========
Folder_A="/Users/tal/Desktop/测试升级-1204/低版本/"
for file_a in ${Folder_A}/*
do
temp_file=`basename $file_a`
echo $temp_file
done
2、若要去掉文件名的后缀(假如该文件夹下的所有文件为.txt格式),则代码为
#!/bin/sh
#============ get the file name ===========
Folder_A="/Users/tal/Desktop/测试升级-1204/低版本/"
for file_a in ${Folder_A}/*
do
temp_file=`basename $file_a .txt`
echo $temp_file
done
3、如果要输出到一个文件的话也可以重定向到一个文件中去
#!/bin/sh
#============ get the file name ===========
Folder_A="/Users/tal/Desktop/测试升级-1204/低版本/"
Output_file="output.txt"
#这里用于清空原本的输出文件,感觉 : 这个符号用处挺大,shell的学习还是要多用才是
: > $Output_file
for file_a in ${Folder_A}/*
do
temp_file=`basename $file_a`
echo $temp_file >> $Output_file
done
4、增加了传入文件路径
#!/bin/sh
#============ get the file name ===========
echo -e "请输入你要读取的文件夹路径\n当前路径为${PWD}"
read InputDir
echo "你输入的文件夹路径为${InputDir}"
echo -e "请输入你要将数据输出保存的文件路径n当前路径为${PWD}"
read OutputFile
echo "输出保存的文件路径为${OutputFile}"
: > $OutputFile #清空OutputFile
#循环读取文件夹名
for file_a in ${InputDir}/*
do
temp_file=`basename $file_a`
echo $temp_file >> $OutputFile
done
5、脚本安装Folder_APK目录的apk文件到手机
#============ get the file name ===========
Folder_APK="/Users/tal/Desktop/测试升级-1204/低版本/"
# basepath=$(cd `dirname $0`; pwd)
# echo 当前路径:$basepath
for file_a in ${Folder_APK}/*
do
temp_file=`basename $file_a`
echo $temp_file
adb install -r -d $file_a
done
6、拷贝脚本到apk目录下,安装改目录下apk大屏手机
#!/bin/sh
#============ get the file name ===========
Folder_APK=$(cd `dirname $0`; pwd)
echo 当前路径:$Folder_APK
for file_a in ${Folder_APK}/*
do
temp_file=`basename $file_a`
if [[ $temp_file =~ apk$ ]]; then
echo '开始安装=>'$temp_file;
adb install -r -d $file_a;
echo ------------------------------------------
else
echo $temp_file'=>不是apk文件,无需安装';
fi
done
7、查看app版本号的脚本信息
#!/bin/sh
#============ get the file name ===========
arr=("com.qingke.aitv.setting" "com.tongxue.aitv.app" "com.komect.skill.simple" "com.tongxue.aitv.voiceassistant" "com.qingke.aitv.qklauncher")
echo ---------------------开始查看包名------------------------------
for value in ${arr[@]}
do
echo '查看包名=>'$value
adb shell pm dump $value | grep "versionCode";
echo ---------------------------------------------------------
done
echo ---------------------结束查看包名------------------------------
8、shell脚本下载文件
curl -O http://files/test.aar
9、使用8下载的时候,发现要登录等验证比较麻烦,所以我就想直接让浏览器打开指定的地址
//Mac:
open 'https://www.jianshu.com/u/b1e83fac19e0'
//Linux:
x-www-browser 'https://www.jianshu.com/u/b1e83fac19e0'
//Windows:
cmd /c start https://www.jianshu.com/u/b1e83fac19e0
//Mac下利用google浏览器打开指定地址
open -a 'Google Chrome' https://www.jianshu.com/u/b1e83fac19e0
10、下载maven上的aar。必须使用谷歌浏览器&&maven是登录状态
#!/bin/sh
# sleep 1 睡眠1秒
# sleep 1s 睡眠1秒
# sleep 1m 睡眠1分
# sleep 1h 睡眠1小时
aar_version=1.0.0.13
echo 配置AAR版本号:$aar_version
ulr_base=http://192.168.0.1/repository/xrsqkmaven/com/xesqk/bundle/support/business
echo 配置ulr_base:$ulr_base
sleepTime=2s
#============ 开始下载aar ===========
echo “============ 开始下载aar ===========”
open -a 'Google Chrome' $ulr_base/libDownLoad-support/$aar_version/libDownLoad-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/sdkcom-support/$aar_version/sdkcom-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/playerbase-support/$aar_version/playerbase-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/crnbase-support/$aar_version/crnbase-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/libAbcCommon-support/$aar_version/libAbcCommon-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/sensorcore-support/$aar_version/sensorcore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/support-support/$aar_version/support-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/httpcore-support/$aar_version/httpcore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/dbcore-support/$aar_version/dbcore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/zipcore-support/$aar_version/zipcore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/glidecore-support/$aar_version/glidecore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/permission-support/$aar_version/permission-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/libAliyun-support/$aar_version/libAliyun-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/libMedia-support/$aar_version/libMedia-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/libLatex-support/$aar_version/libLatex-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/rncore-support/$aar_version/rncore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/workwidget-support/$aar_version/workwidget-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/aliosscore-support/$aar_version/aliosscore-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/exoplayer-support/$aar_version/exoplayer-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/workbase-support/$aar_version/workbase-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/libAilab-support/$aar_version/libAilab-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/studyappcom-support/$aar_version/studyappcom-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/common-support/$aar_version/common-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/nativequestion-support/$aar_version/nativequestion-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/rncorework-support/$aar_version/rncorework-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/ministryedu-support/$aar_version/ministryedu-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/moduleBook-support/$aar_version/moduleBook-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/nativeanswer-support/$aar_version/nativeanswer-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/rnanswer-support/$aar_version/rnanswer-support-$aar_version.aar
sleep $sleepTime
open -a 'Google Chrome' $ulr_base/qualitycultivate-support/$aar_version/qualitycultivate-support-$aar_version.aar
sleep $sleepTime
echo “============ 结束下载aar ===========”
10、修改目录下.aar为.zip
#!/bin/sh
#!/bin/bash
oldext="aar"
newext="zip"
dir=$(eval pwd)
for file in $(ls $dir | grep .$oldext)
do
name=$(ls $file | cut -d. -f1)
mv $file ${name}.$newext
done
echo "change aar=====>zip done!"
11、把aar中的其余cpu架构去掉,只保留armabi。可以使用该脚本,把所有的aar和脚本都拷贝到同一个目录下,执行脚本即可。备注:一个aar,只能执行一次,不然生成的压缩包中会有多层目录。
#!/bin/sh
#!/bin/bash
echo -------------开始执行脚本,当前目录是$(eval pwd)
# 打印佛祖
function emptyPrint(){
echo "\033[0;33m"
cat<<EOT
_oo0oo_
088888880
88" . "88
(| -_- |)
0\ = /0
___/'---'\___
.' \\\\| |// '.
/ \\\\||| : |||// \\
/_ ||||| -:- |||||- \\
| | \\\\\\ - /// | |
| \_| ''\---/'' |_/ |
\ .-\__ '-' __/-. /
___'. .' /--.--\ '. .'___
."" '< '.___\_<|>_/___.' >' "".
| | : '- \'.;'\ _ /';.'/ - ' : | |
\ \ '_. \_ __\ /__ _/ .-' / /
====='-.____'.___ \_____/___.-'____.-'=====
'=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 iii 永不死机
EOT
echo "\033[m"
}
# 把aar名字修改为zip
oldext="aar"
newext="zip"
dir=$(eval pwd)
#"-------------开始修改aar为zip------------------------------------"
for file in $(ls $dir | grep .$oldext)
do
# echo $file
name=$(ls $file | cut -d. -f1 -f2 -f3 -f4)
# echo $name
mv $file ${name}.$newext
done
echo "--------------完成修改aar为zip------------------------------------"
emptyPrint
#"-------------开始解压zip文件------------------------------------"
function deleDir(){
#如果有文件夹,先删除
for file in ./*
do
if test -f $file
then
msg=${file}是文件,不需要压缩处理
fi
if test -d $file
then
msg=${file}是目录需要删除
rm -rf $file
echo ----删除上次遗留的目录文件:$file
fi
done
}
deleDir
# 解压zip文件
for file in $(ls $dir | grep .$newext)
do
echo --------------文件解压中...$file
name=$(ls $file | cut -d. -f1 -f2 -f3 -f4)
# 解压
unzip $file -d $name
#解压完成后需要删除zip文件
rm -rf $file
done
echo "--------------完成解压zip文件------------------------------------"
emptyPrint
#"-------------开始处理aar的架构------------------------------------"
#该数组中的目录可以删除
array=("arm64-v8a" "x86" "x86_64" "mips" "mips64")
#替换的原始名称
armeabiV7a="armeabi-v7a"
#替换的目标名称
targetName="armeabi"
#判断传入的参数是否在数组里面 返回1,在数组里面 0:不在
function isInArr(){
isIN=0
for element in ${array[@]}
#也可以写成for element in ${array[*]}
do
if [ $1 = $element ] ; then
isIN=1;
fi
done
echo $isIN
return $?;
}
#测试代码
# resut=$(isInArr x86)
# echo "结果:"${resut}开始处理吧
#递归遍历文件目录,做修改名称和删除目录
read_dir(){
for file in `ls -a $1`
do
# 是目录
if [ -d $1"/"$file ] ; then
if [[ $file != '.' && $file != '..' ]] ; then
echo 目录文件:$1"/"$file
# 开始判断是armeabi-v7a文件,需要改名为armeabi,其余的cpu架构需要删除
# 名字改为armeabi
if [ $file = $armeabiV7a ] ; then
# echo 需要改名字的文件
# echo 修改的原始路径:$1"/"$file
# echo 修改的目标路径:$1"/"${targetName}
mv $1"/"$file $1"/"${targetName}
# echo 已经把${file}修改为${targetName}
echo -----被修改名字的目录:$1"/"$file
# 删除其余架构
elif [ $(isInArr $file) = 1 ] ;then
# echo 是需要删除的目录:$1"/"$file
rm -rf $1"/"$file
echo -----被删除的目录:$1"/"$file
else
# echo 不需要改名字的文件
msg="是目录,不需要修改名字、或者删除"
fi
# 结束 判断是armeabi-v7a文件,需要改名为armeabi,其余的cpu架构需要删除
#递归调用 read_dir 方法
read_dir $1"/"$file
fi
# 是文件
else
# echo $1"/"$file
msg="是文件,不需要打印"
fi
done
}
#测试目录 test
# read_dir test
#测试目录 /Users/tal/Desktop/armv7ToArm
# read_dir /Users/tal/Desktop/armv7ToArm
#测试目录 当前目录
read_dir $dir
echo "--------------完成处理aar的架构------------------------------------"
emptyPrint
#"-------------开始根目录下的文件压缩成aar------------------------------------"
#压缩成zip
for file in ./*
do
if test -f $file
then
echo $file 是文件,不需要压缩处理
fi
if test -d $file
then
echo $file 是目录,需要压缩
# 第一是压缩保存文件;第二给需要压缩的文件夹
zip -r ${file}.aar ${file}
fi
done
echo "--------------完成根目录下的文件压缩成aar------------------------------------"
deleDir