Shell知识以及常用的脚本

2019-12-04  本文已影响0人  放羊娃华振
  1. 获取某个文件夹下的所有文件名(含文件夹),并显示

#!/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

上一篇下一篇

猜你喜欢

热点阅读